1. 前言
并发漏洞是指在多线程或多用户环境中,由于对共享资源的访问控制不当,导致数据不一致或安全问题的漏洞。这类漏洞通常发生在 Web 应用程序处理多个并发请求时,攻击者可以利用这些漏洞进行恶意操作。
2. 漏洞产生原因
并发漏洞的产生原因主要包括:
- 缺乏适当的锁机制:应用程序在处理共享资源时未使用锁定机制,导致多个线程或请求同时修改数据。
- 事务管理不当:数据库事务未能正确处理,导致数据在并发操作下出现不一致。
- 竞态条件:系统在处理请求时存在竞态条件,攻击者可利用这一点进行数据篡改。
- 会话管理问题:多个用户共享同一会话状态,导致状态混淆或数据泄露。
3. 漏洞的危害
并发漏洞可能导致的危害包括:
- 数据丢失或损坏:并发操作可能导致重要数据的丢失或被错误修改。
- 账户接管:攻击者可能通过并发请求获得其他用户的权限。
- 逻辑错误:业务逻辑可能被破坏,导致系统无法正常运行。
- 服务中断:资源竞争和锁定问题可能导致系统性能下降或崩溃。
4. 针对并发漏洞的测试技巧
4.1 识别共享资源
- 确定系统中哪些资源是共享的,如数据库记录、文件、会话状态等,重点测试这些资源的并发访问。
4.2 测试并发请求
- 使用自动化工具(如 JMeter、Apache Bench)发起并发请求,观察系统的反应和数据变化。
4.3 检查事务管理
- 测试数据库事务的完整性,确认在并发情况下是否能保持数据的一致性和完整性。
5. 漏洞利用前准备
5.1 信息收集
- 确定目标网站的资源访问模式,记录所有相关的请求和响应。
- 了解系统的业务逻辑和数据流,识别可能的并发访问点。
5.2 初步测试
- 尝试在短时间内发起多次相同的请求,观察是否能导致数据异常。
5.3 模拟攻击
- 如果直接测试失败,使用工具进行压力测试,模拟恶意的并发请求。
-
实战案例
- 案例1:
- 书架管理添加书架功能点进去

可以看到最多可以添加9个书架,正常添加重复名字书架会失败,添加更多书架需要更高的会员


Burp抓取到添加书架请求包,888是书架名字

用Turbo Intruder模块设置好参数测试

可以看到返回都是书架添加成功,Unicode解码是书架添加成功

返回查看成功添加

最后平台也是给了300个圆子
案例2:
逛资产的时候发现一个看资讯的点,发现我每次点进去阅读量都会增加,这就让我产生了并发的猜想,先来到资产页面,按照最热排序,发现是按照阅读量进行的排行,而不是点赞

点击文章抓包,获取到该URL的报文:
/***/updateChannelInfoNumber

利用intruder模块多次放包,这里放10000次看看阅读量和排行榜是否变化

可以看到超过原排行榜第一,并不是所谓的不按阅读量排行,而是确实按照阅读量来排行最热的排序

这个最后也是拿到一个100块钱的低危
案例3:
1.电脑端打开时没有获取验证码选项的

2。更改user-agent为移动端(或者在域名前加 m.xx.com),重新访问,这里推荐 火狐:User-Agent Switcher

3.刷新如下:

这就可以获取验证码了
4.输入手机号,点击获取验证码抓包,找到这个发送验证码的数据包,利用并发,同一时间多次对服务器发该数据包,从让服务器发送给手机多个验证码,造成短信轰炸

5.并发成功截图:这里我只是同时发送了30个请求包,成功8-9个,如果请求包增多的话,对用户会造成很大的影响。


6.经过对我自己一顿轰炸,也赢来了胜利的曙光
案例3:
点击某企业官网平台发现拥有优惠卷功能

点击领取然后拦截数据包

拦截到此数据包发送到并发模块这里我用的Turbo 插件

这里就进行30次并发吧

并发成功释放数据包 再来看券

领取了好多个券
关于并发漏洞的详解就这么多了,下面如果有什么的新思路,我将继续在论坛上面分享,欢迎各位继续关注