条件竞争的骚操作(三)案例分享
字数 1635 2025-08-23 18:31:24
条件竞争漏洞实战案例分析与利用技巧
一、条件竞争漏洞概述
条件竞争(Race Condition)是一种在多线程或并发系统中,由于操作时序不当导致的安全漏洞。当系统对共享资源的访问顺序敏感,且缺乏适当的同步机制时,攻击者可以通过精心设计的并发请求来干扰正常业务流程,实现非预期的操作结果。
二、案例一:验证码绕过实现密码爆破
漏洞背景
某大厂(DC)摄像机管理登录页面存在验证码机制,正常情况下每次密码错误都会刷新验证码,阻止自动化密码爆破。
漏洞原理
利用条件竞争在验证码失效前快速发送大量请求,实现"一码多用"。
详细利用步骤
-
前期准备
- 使用自己的手机号码注册账户,获取合法账号
- 了解系统正常登录流程和验证码刷新机制
-
Burp Suite配置
- 启动Burp Suite并配置浏览器代理
- 访问登录页面,填写已知账号和正确验证码
- 点击登录同时抓取请求包
-
Turbo Intruder配置
def queueRequests(target, wordlists): engine = RequestEngine( endpoint=target.endpoint, concurrentConnections=1, engine=Engine.BURP2 ) passwords = wordlists.clipboard for password in passwords: engine.queue(target.req, password, gate='1') engine.openGate('1') def handleResponse(req, interesting): table.add(req) -
攻击执行
- 将密码字典复制到剪贴板
- 在Turbo Intruder中设置密码位置为
%s - 启动攻击,观察响应结果
技术要点
- 使用
concurrentConnections=1和Engine.BURP2确保HTTP/2单包攻击 gate机制控制所有请求在openGate后同时发送- 验证码在极短时间内被重复使用,绕过刷新机制
三、案例二:短信轰炸漏洞
纵向轰炸(同一号码多次发送)
-
测试过程
- 准备注册页面,输入手机号和图形验证码
- 抓取短信发送请求包
- 使用Turbo Intruder并发发送
-
限制发现
- 服务器端对同一号码有频率限制(通常3-4条)
- 虽然请求成功发送,但实际短信接收受限
横向轰炸(多号码同时发送)
-
攻击方法
- 收集多个目标手机号码(至少4个)
- 使用Burp Repeater创建请求组
- 修改每个请求中的手机号参数
- 使用"Send group"功能并发发送
-
效果验证
- 所有号码在同一时间收到短信
- 绕过单号码限制,实现批量骚扰
技术对比
| 类型 | 目标数量 | 攻击效果 | 防御难度 |
|---|---|---|---|
| 纵向轰炸 | 单一目标 | 深度骚扰,但易被限制 | 较易(频率限制) |
| 横向轰炸 | 多个目标 | 广度影响,更难防御 | 较难(需识别关联请求) |
四、案例三:密码重置漏洞
漏洞细节
在密码重置功能中,系统存在两个连续请求:
- 提交邮箱地址触发验证码发送
- 提交验证码进行密码修改
利用步骤
-
请求拦截
- 在邮箱输入处拦截第一个请求
- 复制请求到Repeater
-
条件竞争构造
- 修改请求中的邮箱地址为攻击者控制邮箱
- 同时发送原始请求和修改后的请求
-
结果获取
- 两个邮箱都会收到有效验证码
- 使用任一验证码完成密码重置
关键注意事项
- 必须关闭Burp拦截功能(
Proxy-Intercept设为Off)后再输入验证码 - 避免操作过慢导致验证码刷新
- 系统未验证旧密码是漏洞存在的关键因素
五、防御建议
-
验证码机制强化
- 实现严格的单次有效性验证
- 增加时间戳校验,限制极短时间内的重复使用
-
请求处理优化
- 关键操作使用事务处理
- 实现请求令牌唯一性检查
- 对敏感操作添加互斥锁
-
业务逻辑完善
- 密码重置必须验证旧密码
- 短信发送增加图形验证码校验
- 实现基于设备/IP的频率限制
-
监控与告警
- 建立异常请求模式检测
- 对高并发相似请求触发安全告警
- 记录完整操作日志便于审计
六、测试方法论
-
系统分析阶段
- 完整走查正常业务流程
- 识别所有状态变更点
- 标记共享资源访问路径
-
漏洞探测阶段
- 使用工具构造高并发请求
- 重点测试验证码、短信、令牌等机制
- 尝试参数篡改与请求重放
-
验证确认阶段
- 确认非预期状态变更
- 量化漏洞影响范围
- 尝试多种利用场景
-
报告编写阶段
- 详细记录复现步骤
- 提供时间戳证据
- 建议合理的修复方案
通过系统性地应用这些方法和工具,安全研究人员可以有效地发现和验证条件竞争漏洞,帮助厂商提升系统安全性。