ARTICLE DETAIL

资讯详情

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

逻辑漏洞挖掘思路

逻辑漏洞挖掘思路 逻辑漏洞挖掘思路前言在 Web 安全测试和 SRC 漏洞挖掘里SQL 注入、XSS 这类特征型漏洞越来越少。WAF、代码检测工具、安全编码规范能拦截绝大多数输入类漏洞。但逻辑漏洞没有统一 Payload扫描器很难识别也是近几年中高危漏洞的主要来源。很多新人习惯拿着 Burp、Xray 跑扫描器扫完就判定站点无漏洞。等到别人挖出越权、任意重置密码、金额篡改、重复领取优惠券这类高危逻辑洞自己却一头雾水。逻辑漏洞本质不是代码过滤不严而是业务流程设计缺陷、权限信任错误、业务校验逻辑缺失。想要挖到逻辑漏洞核心不是构造特殊字符而是站在业务用户的角度推演业务流程寻找业务规则里的 “例外场景”。免责声明本文内容仅用于授权环境安全测试、网络安全学习。严禁在未获得书面授权的业务系统进行逻辑漏洞测试任何未授权的探测、篡改操作均违反《网络安全法》需要承担对应的法律责任。0x01 什么是逻辑漏洞简单一句话程序代码语法没问题但业务规则校验存在缺陷攻击者可以按照业务正常流程绕过限制实现业务规则外的操作。和注入、XSS 对比输入型漏洞攻击依靠特殊字符、恶意 Payload破坏代码执行逻辑逻辑漏洞提交的数据格式合法没有恶意字符但是业务校验不完整突破业务约束。常见典型逻辑漏洞清单权限类水平越权BOLA、垂直越权、未授权访问账户类任意用户密码重置、验证码绕过、验证码复用、短信轰炸交易类订单金额篡改、负数金额、重复支付、订单篡改营销类优惠券无限领取、积分无限刷、抽奖概率篡改、重复提交活动表单业务流程类支付状态篡改、订单取消逻辑缺陷、订单重复核销重点逻辑漏洞几乎无法依靠自动化扫描器发现只能人工梳理业务流程挖掘。0x02 逻辑漏洞通用挖掘方法论2.1 第一步梳理业务流程画出业务链路拿到目标站点不要立刻抓包测试。优先注册普通账号从头到尾完整走一遍业务把业务步骤记录下来。举几个例子密码找回输入手机号 → 获取验证码 → 提交验证码 → 设置新密码下单支付选择商品 → 创建订单 → 提交订单 → 发起支付 → 支付回调 → 订单标记已支付优惠券领取登录账号 → 领取优惠券 → 优惠券入库标记已领取梳理的时候重点标记可控参数前端传给后端的所有变量用户 ID、订单 ID、手机号、金额、状态字段信任边界哪些数据由前端传入哪些由后端存储身份校验节点每一步是否校验用户身份状态流转业务状态之间的切换规则待支付、已支付、已取消、已核销核心原则永远不要信任前端传递的任何数据。前端传过来的订单金额、用户 ID、订单状态都不能作为后端可信依据。2.2 第二步角色划分多账号对照测试逻辑漏洞测试至少准备两个普通账号 A、B最好再加管理员账号。A 账号正常操作抓包记录请求参数B 账号尝试复用 A 的参数看是否能访问 A 的数据水平越权普通账号尝试访问管理员接口 / 管理员数据垂直越权。这是发现越权漏洞最简单有效的手段也是 SRC 最高频的高危漏洞。2.3 第三步思考 “业务规则限制”尝试绕过限制每一个业务功能都有业务限制我们的目标就是思考怎么在不破坏数据包格式的前提下绕过这个限制。通用思考问题清单测试时逐个对照是否限制只能操作自己的数据修改 ID 能不能访问别人的数据是否有次数限制领券只能领 1 次验证码 1 分钟 1 条能不能绕过次数限制状态机是否严格校验能不能直接修改状态参数跳过前置步骤价格、数量这类敏感数据前端传参后端有没有二次校验业务依赖的凭证验证码、订单号是否一次性是否可以重复使用支付、核销这类关键动作有没有防重放机制同一个请求能不能重复提交业务逻辑有没有顺序依赖能不能跳过中间步骤直接访问最后一步接口2.4 第四步参数篡改与状态篡改业务接口大量使用状态字段例如is_pay0、statusunpaid、is_receive0。很多开发图省事直接使用前端传入的 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 修改请求里的 orderIdB 的订单编号读取 / 修改 B 的数据。测试步骤A 账号查询自己订单抓包拿到 orderId登录 B 账号拿到 B 的 orderIdA 账号的请求包把 orderId 替换为 B 的订单 ID发送判断是否返回 B 的订单、手机号、地址等敏感信息。很多开发只校验登录 Token 是否有效没有校验资源归属关系这就是 BOLA 的根源。垂直越权普通用户尝试调用管理员接口新增用户、删除数据、查看后台全部数据。测试思路管理员操作接口抓包记录接口路径与参数使用普通用户 Cookie/Token直接请求该接口看是否成功执行管理员操作。未授权访问无需登录 Token直接访问接口读取数据不需要任何账号。3.2 验证码类逻辑漏洞验证码是逻辑漏洞重灾区常见几类验证码可复用验证码校验一次成功后还能继续使用多次提交验证码回显接口直接把验证码明文返回在响应包前端校验验证码后端不校验验证码无频率限制短信轰炸手机号参数可控可给任意手机号发送重置验证码实现任意账号密码重置。测试方法获取验证码提交验证成功再次使用同一个验证码提交抓包看响应检查验证码是否直接返回删除验证码参数直接提交修改手机号参数测试是否可以给他人手机号下发验证码。3.3 支付 / 订单交易逻辑漏洞高危交易类逻辑漏洞危害极高测试重点金额由前端传递后端没有校验商品真实价格修改 price 参数低价购买高价商品支付回调伪造攻击者模拟支付平台回调直接修改订单状态为已支付重复下单、重复扣款、重复发货负数金额充值负数余额增加订单取消逻辑缺陷取消订单后商品库存没有回滚。重点提醒支付相关测试在 SRC 或者授权测试环境操作严禁在真实生产环境测试支付逻辑极易产生资金纠纷。3.4 营销活动逻辑漏洞优惠券、抽奖、积分活动开发往往安全意识薄弱漏洞很多仅前端限制每人领一张后端不校验可批量领取可修改用户 ID为其他用户领取优惠券抽奖接口的中奖概率、奖项由前端返回篡改参数直接中大奖积分兑换重复提交兑换请求无限刷积分。3.5 业务信息泄露类逻辑漏洞接口根据 ID 遍历用户数据例如用户 id 自增循环请求接口批量拿到所有用户手机号、个人信息。本质属于水平越权衍生漏洞。0x04 挖掘逻辑漏洞的通用测试 Payload 思路逻辑漏洞没有传统注入 Payload但有一套通用测试参数思路修改 ID 类参数id、userId、orderId、couponId替换为其他用户编号修改布尔状态true ↔ false1 ↔ 0传空值参数删除、空字符串数字边界负数、0、极大值重复提交Repeater 多次重放同一请求删除关键参数删掉验证码、token、sign 签名观察后端处理调换参数位置参数污染跳过前置接口直接调用后续接口。0x05 逻辑漏洞取证要点SRC 提交必备逻辑漏洞经常因为取证不足被审核驳回取证一定要包含两个账号的身份凭证区分 A、B 账号完整 HTTP 请求 响应包Burp 原始数据包完整复现录屏完整展示操作全过程漏洞影响范围评估能操作哪些数据影响多少用户漏洞原理分析后端缺少哪一层校验修复方案 临时缓解方案。示例修复思路越权问题接口只校验登录态未校验资源归属。修复方案后端查询订单时同时查询订单对应的 user_id和当前登录用户 id 对比不一致直接拒绝访问禁止仅依靠前端传入的 orderId 查询数据。0x06 高频踩坑误区❌误区 1逻辑漏洞可以靠扫描器扫出来扫描器只能识别特征无法理解业务流程绝大多数逻辑漏洞只能人工挖掘。❌误区 2只要返回 403 就是不存在越权部分接口只拦截浏览器访问使用接口请求可以绕过也可以更换请求方法 GET/POST 尝试。❌误区 3修改前端页面 JS 变量就算漏洞单纯前端页面展示修改没有后端生效不属于漏洞必须后端业务状态发生变化才算有效漏洞。❌误区 4测试逻辑漏洞只改 ID忽略状态机、重复提交越权只是逻辑漏洞其中一类重复领取、回调伪造这类漏洞价值同样很高。❌误区 5忽略业务幂等性很多开发只考虑单次正常操作不考虑重复请求重放类逻辑洞经常被忽略。0x07 标准化逻辑漏洞测试流程注册多账号完整走通整套业务流程梳理业务状态流转标记所有可控参数区分前端传入参数和后端可信数据基础测试修改 ID、状态、数字参数测试水平 / 垂直越权流程测试跳过业务步骤、打乱业务顺序重放测试重复提交请求检查幂等与次数限制验证码、签名、回调接口单独测试漏洞验证确认后端业务逻辑确实被篡改录屏、保存数据包整理漏洞报告复测确认漏洞稳定复现。0x08 防御方案防守视角后端校验为唯一可信源所有敏感数据不能依赖前端传入价格、权限、资源归属全部后端查询数据库校验严格资源归属校验任何查询、修改接口必须校验操作人是否属于资源所有者业务状态机强校验业务流转不能跳过步骤每一步校验前置条件接口增加幂等控制使用唯一业务流水号防止重复提交验证码一次性使用校验成功后立刻失效增加发送频率限制敏感接口增加签名机制参数防篡改、防重放最小权限原则区分普通用户与管理员接口管理员接口增加 IP 限制、二次认证日志审计记录关键业务操作订单修改、密码重置、大额操作留存日志。总结逻辑漏洞挖掘考验的不是构造 Payload 的能力而是对业务流程的理解能力。核心思想站在开发者和攻击者双重角度寻找业务规则里的例外场景寻找校验缺失的环节。注入、XSS 是攻击代码逻辑漏洞是攻击业务规则。随着基础安全不断完善逻辑漏洞会成为 Web 安全测试、SRC 挖洞的主要方向。日常练习不要只刷注入 XSS 靶场多去分析各类业务系统思考业务限制多账号对照测试慢慢养成业务推演的思维。一句话记住所有逻辑漏洞的根源都是后端过度信任前端可控数据缺少完备的业务校验。最后关于网络安全技术储备网络安全是当今信息时代中非常重要的一环。无论是找工作还是感兴趣黑客都是未来职业选择中上上之选为了保护自己的网络安全学习网络安全知识是必不可少的。如果你是准备学习网络安全黑客或者正在学习下面这些你应该能用得上①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表