跳到主要内容

逻辑缺陷

逻辑缺陷利用的是业务流程对状态和身份的错误信任:代码本身没有注入点,错的是业务状态机的设计——步骤可跳过、身份可替换、参数可篡改,攻击者沿着应用预设的接口完成原本不允许的操作。 这类漏洞扫描器几乎无法发现,因为每一步请求都是合法的 HTTP 请求,只有理解业务逻辑才能识别。

成立前提

多步骤业务流程中存在客户端可控参数;服务端对资源归属的校验依赖客户端传入的 ID;流程步骤之间的状态验证存在遗漏;或速率/次数限制缺失。高频出现场景:密码找回、订单操作、积分/余额消费、账号绑定、手机号验证。

利用链路

IDOR(不安全直接对象引用)

接口通过 URL 或请求体中的 ID 参数定位资源,服务端未校验调用方是否有权操作该 ID:

GET /api/order?id=10086 → 自己的订单
GET /api/order?id=10085 → 他人订单(越权成功)

水平越权(同权限用户间)和垂直越权(低权限访问高权限功能)均属此类。典型操作:查看、修改、删除他人地址/订单/保单/账号信息。

密码找回绕过

常见三种缺陷:

验证码回显到响应体——服务端将短信验证码写入 HTTP 响应 JSON 中,客户端读取后展示或自动填充。拦截响应即可获得验证码,无需收到短信:

{"code": 200, "smsCode": "238535", "msg": "发送成功"}

步骤跳过——找回密码流程设计为三步(输入手机号→验证码核验→重置密码),直接构造第三步的 POST 请求可跳过验证码步骤:

POST /reset/step3 {"phone":"<target>","newPassword":"<new>","token":"<step1_token>"}

验证 A 绑定 B——绑定手机号流程中,系统对验证码的校验与最终绑定操作使用不同的手机号字段,发送验证码到 A 号码完成验证后,提交时替换为 B 号码,实际绑定了未经验证的 B 号码。

条件竞争

高并发场景下两个请求同时通过库存/金额/次数检查,数据库写入前均读到同一个状态值,导致超发。典型场景:秒杀库存超扣、优惠券重复使用、积分重复消费。

价格/积分/流量篡改

客户端传递金额字段——POST 参数中包含前端计算的金额字段,服务端直接使用而非重新计算:

POST /checkout {"itemId":1,"qty":1,"price":0.01}

凑单后取消保留优惠——多步骤订单流程中,先加入凑单商品使订单满足免运费门槛,提交订单后立即取消凑单商品,免运费状态未重新校验,最终以低于门槛的实际金额享受到了优惠。

最后一步不验证验证码——流量红包、优惠券等兑换流程设计为:发送验证码→填写信息→提交兑换,最后的提交步骤未验证验证码是否通过,直接构造最终请求即可完成兑换,验证码步骤形同虚设。

撞库与账号枚举

无速率限制的登录接口——登录接口既无验证码要求,也无单 IP/账号的频率限制,攻击者可用字典对目标账号批量尝试密码,完全依靠应用层无约束来遍历:

POST /login {"username":"target","password":"<dict_item>"}
→ 遍历常见弱密码直至成功

注册接口枚举有效用户名——注册时系统为已存在的用户名返回特定错误信息(如"该用户名已被注册"),攻击者据此批量探测出大量真实账号,再配合弱密码字典对已知账号集中撞库,成功率远高于盲目遍历。

历史样本

验证码回显:金融类平台注册/绑卡/找回密码接口将短信验证码明文写入响应体,攻击者可批量注册或重置任意账号密码。

手机卡补办流程缺陷:电信运营商网厅补卡流程,A 号码登录后申请换卡,但换卡操作与登录账号不绑定,可给任意手机号办理换卡,黑产据此控制他人手机号进行下游欺诈。

企业软件 ID 越权:论坛/协作平台的收货地址、聊天记录、文档等接口,areaid/docid 等整型 ID 可遍历,修改参数后可增删改查他人数据。

快递/机票/酒店订单遍历:订单编号为整型或规律性字符串,接口未校验订单归属,遍历后可批量获取大量用户真实姓名、证件号码、联系方式和行程信息。

IoT 设备 userid 越权:智能家居、工业物联网平台以整型 userid 标识设备归属,接口未做归属校验,遍历后可读取他人设备状态(温控器读数、摄像头画面、设备定位),部分平台还可直接下发控制指令操控他人设备。

旅行网站任意密码重置:找回密码多步骤流程仅第一步验证手机号归属,后续步骤 token 未绑定具体操作,直接提交第三步请求可重置任意账号密码。

流量红包最后一步不验证验证码:运营商流量转赠/红包兑换流程的验证码校验仅在前端展示,服务端最终提交接口未做验证码比对,构造直接提交请求即可跳过手机验证完成流量转移。

P2P 平台密码重置 token 不绑定手机号:金融/P2P 类平台密码找回完成后,服务端返回的重置 URL 仅与一次性 token 绑定,未与目标手机号或账号关联。攻击者枚举出已注册手机号后,直接构造含任意手机号的重置链接即可修改他人密码,无需通过短信验证步骤。

健康运动 APP 短验证码无次数限制:健身/医疗类 APP 的密码找回流程使用 4 位数字验证码,且服务端对验证码尝试次数不做限制,攻击者在获知目标邮箱或手机号后可通过穷举完成密码重置,4 位码的可能空间在无限速的接口面前形同明文。

招聘平台简历 ID 遍历泄露求职信息:招聘系统的简历查看接口以整型 person_id 定位候选人,未校验调用方与简历的归属关系,遍历 ID 可批量获取应聘者姓名、联系方式、工作经历等完整简历,且同一平台的子系统之间权限校验通常不一致,修复一处后其他接口仍可能存在同样问题。

密码重置链接永久有效且改后仍可重放:部分平台通过邮件发送的密码重置链接没有过期时间,用户完成密码修改后该链接依然有效,攻击者若在用户修改密码前截获链接(如通过历史日志、邮件转发或中间人),可在任意时间以旧链接再次覆盖用户设置的新密码,形成持久控制后门。

购物车负数数量反向套利:电商平台购物车接口未对数量字段做非负校验,将商品数量改为 -1 后,该商品的价格以负数进入汇总计算,与其他正价商品叠加后使订单总金额大幅缩水,服务端直接以该金额生成支付请求,实现近乎免单的结果。

会员/VIP 权益兑换未校验资格:积分兑换或会员专属活动的服务端接口在受理请求时不验证调用方是否真正持有会员资格或有效积分,用户在权益页面构造直接提交请求便可完成兑换;部分平台还存在"后退重试"路径:前端已标记兑换完成,但重复提交同一表单服务端仍会再次发放权益。

验证码前端本地比对:注册或找回密码流程中,服务端将验证码的明文值或其哈希(如 CRC32)写入响应体,客户端在本地完成比对后再向服务端提交。攻击者拦截响应即可提前获知验证码的预期值,无需穷举,直接填入通过验证;即便服务端只返回哈希,4–6 位数字的哈希碰撞空间极小,可在毫秒内反算明文。

响应包替换绕过验证步骤:多步骤找回密码流程中,服务端在验证通过时返回特定字段(如 status: true 或含 token 的 JSON),攻击者先使用自己账号走完合法验证流程并保存该响应,再对目标账号发起新流程;在目标账号提交验证码(输入任意值)后,将自己账号的合法响应体替换当前拦截到的响应并放行,前端据此认为验证已通过,直接跳入重置密码页面。

运动数据接口参数篡改刷积分:健身或步数类 APP 的积分计算依赖客户端上报的步数和日期字段,服务端未对上报数据做合理性校验(如单日上限或与历史数据的一致性比对),攻击者直接修改 POST 请求中的步数值或将日期回填为过去某天,即可反复为同一天补报高步数,无上限累积积分后换取奖品或提现。

服务资源计费参数未做非负校验:云服务计费接口中,内存、带宽、数量等配置参数由客户端提交,服务端未校验是否为正值。将参数设为负数后,计费逻辑对其执行乘法或累加,最终生成负数金额订单,导致账户余额反向增加;金融平台的充值提现接口存在同类问题,提交负数金额相当于从平台反向套现。

APP 多产品复用同一固定对称密钥:部分厂商旗下多款 APP 共用同一套对称加密密钥,密钥硬编码于客户端本地。攻击者逆向其中一款 APP 提取密钥后,可直接解密同系其他 APP 的所有接口通信,验证码明文、用户凭证等全部暴露,等同于加密形同虚设。

活动兑换 URL 无唯一消费标记:运营商或平台的活动充值链接在触发时无单次消费标记,服务端仅校验链接合法性而不记录是否已兑换。攻击者保存链接后可反复直接访问,每次均触发权益发放,会员时长或积分可无限累积。

付费内容下载接口未与订单关联:文档/报告类平台的下载接口以可预测 ID(如整型 contentId)定位内容,接口本身不验证当前用户是否已完成对应订单的支付;攻击者枚举内容 ID 即可在未购买的情况下直接下载全站付费内容,支付流程被完全绕开。

SSO 登录跳转未校验目标域:使用 CAS 或类似单点登录方案时,登录成功后的跳转地址(service/redirect_uri 参数)未限定为平台自有域名白名单。攻击者构造跳转到外部域名的登录链接,用户完成认证后携带合法 ticket 或 token 被重定向至攻击者控制的地址,凭证随即外泄。

客户端存储登录计数器绕过验证码:登录错误次数的计数器存储在客户端(Cookie 或请求字段),服务端不独立记录,攻击者重置本地计数器即可使验证码弹出机制永不触发,登录接口持续暴露在无限制爆破之下。

通用 CMS 密码重置逻辑缺陷波及全量实例:某款通用招聘或内容管理 CMS 的密码重置模块存在流程绕过缺陷,由于缺陷位于共用代码库中,所有基于该 CMS 部署的站点(包括官方 Demo 环境)均可被利用,单个漏洞的影响面随 CMS 装机量线性扩大。

密码重置未校验手机号与账号绑定关系:密码重置流程在服务端仅验证验证码本身的合法性,未检查"被重置账号"与"接收验证码的手机号"之间是否存在真实绑定,攻击者用自己的手机号完成验证后可将重置操作指向任意其他账号。

源码压缩包开放下载暴露管理凭据:站点源码以压缩包形式放置在可直接访问的路径下,包内含数据库结构 SQL 文件和明文管理员账号密码,攻击者无需任何漏洞即可下载后登录后台取得完整控制权。

安全产品平台自身存在任意密码重置:专注对外提供安全能力的云平台,其自身账号管理模块存在逻辑缺陷,可对平台内任意账号完成密码重置,不仅波及普通用户,绑定到该平台的各大企业账号同等受影响,安全产品成为攻击跳板。

数据更新接口以客户端传入 ID 定位目标用户:账号信息更新接口从 POST 请求体中读取目标用户 ID,服务端不对比当前会话持有人与目标 ID 是否一致,攻击者修改该字段即可将更新操作指向他人账号,覆盖任意用户的联系方式或认证信息。

撞库目标接口无频率限制配合泄露数据批量验证:账号验证或活动参与资格校验接口对单 IP 请求频率毫无约束,结合外部泄露数据库,攻击者可将全量数据投入验证,批量确认哪些账号密码组合在该平台仍然有效,验证结果可直接用于进一步的账号接管。

密码重置批量化波及运营商全量用户:运营商级平台密码重置流程存在可批量触发的逻辑缺陷,攻击者无需逐一操作,可在短时间内对大规模用户群发起重置,影响范围随平台用户规模成正比放大。

短链接自动登录无凭证校验:招聘或营销类平台通过短信下发含短参数的访问链接,访问该链接即触发自动登录,无需账号密码;参数仅为少量字符,可枚举,攻击者遍历后可批量接管他人账号并执行任意操作。

OAuth scope提权至关联平台:移动端 H5 页面调用第三方开放平台的 OAuth2.0 授权接口时,使用已授权应用的 client_id 可直接获取 access token;若该 token 的权限范围与移动客户端接口共用,攻击者可借助 H5 授权结果登录原生 APP 并执行超出 Web 端授权范围的操作,实现跨端权限提升。

登录响应体 userId 篡改接管任意账号:部分移动应用的登录接口在服务端响应中明文返回当前用户的 userId,客户端以此作为后续请求的身份凭据;攻击者拦截登录响应后将 userId 替换为目标账号的 ID,客户端直接使用该值发起后续请求,服务端不二次验证,形成账号接管。

Cookie 明文存储用户凭据:身份认证信息(用户 ID、用户名、密码明文或弱哈希)直接写入 Cookie,服务端读取 Cookie 字段后不再进行会话级绑定校验;修改 Cookie 中的用户标识字段即可切换至任意账号,且操作与原账号的合法 Cookie 在请求层面无法区分。

密保问题答案无实质校验:密码找回流程采用"回答安全问题"方式验证身份,但服务端仅检查字段是否存在而不校验答案内容,输入任意字符串均可通过验证进入密码重置步骤;配合可枚举的账号名,可对大量用户批量完成密码重置。

后台管理路径无认证保护:CMS 或系统管理后台的特定功能路径(如添加管理员、导入数据)在访问时未验证登录态,直接构造请求即可创建具有管理权限的账号,无需通过正常登录入口。

错误次数超限后反而自动通过认证:网络准入或 Web 认证系统在密码连续错误超过阈值后,不执行账号锁定而是反向放通认证请求,使原本未通过验证的用户获得访问权限;且被绕过账号的合法持有人并不掉线,攻击者与正常用户同时处于认证状态。

SSRF 借助平台功能攻击内网服务:平台提供短链接展开、图片抓取或 Webhook 回调等涉及服务端主动发起 HTTP 请求的功能,攻击者将请求目标替换为内网 IP 或服务地址,平台服务器以自身身份访问内网资源,可探测内网拓扑、读取内网应用数据或进一步利用内网脆弱服务(如存在注入的接口)。

系统默认账号密码遵循可预测规律:批量部署的系统(如政务、运营商、企业统一平台)以行政区划代码、机构编号或员工姓名拼音作为初始账号,初始密码为固定字符串或简单规律组合;攻击者无需爆破,按规律构造账号密码列表即可批量登录,影响该平台部署的所有实例。

投票唯一性依赖可篡改 HTTP 头:活动投票接口以 User-Agent 字段判断同一用户是否重复投票,服务端不在会话或后端记录投票状态,修改 UA 即可绕过限制无限刷票,任何客户端可控的 HTTP 头字段均无法作为唯一性凭据。

邮件发送接口无频率限制:账号激活或验证邮件发送接口对单账号、单 IP 的请求次数毫无约束,攻击者反复调用后可对目标邮箱实施邮件炸弹,同时也会持续消耗邮件服务器队列资源直至堆积失效。

会话令牌由公开字段推算生成:系统的登录态令牌(session ID 或鉴权 token)由身份证号、用户名等已知字段拼接后做一次哈希运算生成,攻击者获知任意用户的这两项信息后可本地直接计算出对应令牌,无需登录即可伪造合法会话。

订单取消操作未校验归属:取消订单接口通过请求体中的订单 ID 定位目标,服务端不验证该订单是否属于当前登录用户,攻击者将 ID 替换为他人订单即可强制作废他人未完成的交易。

充值到账金额与实付金额来自不同字段:充值流程中,实际触发支付的金额参数与业务系统最终入账的金额参数分属两个独立字段,服务端以业务层字段为准入账;攻击者在支付发起后修改业务层金额字段,支付渠道按原金额扣款,平台按修改后的金额入账,形成小付大入的套利。

手机号置空绕过账号归属验证:密码重置第一步要求提供姓名和手机号后才触发验证码下发;拦截发送验证码的请求并将姓名字段置空,服务端仅检查字段格式而未验证其是否与目标账号实际绑定,仍可成功下发验证码,后续步骤得以继续进行。

购物车状态写入 Cookie 服务端不重校验:平台将购物车中商品的数量信息存储在客户端 Cookie 中,结算时服务端直接读取 Cookie 中的数量字段计算金额,未从数据库重新获取;将 Cookie 中的数量改为负值后,该商品以负金额参与汇总,最终订单总价大幅缩水甚至归零。

平台邀请邮件目标地址未作限制:邀请好友或营销分享功能在服务端组装外发邮件时,仅对链接合法性做简单校验,未对邮件内容或目标域名做严格限制;攻击者修改邀请目标参数后,可借助平台正常邮件服务向任意收件人发送伪造内容,邮件头显示为平台官方发件人,天然具有信任背书,可用于精准钓鱼。

投标加购物车 ID 越权删除:删除投标或购物车项目的接口以请求体中的项目 ID 列表定位目标,服务端不校验 ID 归属关系;攻击者用自身账号登录后,将请求中的 ID 替换为他人项目 ID 提交,即可强制清空他人的投标或购购计划。

rtoken 响应注入跨账号密码重置:密码重置流程在服务端响应体中返回 rtoken,后续步骤以此 token 作为合法验证依据;攻击者先用自己手机号完成验证并记录响应中的 rtoken,再对目标账号发起重置请求,在服务端向目标手机号下发验证码的瞬间拦截响应包并将 rtoken 替换为自己账号的值,之后用自己手机收到的验证码完成整个重置流程,服务端因 rtoken 合法而接受请求,密码被成功重置。

服务商平台客户身份验证在前端执行:服务商为已购客户提供的自助注册入口,通过域名验证客户身份归属;验证逻辑在前端 JavaScript 中执行,攻击者绕过前端校验后可以任意客户的域名身份完成注册,进而取得对应站点的管理权限,波及该服务商所有未主动注册的存量客户。

管理后台认证失败后状态残留:某些后台管理接口在收到错误密码请求后,虽然返回认证失败的提示,但服务端内部已将该会话标记为已认证状态;攻击者刷新页面或再次访问后台,服务端以残留的认证状态放行,无需通过正常验证流程即可进入管理后台。

验证码未失效可跨请求重用:密码找回流程中同一手机号多次请求验证码时,若前一个验证码未被使用,服务端每次均返回相同的验证码值,且已通过验证的验证码不被标记为已消费;攻击者可将通过验证时的有效验证码在后续新流程中重复使用,绕过"每次独立验证"的设计意图。

用户名含特殊空白字符绕过唯一性校验:注册接口对用户名做唯一性检查前未规范化处理,攻击者在已有账号名前后填入 Tab 或全角空格后提交,系统将其视为全新用户名并完成注册;当平台各模块共享 Cookie 但分别对用户名做字符过滤时,过滤后的字符串与原账号名重合,攻击者以新账号身份登录即可获得原账号的完整权限。

积分数量由客户端 HTML 字段控制:积分兑换接口将用户当前积分余额写入前端表单隐藏字段,提交时服务端直接以该值作为兑换依据而不从数据库重新查询;修改表单中的积分字段为任意大值后正常提交,服务端按修改值完成扣减和兑换,实际积分无需满足条件。

理财申购金额传入负值反向增加账户余额:P2P 或理财平台的申购接口未对金额字段做正值约束,将申购金额改为负数后提交,平台将其作为合法申购处理并将"负金额申购"写入账户流水,最终账户可提现余额反向增加;配合已知的其他用户信息可对指定账号发起定向操作。

充值回调入账金额独立于支付渠道金额:充值流程中支付渠道和业务层分别维护一个金额字段,业务层在接收支付渠道回调时读取自身记录的金额而非渠道实际扣款金额;攻击者在支付请求发出后、回调处理前拦截并修改业务层入账金额字段,支付渠道正常扣取原金额,平台按修改后的大额入账,形成小额支付大额到账的套利。

并行会话污染跨账号接管密码:密码重置服务端以会话(Session)或服务端变量维护"当前正在重置的手机号"状态,而非与 token 强绑定;攻击者先为自己账号走完验证码验证步骤,使服务端进入"已验证"状态,随即在另一个标签页触发目标账号的验证码下发(触发该请求会将服务端变量切换到目标手机号),再立刻回到已验证会话提交新密码,服务端以残留的已验证状态接受对目标账号的密码覆盖。

会话 token 由身份证号与用户名拼接哈希生成:登录成功后的跳转 URL 中携带会话标识,该标识由用户身份证号与登录名拼接后做一次哈希运算得到;攻击者通过业务接口或公开渠道获取任意用户的证件号和登录名后,在本地直接计算出对应会话标识,构造目标用户的访问 URL 即可无需凭证登录其账号。

移动端升级服务组件暴露允许外部控制更新来源:APP 内置的升级服务以 Android exported 组件形式对外开放,外部可发送 Intent 指定任意更新地址和版本号;攻击者构造指向恶意安装包的 Intent 并发送给目标设备,APP 自动以官方升级流程下载并提示用户安装,用户无法区分来源合法性。

购物车数量持久化于 Cookie 服务端不重取:电商结算流程将购物车各商品数量存储在客户端 Cookie 中,服务端在计算订单总价时直接读取 Cookie 值而不从数据库验证;将 Cookie 中某商品数量改为负数后,该商品以负价参与汇总,拉低甚至归零订单总额,服务端据此生成支付请求。

移动端独立接口遗漏归属校验批量查询用户数据:平台将 Web 和移动端接口分开实现,Web 端接口已做归属校验,但移动端(APP)对应接口单独开发时遗漏了同等校验;攻击者直接调用移动端接口并遍历 userid 参数,可批量获取任意用户的订单列表、收货地址、购物车等全量数据,修复 Web 端漏洞后移动端仍持续暴露。

密码客户端加密算法前置导致固定密文撞库:登录接口对密码在客户端做固定算法加密后传输,服务端直接比对密文;攻击者逆向或抓包获知加密方式后,将常见弱密码经同一算法加密得到密文列表,再批量投入登录接口,绕过了明文传输的检测,实质上等同于无加密的撞库。

子站点独立实现登录缺少主站已有的频率限制:平台主站登录入口已加入图片验证码和频率限制,但下属子站或合作方入口页使用独立实现的登录接口,未同步主站的防护机制;攻击者找到子站登录入口后可无限制地进行爆破或撞库,即便主站已完成加固,子站仍是完整暴露的旁路。

OAuth 授权页 postMessage 未限制目标 origin 泄露 token:开放平台授权完成后通过 H5 的 postMessage 将 access token 或授权码回传给父页面,但 postMessage 调用未指定目标 origin(使用通配符),且 URL 中的 referer 参数未做白名单校验;攻击者构造一个外部页面以 window.open 打开授权链接,用户登录后平台将 token 发往攻击者页面,凭此 token 可在任意已授权的第三方应用中以受害者身份登录或执行操作。

账号注册响应差异枚举有效手机号再集中爆破:注册或发送验证码接口对已注册手机号和未注册手机号返回不同的错误提示,攻击者将外部泄露的手机号列表逐一提交,通过响应差异筛选出在该平台已注册的有效账号子集;再对筛选后的子集集中投入弱密码字典,命中率远高于盲目遍历,两步操作组合形成高效的账号接管链路。

手机号格式变形绕过唯一限额校验:限量活动或红包领取接口以手机号字段作为唯一性判断依据,服务端未对手机号做格式规范化处理;攻击者在原号码前追加国家码前缀(如"86"),系统将其视为全新标识,绕过"每号码最多领取 N 次"的校验,同一物理手机号可以不同字符串形式重复领取,结合虚拟小号转发可进一步扩大倍数。

验证码发送目标字段可被拦截替换:找回密码或账号验证流程在"发送验证码"步骤时,请求体中包含明文的接收目标字段(邮箱或手机号);服务端以请求体字段而非当前会话绑定的联系方式作为发送目标,攻击者拦截该请求并将接收字段替换为自己的邮箱或手机号,即可收到原本应发给目标账号的验证码,随后完成整个重置流程。

内网 OA 账号遵循员工姓名拼音规律可批量爆破:企业内部 OA、VPN 等系统的账号格式固定为员工姓名拼音,初始密码为姓名拼音加固定数字后缀;攻击者通过公开通讯录、领英或官网团队页收集姓名后按规律生成账号密码对,在无频率限制的登录接口上批量尝试,可在短时间内批量接管大量员工账号并通过 VPN 进入内网。

平台数据导出接口以商户 ID 定位无归属校验:SaaS 平台为商户提供的数据导出(如会员列表、订单报表)接口,仅以请求参数中的商户 ID 定位数据,未验证当前认证用户是否属于该商户;攻击者枚举商户 ID 后可批量下载平台内所有商户的客户数据,每个商户对应的微信用户信息、消费记录等随之全量泄露。

支付回调或跳转缺少幂等令牌可重复触发到账:部分充值或支付完成后的处理逻辑(包括页面跳转或回调接口)未设置单次消费令牌,服务端对同一支付结果的重复处理不做去重;攻击者在支付完成后直接刷新成功页面或重放回调请求,每次均触发一次入账操作,账户余额或订单权益随重放次数线性增加。

二维码登录授权请求无 token 保护可被劫持:扫码登录场景中,手机端完成扫描后向服务端提交授权的请求参数(如二维码标识值)无额外的一次性 token 保护,且该值可从二维码 URL 中提取;攻击者将已登录用户的待授权请求中的二维码标识替换为攻击者自己的二维码值,服务端以受害者身份完成授权,攻击者在另一端用自己的二维码获得受害者的完整登录凭证。

OAuth code 被第三方页面窃取后复用登录关联账号:开放平台授权完成后通过 postMessage 将 OAuth code 回传给发起页,且目标 origin 未做白名单限制;攻击者构造外部页面以 window.open 打开授权链接,用户登录后平台将 code 发往攻击者页面;攻击者用自己的微博账号完成同一应用的授权并在最终提交时将 code 替换为窃取到的他人 code,以他人身份完成第三方平台登录。

充值金额字段由客户端 POST 传入服务端直接入账:充值流程中,实际入账金额从 POST 请求体中的独立字段读取,而非从支付渠道返回数据或服务端预存记录获取;攻击者在提交充值请求时将该字段改为任意大值,支付渠道按原始金额正常扣款,业务系统按修改后的大额字段入账,形成以小博大的套利。

短信 API 接口无内容过滤可借官方渠道群发任意内容:平台的邀请、通知等短信发送接口未对消息内容做关键词过滤或目标域名白名单限制,攻击者修改请求体中的短信正文和收件人字段,即可借助平台官方短信通道向任意手机号发送伪造内容;由于号码显示为官方发件方,收信人难以辨别真伪,天然具备钓鱼信任背书。

登录 token 拼接规律致第三方服务可伪造会话:平台向关联第三方服务传递的跳转 URL 中携带由用户标识字段(如账号、证件号)拼接后经单次哈希生成的 token,第三方以此 token 作为唯一身份凭据;攻击者通过业务接口获取目标用户的账号和证件号后,在本地以相同算法计算 token,构造跳转 URL 即可以目标用户身份无需任何登录步骤访问第三方服务。

APP 升级服务 exported 组件可被外部 Intent 重定向至恶意包:Android APP 内置升级服务以 exported=true 方式声明,外部可通过 Intent 指定任意更新地址和版本号;攻击者发送构造 Intent 后,APP 以官方升级流程静默下载并提示安装恶意包,即便将升级 Service 改为非导出,若存在可访问的中间 Activity 组件,仍可借道触发同等效果,用户界面无法区分来源合法性。

密码找回邮件验证码在请求体中可被替换为攻击者邮箱:找回密码流程的"获取验证码"步骤,服务端以请求体中的邮箱字段决定将验证码发送到哪个地址,而非读取账号本身绑定的邮箱;攻击者只需知道目标账号名,拦截验证码发送请求后将 email 字段替换为自己的邮箱,随即收到原本属于目标账号的重置验证码,后续步骤即可顺利完成密码覆盖。

购买操作失败赠品先行发放不原子回滚:部分平台的购买流程在扣款逻辑执行前已先触发赠品或积分发放,若扣款步骤因参数异常失败(如将购买数量改为负值导致订单金额错误),发放环节并不随主交易回滚;攻击者反复构造"发放成功、扣款失败"的路径,即可不断累积赠品权益而无需实际付款。

接口响应数量差值侧信道泄露私密内容存在性:平台将"内容总数"与"当前用户可见数"分别暴露在接口响应的不同字段中,未对"仅自己可见"的内容做整体数量隐藏;任何人通过计算两个字段之差,即可精确推算出目标账号私密内容的数量,在无法直接获取内容的前提下仍能侧信道刺探用户行为特征。

平台数据导出接口无需认证可直接按 ID 批量下载:SaaS 平台为租户提供的数据导出接口,URL 中仅含可枚举的租户 ID 参数,不验证调用方登录态也不校验归属;任何人无需账号即可直接访问该 URL 并下载指定租户的全量客户数据,ID 遍历后可批量获取平台内所有租户的微信用户信息、消费记录等。

服务商 CMS 域名验证前端执行可冒充任意客户越权修改其 DNS:服务商为存量客户提供自助注册入口,客户身份通过域名合法性在前端 JavaScript 中完成校验;攻击者绕过前端判断后可以任意未注册客户的域名身份完成注册,取得该客户站点管理权限后越权修改其 DNS 解析配置,进而波及平台内全部存量客户的域名指向,攻击面随服务商客户数线性扩大。

支付成功跳转页无幂等标记刷新即重复入账:支付完成后平台跳转至结果页,该页面加载时自动触发一次余额入账操作,但服务端未为该次支付设置单次消费标记;攻击者在支付完成后持续刷新成功页,每次刷新均重新触发入账,余额或订单权益随刷新次数线性累加,无需重放任何支付凭证。

验证码次数耗尽后重请求仍得原值再次穷举:密码找回验证码有每日发送上限,但服务端在次数耗尽时仍将同一验证码值延续有效;次日计数重置后用户再次请求,服务端返回与上一轮完全相同的验证码值;攻击者跨日继续穷举,已由上一轮推断出的候选验证码在新一轮中仍然有效,日限额机制反而为攻击者提供了稳定的重用窗口。

同一 rtoken 被多类敏感操作共用导致单次凭证泄露覆盖全流程:服务端向响应体写入 rtoken 作为操作凭证,但该 token 被复用于"重置登录密码"和"重置交易密码"等不同业务类型;攻击者用自己账号完成一次登录密码重置流程获取 rtoken,随即将其用于目标账号的交易密码重置请求,单次响应体拦截即可横跨多条关键业务链路,防御范围远超单一流程所能覆盖的边界。

企业 VPN 找回凭证所需信息全部来自半公开渠道:内网 VPN 的凭证找回要求提供员工手机号和直属上级邮箱;手机号可从员工历史注册信息或账号绑定记录中提取,上级邮箱可通过公司绩效系统、领英档案或官网通讯录收集;全部验证要素均无需内部权限即可获取,攻击者完成身份验证后拿到临时访问 token,直接拨通 VPN 进入内网。

OA 密码找回邮件字段可替换配合内网横向接管高权限账号:协同 OA 系统的密码找回流程以请求体中的邮箱字段为收件方而非读取账号绑定邮箱;攻击者替换字段后接收重置链接,登录初始账号进入内网后收集高权限人员信息,再次对高权限账号触发同一漏洞完成密码重置,实现从普通员工账号到管理层账号的内网横向渗透,最终可访问 VCenter 等核心基础设施。

活动限领以 phoneNo 原始字符串比对未格式化可加国家码绕过:活动红包领取接口以 phoneNo 字段的原始字符串作为去重键,服务端不对手机号做格式规范化处理;在号码前添加国家码前缀后,系统将其识别为全新标识,同一物理号码可绕过每号限领次数反复领取;结合虚拟小号转发,单个手机号实际可领取次数成倍放大。

购物车数量持久化于 Cookie 结算时服务端不重取可改负数套利:电商平台将购物车各商品数量存入客户端 Cookie,结算时服务端直接读取 Cookie 值计算订单总额而不从数据库重新获取;将 Cookie 中某商品数量改为负值后,该商品以负金额参与汇总,拉低乃至归零订单总额,服务端据此生成支付请求,实现近乎免单结算。

姓名词典配合拼音加固定数字后缀规律批量登录后直接拨 VPN 入内网:企业 OA 或 VPN 账号格式为员工姓名全拼,初始密码为"姓名全拼+固定数字后缀";攻击者从公开通讯录或领英收集姓名列表后按规律生成账号密码对,在无频率限制的登录入口上批量尝试,数小时内可批量接管大量员工账号;成功后直接连接企业 VPN,以合法员工身份访问邮件、财务或人事等内部系统。

顺序编号账号全量统一初始密码批量接管:部分平台(如校园网、教学系统)为批量新用户分配连续编号格式账号,并设置相同的固定初始密码;攻击者在获知任意一个账号的初始密码后,按编号规律遍历全量账号,无需爆破即可以迭代方式批量登录,影响面随用户规模线性放大,绑定在账号上的身份证、联系方式等也随之泄露。

优惠券及权益凭证 ID 顺序可遍历直接使用他人券码:平台的优惠券、兑换码或活动凭证以可预测的整型或短字符串 ID 标识,接口在使用时不校验凭证与当前用户是否存在绑定关系;攻击者将自己的凭证 ID 替换为他人 ID 直接提交,即可消费他人未使用的优惠券,领券环节的唯一性校验被彻底旁路。

手机号字段分号注入绑过发送次数限制:活动或红包接口以 phoneNo 字段原始值作为短信发送目标,同时以该值为去重键限制每号领取次数;攻击者向号码尾部追加分号并跟随任意字符(如 18600001234;test),服务端记录为新标识从而绕过次数校验,但短信平台解析时截断分号前的有效号码,实际发送仍成功到达;此注入手法可将同一物理号码的领取次数无限扩大,结合虚拟小号效果更显著。

上传文件路径含可推算时间戳遍历他人敏感材料:部分平台的文件上传服务以"年月日时分秒"等时间字段拼接生成存储路径,路径格式可从单次上传响应中逆向推算;攻击者按时间范围枚举路径,即可批量获取其他用户在同一时段上传的漏洞截图、证件照、合同等敏感文件,无需任何账号权限。

第三方登录响应 uid 可替换完成账号接管:APP 在处理微博、微信等第三方登录时,向第三方客户端发出身份请求后直接读取响应体中的 uid 字段作为登录凭据,未对响应做额外签名校验;攻击者拦截响应并将 uid 替换为目标账号的值,APP 以该 uid 向业务服务端完成登录请求,服务端基于 uid 直接建立会话,受害者账号被接管;此类缺陷在多款 APP 复用同一第三方登录逻辑时会同步波及。

平台自身开放跳转串联二维码劫持绕过异常登录检测:扫码登录场景中,二维码授权请求参数未加一次性 token 保护;攻击者利用平台官方域下存在的开放跳转漏洞,将授权请求伪装为平台域内链接,诱导已登录用户点击后自动完成对攻击者二维码的授权;进一步,攻击者将获取到的凭证放入平台内嵌视图专用的登录接口提交,而非走主站登录入口,从而绕过"异地登录"短信二次验证,实现无感知接管。

IoT 设备固件 API 无认证接口泄露 WiFi 及宽带凭据:部分路由器固件将网络配置、WiFi 密码、宽带账号等信息通过 SOAP/HTTP 接口对外暴露,接口本身不要求任何认证;攻击者向设备 IP 发送特定格式的 POST 请求即可直接获取明文凭据,宽带账号密码与 WiFi 密钥同时泄露,内网设备随之完全暴露。

大数据分析平台无认证直接执行查询泄露全量业务数据:企业将 Zeppelin、Jupyter 等数据分析组件部署在可外网访问的地址上,未配置任何认证保护;攻击者直接访问 Web 界面后可执行任意 SQL 或 Shell 命令,读取 HDFS、数据库中的全量用户数据、财务报表及员工信息,无需任何内网入口或账号凭据。

公共自助终端机沙盒逃逸进入底层操作系统:部署在公共场所(博物馆、快递柜、银行)的 Windows/Android kiosk 终端,通过右键菜单、组合快捷键(Ctrl+Alt+Del)或自助服务界面内嵌的 XSS 绕过前台限制,进而调用任务管理器、文件浏览器或调起 cmd;终端通常以高权限账号运行且联网,逃逸后可访问内网服务、下载恶意软件或持久驻留。

浏览器域内开放跳转串联插件机制触发恶意 APK 自动安装:移动浏览器的插件下载渠道对来自官方域下载的 APK 具有免提示直接安装的特权;攻击者利用官方域存在的开放跳转漏洞,将 URL 构造为指向恶意 APK 的跳转链路,用户点击后浏览器以"官方插件"流程下载并自动弹出安装提示,无法辨别来源真伪;即便封堵一处跳转点,若同域下存在其他跳转参数,效果等同。

账号注销及内容删除接口 ID 可遍历强制清空他人数据:删除类接口(删除收藏、清空购物车、撤回投标)以请求体中的资源 ID 列表定位目标,服务端不校验 ID 归属关系;攻击者将自身删除操作中的 ID 替换为他人资源 ID,即可批量强制清空任意用户的已有数据,对依赖数据完整性运营的平台(如招标、预约、书单)破坏性尤为突出。

退款写入账户余额且金额来源于订单记录而非实付金额:部分电商平台在处理退款时,将退款金额写入平台账户余额而非原路退回支付渠道,且退款金额来源于服务端存储的订单金额字段而非支付渠道的实际扣款记录;攻击者先以极低金额(如0.01元)完成支付,支付成功后立即申请退款,服务端以订单金额(如全价)退入账户余额,形成以极低实付撬动等额余额的套利路径。

学员/员工账号连续编号配统一初始密码批量接管:教育或企业平台为批量新用户分配格式固定的连续编号账号,并设置相同的固定初始密码(如统一的6位数字);攻击者通过任意渠道获知账号编号规律后,无需爆破即可按顺序遍历全量账号,全部以初始密码直接登录,绑定在账号上的真实姓名、证件号、银行卡等敏感信息随之批量泄露。

kiosk 终端沙盒逃逸进入宿主系统:部署在公共场所(博物馆、银行、快递柜)的 Windows 触摸终端以"全屏应用+限制操作"方式构建沙盒,但右键菜单未屏蔽、组合快捷键(Ctrl+Alt+Del 或 Win+R)未拦截,或自助服务页面内嵌 Flash/HTML 交互触发文件浏览弹窗;攻击者借助上述路径调起任务管理器或命令行,终端通常以管理员权限运行且处于内网,逃逸后可访问内网资源、下载并执行恶意程序。

SaaS 平台会员数据导出接口无认证且以租户 ID 遍历:SaaS 平台为商户提供的"会员列表导出"接口仅以 URL 中的租户 ID 参数定位目标,不验证调用方身份也不校验归属关系;任何人无需账号直接访问该 URL 即可下载指定租户的全量会员数据,遍历租户 ID 后可批量获取平台内所有商户的微信用户信息、消费记录等,攻击面随平台商户数量线性扩大。

密码找回验证码已使用后重请求仍得同一固化值可跨时间段重用:部分平台的密码找回流程中,同一手机号若上次请求的验证码未被消费,再次请求时服务端仍返回完全相同的值;攻击者对短验证码发起穷举,若当日次数耗尽但验证码尚未失效,次日重新请求仍得到相同验证码,日次数限额反而为攻击者提供了稳定的重试窗口,穷举所需的总尝试次数可在多日内分散完成。

APP 密码客户端加密方式固定逆向后等效明文撞库:校园卡或移动端登录接口对密码在客户端以固定算法加密后传输,服务端直接比对密文;攻击者逆向 APP 提取加密算法,将常见弱密码经同一算法加密得到密文字典,再批量投入登录接口;对接口而言请求合法,对密码而言安全性与明文等价,加密仅对抗流量抓包而无法对抗字典攻击。

数据分析组件无认证外网暴露可直接执行 SQL 和 Shell:企业将 Zeppelin、Jupyter 等数据分析平台部署在可从外网访问的地址上,未配置任何认证保护;攻击者直接访问 Web 界面后可提交任意 SQL 查询或 Shell 命令,读取 HDFS 或数据库中的全量用户数据、财务报表、员工信息,无需任何账号或内网入口,单次访问即可获取平台核心数据资产。

私密内容数量差值侧信道泄露用户隐私行为特征:社交平台在接口响应中将"内容总数"与"当前访问者可见数"分别暴露在不同字段,未对"仅自己可见"内容的数量统计做隐藏处理;任意用户通过计算两个字段之差即可精确推算出目标账号私密内容的数量,在无法直接获取内容的前提下仍能侧信道推断其行为特征与活跃程度。

游戏平台积分/虚拟币购买接口未对数量做非负校验:游戏或积分商城购买接口接受客户端传入的商品数量字段,服务端未校验其为正值;将数量改为负数后提交,平台以负数量参与计费计算,生成负金额订单,同时赠品或附带权益(如会员时长)仍按正常逻辑先行发放,最终账户余额反向增加而商品权益已完成兑换。

开放跳转与第三方登录授权串联绕过异常登录检测:扫码登录或第三方账号绑定流程存在授权请求无 token 保护的缺陷;攻击者利用平台官方域名下存在的开放跳转漏洞,将授权请求伪装成平台内部链接诱导受害者点击,用户完成授权后攻击者获得凭证;进一步,攻击者将凭证通过平台内嵌视图专用的登录入口(而非主站入口)提交,从而绕过异地登录的短信二次验证,实现无感知账号接管。

服务商 CMS 客户身份依赖前端域名验证冒充注册后越权修改 DNS:服务商为存量客户提供的自助注册入口,以客户域名合法性作为身份验证手段,但校验逻辑在前端 JavaScript 中完成;攻击者绕过前端校验后可以任意未注册客户的域名身份完成注册,进入管理后台后可越权修改该客户的 DNS 解析配置,进而将其域名指向任意地址,攻击面随服务商客户数线性扩大。

主站登录已加防护但子站/合作方入口独立实现遗漏同等防护:平台主站登录入口已部署图片验证码和频率限制,但面向合作伙伴、子品牌或移动端的独立登录接口由不同团队实现,未同步继承主站的防护机制;攻击者绕开主站直接访问子站入口,在无任何限制的条件下对目标账号集中投入弱密码字典,主站加固的全部努力被旁路入口架空。

退款接口接受客户端传入退款金额字段未从支付记录核验:退款类接口从请求体中读取退款金额参数,而非从支付渠道回执或服务端存储的实付记录中取值;攻击者将退款金额字段修改为远大于实付额的任意值后提交,服务端以客户端传入值写入账户余额,形成小额支付大额套现的路径;平台账户余额作为中间层使得资金核对在出款前难以发现异常。

CMS 服务商平台数据库明文存储管理凭据且可任意文件下载:部分通用 CMS 将管理员密码以明文或弱哈希形式写入数据库配置文件,同时站内存在任意文件下载接口;攻击者先通过已知路径规律获取配置文件下载,提取数据库凭据后直接登录后台,进而以管理员身份操控全量客户数据;由于缺陷位于 CMS 共用代码库,所有基于该 CMS 部署的站点同步受影响,单个漏洞随装机量线性放大。

多平台账号互通放大单点漏洞影响面:平台间绑定关系使得单一平台的登录凭证可以直接免认证跳转至关联平台。攻击者劫持到某平台的登录凭证后,无需对关联平台单独发起攻击,即可以同一身份访问所有互通服务;账号打通提高了用户便利性的同时也消除了各平台之间原本存在的隔离屏障。

开放平台官方域内跳转漏洞被串联为攻击链第一跳:平台在官方域名下存在的开放跳转缺陷(redirect/next参数无白名单),通常被单独评估为低风险;但当跳转目标是攻击者控制的页面,并配合二维码劫持或第三方授权等后续步骤时,平台自身域名背书消除了用户对链接可信度的质疑,使整条攻击链的触发门槛大幅降低;开放跳转作为"信任传导器"单独无法完成攻击,却是高威胁组合链路不可或缺的前置条件。

通用软件管理员账号设计为不可删除只能改密码:部分通用系统(如视频会议、协同办公软件)将 admin 账号设计为无法删除,仅允许修改密码;该账号在弱口令下长期暴露,且部分站点部署后从未修改初始密码;无登录次数限制与不可删除的账号设计组合,使通用软件所有部署实例的 admin 入口持续可爆破,影响面随装机量线性扩大。

系统提示密码前缀规律等同公开密码构造模板:部分系统在用户密码强度不足时提示"请在密码前添加指定前缀",等于将密码构造规律明文告知所有人;攻击者获知前缀后,将常见弱密码拼接该前缀组成字典,在无频率限制的接口上直接投入,爆破所需空间从全量字典缩小到有限集合,成功率大幅提升。

校园卡/教工账号绑定银行卡,账号编号可枚举,支付密码使用同一弱口令:高校或企业的一卡通账号以连续编号或工号格式分配,与绑定的银行卡强关联;账号无登录次数限制,且大量用户沿用统一初始支付密码(如生日后四位或固定数字);攻击者按编号规律枚举账号列表后,以单个常见支付密码批量尝试,成功后即可以他人身份发起转账或充值操作,影响面随平台在校师生总量线性扩大。

安全/网络管理设备自身存在无认证命令执行路径:上网行为管理、流量审计等网络安全设备将特定管理功能路径设计为无需登录即可访问,攻击者直接访问该路径即可在设备上执行任意命令或上传文件;安全设备通常部署于内网关键节点且具有较高网络访问权限,被攻陷后可作为内网横向移动的跳板,危害远超普通业务服务器。

场馆/服务预订接口总价与单价均在POST体中且互不核对:部分预订系统将订单总价和商品单价作为两个独立字段分别写入客户端提交的 POST 请求体,服务端仅读取其中一个字段而不对两者进行交叉核对;攻击者同时修改两处金额参数后提交,系统以修改后的金额生成订单并发起支付,近零价格可成功预订服务。

手机号绑定流程允许穷举他人号码的验证码,无需实际收到短信:部分账号绑定或手机号验证流程未校验短信的接收方是否为当前操作用户,仅验证验证码本身是否正确;攻击者可在接收字段填入任意目标号码发送请求,即便该号码对应的 SIM 已停机或不在攻击者掌控中,服务端照常将验证码发往该号码并等待验证;攻击者对短位数验证码发起穷举,穷举成功后即可将任意手机号绑定到自己账号,后续可以该号码触发密码找回,完成目标账号接管。

论坛富文本过滤不严,用户可注入全屏覆盖式伪造页面:部分论坛或社区平台对帖子内容中的 HTML/CSS 过滤不完整,允许用户插入带有 position:fixedposition:absolute 并设置极高 z-index 值的样式;攻击者发布含此类样式的帖子后,访客打开该帖即看到覆盖原始页面的伪造内容(如仿冒登录框、虚假公告),可批量对访客实施钓鱼,且使用同一论坛程序的多个站点同步受影响。

密码重置链接参数分离存储,各参数可借助其他漏洞逐一提取后拼合:部分平台的密码重置链接由多个独立参数拼接而成(如操作方法名、用户编号、验证 token),各参数独立存储于数据库不同字段中,接口未对参数组合做整体校验;攻击者通过 SQL 注入或其他途径分别读取各字段后,在本地拼合出完整重置链接,可对任意已知账号执行密码覆盖,利用链路将低风险信息读取漏洞升级为账号接管。

iOS越狱工具修改setreuid系统调用,任意App可直接获得Root权限:部分越狱工具为实现破解功能修改了 setreuid 系统API,使其对所有进程均返回成功;任意第三方App调用 setreuid(0,0) 后即获得 Root 执行权限,可读写任意系统文件、注册系统服务并植入持久化后门;该缺陷由越狱工具自身引入,与被安装App的权限声明和代码质量完全无关,越狱行为本身成为暴露整个设备的逻辑缺陷。

绕过方式

绕过手法说明
前端限制绕过删除/修改 HTML 属性、直接抓包绕过 JS 校验
步骤 token 复用使用自己账号的 step1 token 操作他人账号
请求重放验证码已使用但接口未标记为已消费,可重复提交
并发请求同时发出多个请求触发条件竞争
会话 Token 永久有效激活链接或重置 Token 无过期时间,历史链接长期可用;修改关联信息后仍可用旧 Token 执行原操作,导致原状态可被重放恢复

防御控制点

  • 服务端全程校验资源归属:每次操作均验证资源属于当前认证用户,不信任客户端传入的 owner ID
  • 步骤 token 绑定具体操作:找回密码的 token 与目标手机号和操作类型绑定,不可跨账号使用
  • 验证码服务端校验不回显:验证码仅在服务端比对,不写入响应体,且单次有效
  • 速率限制与次数上限:关键接口限制单 IP/账号的调用频率和总次数
  • 业务流程测试用例:安全测试阶段专项覆盖越权、步骤跳过、参数篡改场景