0X01前言
并发不是重放,在渗透测试或SRC挖掘中你是否通过burpsuite的intruer模块来进行测试并发漏洞呢?首先要理解一下并发的概念,同一个资源,被多个人想要使用的问题,然而burpsuite的intruder模块无论你将线程数调到多高都不是并发,他是一个一个相同的数据包访问同一个资源,并发是10个相同的数据包同时访问一个资源.举例:余额只有500,结果提现到账3000,使用了并发漏洞同时发送了多个提现请求,总结一句话:万物皆可并发.
0X02功能点
以下十个点为高频出现并发漏洞的点
0X03并发漏洞测试插件
TurboIntruder
是一个用于发送大量HTTP请求并会分析其结果BurpSuite
插件,他也是我目前知道能够测试并发漏洞的插件.
可以在burpsuite
官方插件商店中直接安装或github
下载导入
GitHub地址为:
https://github.com/PortSwigger/turbo-intruder/
0x04具体的使用
这款插件的使用也很简单,找到想要并发的数据右键选择并发插件
这将打开一个包含你请求的窗口和一个Python
代码段如下所示:我们可以在上方添加%s
为我们要进行fuzz的内容(如果没有参数需求,%s
可以加在任意位置)
选择race.py
脚本,这里执行30
次并发
concurrentConnections=30 并发连接数, 默认就好
requestsPerConnection=100 并发连接请求数
成功,下方可以看RPS
0x05 新版本遇到的问题
最新版本的turbo-intruder
里已经删除了race.py
脚本,这里可以用basic.py
或者原始的last code used
实现并发功能。
也可以直接粘贴原始的race.py
的代码
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=30,
requestsPerConnection=100,
pipeline=False
)
for i in range(30): #创建30个请求,需要和concurrentConnections对应,每条连接发送一个请求
engine.queue(target.req, target.baseInput, gate='race1') #“gate”参数会阻塞每个请求的最后一个字节,直到调用openGate
#等待,直到每个“race1”标记的请求就绪,然后发送每个请求的最后一个字节
engine.openGate('race1') #标识属于同一个并发测试的请求
engine.complete(timeout=60)
def handleResponse(req, interesting):
table.add(req)