拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

逻辑漏洞挖掘思路

逻辑漏洞挖掘思路

逻辑漏洞挖掘思路

前言

在 Web 安全测试和 SRC 漏洞挖掘里,SQL 注入、XSS 这类特征型漏洞越来越少。WAF、代码检测工具、安全编码规范,能拦截绝大多数输入类漏洞。但逻辑漏洞没有统一 Payload,扫描器很难识别,也是近几年中高危漏洞的主要来源。

很多新人习惯拿着 Burp、Xray 跑扫描器,扫完就判定站点无漏洞。等到别人挖出越权、任意重置密码、金额篡改、重复领取优惠券这类高危逻辑洞,自己却一头雾水。
逻辑漏洞本质不是代码过滤不严,而是业务流程设计缺陷、权限信任错误、业务校验逻辑缺失。想要挖到逻辑漏洞,核心不是构造特殊字符,而是站在业务用户的角度,推演业务流程,寻找业务规则里的 “例外场景”。

免责声明:本文内容仅用于授权环境安全测试、网络安全学习。严禁在未获得书面授权的业务系统进行逻辑漏洞测试,任何未授权的探测、篡改操作均违反《网络安全法》,需要承担对应的法律责任。

0x01 什么是逻辑漏洞

简单一句话:程序代码语法没问题,但业务规则校验存在缺陷,攻击者可以按照业务正常流程,绕过限制,实现业务规则外的操作。

和注入、XSS 对比:

  • 输入型漏洞:攻击依靠特殊字符、恶意 Payload,破坏代码执行逻辑;
  • 逻辑漏洞:提交的数据格式合法,没有恶意字符,但是业务校验不完整,突破业务约束。

常见典型逻辑漏洞清单:

  • 权限类:水平越权(BOLA)、垂直越权、未授权访问
  • 账户类:任意用户密码重置、验证码绕过、验证码复用、短信轰炸
  • 交易类:订单金额篡改、负数金额、重复支付、订单篡改
  • 营销类:优惠券无限领取、积分无限刷、抽奖概率篡改、重复提交活动表单
  • 业务流程类:支付状态篡改、订单取消逻辑缺陷、订单重复核销

重点:逻辑漏洞几乎无法依靠自动化扫描器发现,只能人工梳理业务流程挖掘。

0x02 逻辑漏洞通用挖掘方法论

2.1 第一步:梳理业务流程,画出业务链路

拿到目标站点,不要立刻抓包测试。优先注册普通账号,从头到尾完整走一遍业务,把业务步骤记录下来。
举几个例子:

  1. 密码找回:输入手机号 → 获取验证码 → 提交验证码 → 设置新密码
  2. 下单支付:选择商品 → 创建订单 → 提交订单 → 发起支付 → 支付回调 → 订单标记已支付
  3. 优惠券领取:登录账号 → 领取优惠券 → 优惠券入库,标记已领取

梳理的时候重点标记:

  • 可控参数:前端传给后端的所有变量(用户 ID、订单 ID、手机号、金额、状态字段)
  • 信任边界:哪些数据由前端传入,哪些由后端存储
  • 身份校验节点:每一步是否校验用户身份
  • 状态流转:业务状态之间的切换规则(待支付、已支付、已取消、已核销)

核心原则:永远不要信任前端传递的任何数据。前端传过来的订单金额、用户 ID、订单状态,都不能作为后端可信依据。

2.2 第二步:角色划分,多账号对照测试

逻辑漏洞测试,至少准备两个普通账号 A、B,最好再加管理员账号。

  • A 账号:正常操作,抓包,记录请求参数;
  • B 账号:尝试复用 A 的参数,看是否能访问 A 的数据(水平越权);
  • 普通账号尝试访问管理员接口 / 管理员数据(垂直越权)。

这是发现越权漏洞最简单有效的手段,也是 SRC 最高频的高危漏洞。

2.3 第三步:思考 “业务规则限制”,尝试绕过限制

每一个业务功能,都有业务限制,我们的目标就是思考:怎么在不破坏数据包格式的前提下,绕过这个限制。

通用思考问题清单(测试时逐个对照):

  1. 是否限制只能操作自己的数据?修改 ID 能不能访问别人的数据?
  2. 是否有次数限制(领券只能领 1 次,验证码 1 分钟 1 条),能不能绕过次数限制?
  3. 状态机是否严格校验?能不能直接修改状态参数,跳过前置步骤?
  4. 价格、数量这类敏感数据,前端传参,后端有没有二次校验?
  5. 业务依赖的凭证(验证码、订单号)是否一次性,是否可以重复使用?
  6. 支付、核销这类关键动作,有没有防重放机制?同一个请求能不能重复提交?
  7. 业务逻辑有没有顺序依赖?能不能跳过中间步骤,直接访问最后一步接口?

2.4 第四步:参数篡改与状态篡改

业务接口大量使用状态字段,例如:is_pay=0、status=unpaid、is_receive=0。
很多开发图省事,直接使用前端传入的 status 作为业务判断依据。
示例场景:
下单接口返回is_pay:0代表未支付,修改数据包is_pay:1提交,后端直接判定订单已支付,完成业务下发。

风险:这种漏洞直接造成资金损失,属于高危。

还有数字参数测试思路:

  • 修改为 0、负数、超大数字、空值、特殊编号
    例如:商品购买数量,传入num=-1,部分系统会出现库存增加。

2.5 第五步:请求重放、重复提交测试

同一个业务请求,多次重复发送,测试是否有幂等控制。
适用场景:

  • 提交订单
  • 领取优惠券
  • 积分兑换
  • 核销码核销

抓包拿到正常请求包,不断点击 Repeater 重放。
如果没有唯一订单号、随机防重 token,就会出现重复领取、多次核销的逻辑缺陷。

2.6 第六步:流程顺序打乱测试(业务状态机漏洞)

业务流程是有顺序的:A→B→C→D。
尝试跳过前面步骤,直接请求 D 接口。

举例:
密码重置流程:手机号→发送验证码→校验验证码→重置密码。
直接访问重置密码接口,不带验证码,或者直接提交新密码。
如果后端没有校验前面步骤,直接重置密码,造成任意密码重置。

0x03 各类逻辑漏洞细分测试思路

3.1 权限类漏洞(最容易挖到,优先级最高)

水平越权 BOLA

场景:A 和 B 都是普通用户,A 修改请求里的 orderId=B 的订单编号,读取 / 修改 B 的数据。
测试步骤:

  1. A 账号查询自己订单,抓包,拿到 orderId;
  2. 登录 B 账号,拿到 B 的 orderId;
  3. A 账号的请求包,把 orderId 替换为 B 的订单 ID,发送;
  4. 判断是否返回 B 的订单、手机号、地址等敏感信息。

很多开发只校验登录 Token 是否有效,没有校验资源归属关系,这就是 BOLA 的根源。

垂直越权

普通用户,尝试调用管理员接口,新增用户、删除数据、查看后台全部数据。
测试思路:

  1. 管理员操作接口抓包,记录接口路径与参数;
  2. 使用普通用户 Cookie/Token,直接请求该接口;
  3. 看是否成功执行管理员操作。
未授权访问

无需登录 Token,直接访问接口,读取数据,不需要任何账号。

3.2 验证码类逻辑漏洞

验证码是逻辑漏洞重灾区,常见几类:

  1. 验证码可复用:验证码校验一次成功后,还能继续使用,多次提交;
  2. 验证码回显:接口直接把验证码明文返回在响应包;
  3. 前端校验验证码,后端不校验;
  4. 验证码无频率限制:短信轰炸;
  5. 手机号参数可控,可给任意手机号发送重置验证码,实现任意账号密码重置。

测试方法:

  1. 获取验证码,提交验证成功;再次使用同一个验证码提交;
  2. 抓包看响应,检查验证码是否直接返回;
  3. 删除验证码参数,直接提交;
  4. 修改手机号参数,测试是否可以给他人手机号下发验证码。

3.3 支付 / 订单交易逻辑漏洞(高危)

交易类逻辑漏洞,危害极高,测试重点:

  1. 金额由前端传递,后端没有校验商品真实价格;修改 price 参数低价购买高价商品;
  2. 支付回调伪造:攻击者模拟支付平台回调,直接修改订单状态为已支付;
  3. 重复下单、重复扣款、重复发货;
  4. 负数金额,充值负数,余额增加;
  5. 订单取消逻辑缺陷:取消订单后,商品库存没有回滚。

重点提醒:支付相关测试,在 SRC 或者授权测试环境操作,严禁在真实生产环境测试支付逻辑,极易产生资金纠纷。

3.4 营销活动逻辑漏洞

优惠券、抽奖、积分活动,开发往往安全意识薄弱,漏洞很多:

  1. 仅前端限制每人领一张,后端不校验,可批量领取;
  2. 可修改用户 ID,为其他用户领取优惠券;
  3. 抽奖接口的中奖概率、奖项由前端返回,篡改参数直接中大奖;
  4. 积分兑换,重复提交兑换请求,无限刷积分。

3.5 业务信息泄露类逻辑漏洞

接口根据 ID 遍历用户数据,例如用户 id 自增,循环请求接口批量拿到所有用户手机号、个人信息。本质属于水平越权衍生漏洞。

0x04 挖掘逻辑漏洞的通用测试 Payload 思路

逻辑漏洞没有传统注入 Payload,但有一套通用测试参数思路:

  1. 修改 ID 类参数:id、userId、orderId、couponId;替换为其他用户编号;
  2. 修改布尔状态:true ↔ false,1 ↔ 0;
  3. 传空值:参数删除、空字符串;
  4. 数字边界:负数、0、极大值;
  5. 重复提交:Repeater 多次重放同一请求;
  6. 删除关键参数:删掉验证码、token、sign 签名,观察后端处理;
  7. 调换参数位置,参数污染;
  8. 跳过前置接口,直接调用后续接口。

0x05 逻辑漏洞取证要点(SRC 提交必备)

逻辑漏洞经常因为取证不足被审核驳回,取证一定要包含:

  1. 两个账号的身份凭证,区分 A、B 账号;
  2. 完整 HTTP 请求 + 响应包,Burp 原始数据包;
  3. 完整复现录屏,完整展示操作全过程;
  4. 漏洞影响范围评估:能操作哪些数据,影响多少用户;
  5. 漏洞原理分析:后端缺少哪一层校验;
  6. 修复方案 + 临时缓解方案。

示例修复思路(越权):

问题:接口只校验登录态,未校验资源归属。
修复方案:后端查询订单时,同时查询订单对应的 user_id,和当前登录用户 id 对比,不一致直接拒绝访问,禁止仅依靠前端传入的 orderId 查询数据。

0x06 高频踩坑误区

❌误区 1:逻辑漏洞可以靠扫描器扫出来

扫描器只能识别特征,无法理解业务流程,绝大多数逻辑漏洞只能人工挖掘。

❌误区 2:只要返回 403 就是不存在越权

部分接口只拦截浏览器访问,使用接口请求可以绕过;也可以更换请求方法 GET/POST 尝试。

❌误区 3:修改前端页面 JS 变量就算漏洞

单纯前端页面展示修改,没有后端生效,不属于漏洞;必须后端业务状态发生变化才算有效漏洞。

❌误区 4:测试逻辑漏洞只改 ID,忽略状态机、重复提交

越权只是逻辑漏洞其中一类,重复领取、回调伪造这类漏洞价值同样很高。

❌误区 5:忽略业务幂等性

很多开发只考虑单次正常操作,不考虑重复请求,重放类逻辑洞经常被忽略。

0x07 标准化逻辑漏洞测试流程

  1. 注册多账号,完整走通整套业务流程,梳理业务状态流转;
  2. 标记所有可控参数,区分前端传入参数和后端可信数据;
  3. 基础测试:修改 ID、状态、数字参数,测试水平 / 垂直越权;
  4. 流程测试:跳过业务步骤、打乱业务顺序;
  5. 重放测试:重复提交请求,检查幂等与次数限制;
  6. 验证码、签名、回调接口单独测试;
  7. 漏洞验证,确认后端业务逻辑确实被篡改;
  8. 录屏、保存数据包,整理漏洞报告;
  9. 复测,确认漏洞稳定复现。

0x08 防御方案(防守视角)

  1. 后端校验为唯一可信源,所有敏感数据不能依赖前端传入;价格、权限、资源归属,全部后端查询数据库校验;
  2. 严格资源归属校验:任何查询、修改接口,必须校验操作人是否属于资源所有者;
  3. 业务状态机强校验:业务流转不能跳过步骤,每一步校验前置条件;
  4. 接口增加幂等控制,使用唯一业务流水号,防止重复提交;
  5. 验证码一次性使用,校验成功后立刻失效;增加发送频率限制;
  6. 敏感接口增加签名机制,参数防篡改、防重放;
  7. 最小权限原则,区分普通用户与管理员接口,管理员接口增加 IP 限制、二次认证;
  8. 日志审计:记录关键业务操作,订单修改、密码重置、大额操作留存日志。

总结

逻辑漏洞挖掘,考验的不是构造 Payload 的能力,而是对业务流程的理解能力。
核心思想:站在开发者和攻击者双重角度,寻找业务规则里的例外场景,寻找校验缺失的环节。
注入、XSS 是攻击代码;逻辑漏洞是攻击业务规则。随着基础安全不断完善,逻辑漏洞会成为 Web 安全测试、SRC 挖洞的主要方向。

日常练习不要只刷注入 XSS 靶场,多去分析各类业务系统,思考业务限制,多账号对照测试,慢慢养成业务推演的思维。

一句话记住:所有逻辑漏洞的根源,都是后端过度信任前端可控数据,缺少完备的业务校验。


最后

关于网络安全技术储备

网络安全是当今信息时代中非常重要的一环。无论是找工作还是感兴趣(黑客),都是未来职业选择中上上之选,为了保护自己的网络安全,学习网络安全知识是必不可少的。

如果你是准备学习网络安全(黑客)或者正在学习,下面这些你应该能用得上:

①网络安全学习路线
②20份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析

一、网络安全(黑客)学习路线

网络安全(黑客)学习路线,形成网络安全领域所有的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、网络安全教程视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

三、网络安全CTF实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这里带来的是CTF&SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

四、网络安全面试题

最后,我们所有的作为都是为就业服务的,所以关键的临门一脚就是咱们的面试题内容,所以面试题板块是咱们不可或缺的部分,这里我给大家准备的就是我在面试期间准备的资料。

网安其实不难,难的是坚持和相信自己,我的经验是既然已经选定网安你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。

机会属于有准备的人,这是一个实力的时代。人和人之间的差距不在于智商,而在于如何利用业余时间,只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间!

这份完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

返回列表