
Extended ssrf search
Extended ssrf search是一款功能强大的SSRF智能漏洞扫描工具,该工具可以通过在请求中设置不同的预定义参数来搜索SSRF漏洞,这些参数包括路径、主机、Header、POST和GET参数。
工具下载
广大研究人员可以使用下列命令将项目源码克隆至本地:
git clone https://github.com/Damian89/extended-ssrf-search.git
工具准备
将项目中的example.app-settings.conf文件重命名为app-settings.conf,然后调整相应设置。最重要的设置时回调URL地址,我建议大家使用Burp Collaborator。接下来,将你的URL添加到config/url-to-test.txt中。在这里,脚本将接收域名和URL以及响应的查询参数。你还可以将你自己的Cookie添加到config/cookie-jar.txt中,或给请求添加额外的Header。针对POST以及GET请求的爆破列表当前体积不大,因为我们认为应该把重点放在那些最有可能存在漏洞的地方。
工具执行
该工具可以直接在不需要任何参数的情况下通过命令行接口来运行,运行命令如下:
python3 extended-ssrf-search.py
工具配置
我们可以根据自己的需要来设置各种工具运行参数、设置以及选项。
文件
主配置文件为“app-settings.conf”,所有的工具配置都可以通过修改这个文件来实现。除此之外,该工具还有很多其他的文件可以帮助我们设置更加复杂的数据,例如Header、URL和Cookie。
使用此文件添加cookie字符串,我一般都直接拷贝Burp请求中的参数,你也可以拷贝”Cookie:”-header的值,默认文件中已提供了样本输入。
config/http-headers.txt
这个文件中定义了可以添加到请求和操作中的HTTP Header,每个Header都添加了Payload,最重要的参数已经在项目文件中给出了,但你可以根据需要来自行添加。
config/parameters.txt
该工具提供了用于对GET和POST请求进行爆破的选项,其中涉及到的每一个参数都有对应的Payload作为值。
config/static-request-headers.txt
这些Header会被添加至每一个请求中,但无法被修改,因为它们都是静态值。这是添加授权或承载Cookie的最佳位置,其中每一行为一个(键:值)对。
config/urls-to-test.txt
可在该文件中添加需要扫描的链接,允许的参数格式如下:
https://domain.com/path?param=value¶m1=value1
domain.com
当检测到最后一个样例格式时,会在前面加上一个“http://”。该工具只能配合格式正确的url列表来进行操作,因为建议使用Burp来导出这种格式的列表文件,并根据需要来添加Cookie。
设置
app-settings.conf文件定义的是程序的工作流,它是最重要的项目文件,你可以在该文件中激活/禁用不同的功能模块。
CallbackHost
定义发送所有DNS和HTTP请求的URL/主机,我一般使用的是Burp Collaborator,但DNSBin也是可以的。
HTTPMethod
定义请求方法,可选参数有GET、POST、PUT、DELETE、PATCH、GET、OPTIONS,无效值将引起工具运行错误。
HTTPTimeout
有些请求可能需要很长时间,在这里你可以定义一个请求的最长执行时间,我建议这个值设置在2到6秒之间。
MaxThreads
线程越多,脚本就越快。但是由于我们处理的是大量的连接,所以我通常在我的个人计算机上设置小于10的值,在我的VPS上设置值大约为30。
ShuffleTests
尤其是在处理一个较大的URL列表时,如果将此设置为“true”,则会打乱所有创建的测试。这样一来,同一个主机就不会受到那么多的攻击。如果你只扫描一台主机,那就随意了。
GetChunkSize
在处理一个较大的参数列表时,这个参数也许可以帮到你,并防止出现较严重的实体错误。
InPath
下面的样例中显示了一个GET请求,但根据我们的设置,它也可以是POST、PUT和DELETE等等:
GET [INJECT HERE PAYLOAD] HTTP/1.1
...
InHost
下面的样例中显示了一个GET请求,但根据我们的设置,它也可以是POST、PUT和DELETE等等:
GET /path HTTP/1.1
Host: [INJECT HERE PAYLOAD]
...
InAdditionalHeaders
下面的样例中显示了一个GET请求,但根据我们的设置,它也可以是POST、PUT和DELETE等等:
GET /path HTTP/1.1
...
X-Forwarded-For: [INJECT HERE PAYLOAD]
InParamsGet
下面是一个针对GET请求的固定方法:
GET /path?[INJECT HERE PAYLOAD] HTTP/1.1
...
InParamsPost
下面是一个针对POST请求的固定方法:
POST /path HTTP/1.1
...
Content-Type: application/x-www-form-urlencoded
Content-Length: XXX
[INJECT HERE PAYLOAD]
InParamsPostAsJson
下面是一个针对POST请求的固定方法:
POST /path HTTP/1.1
...
Content-Type: application/json
Content-Length: XXX
[INJECT HERE JSON-PAYLOAD]
攻击
该工具的默认配置下,可以直接尝试通过SSRF来触发HTTP请求。与此同时,也可以使用DNS以及OS命令注入等方式来实现数据提取。
在这里,我们可以设置代理服务器,格式为“ip : port”。结果如下,我们可以在Burp中查看到捕捉到的HTTP历史记录:

攻击运行截图

项目地址
Extended ssrf search:【GitHub传送门】

上海市 1F
这个工具配置起来麻烦不?
广东省汕头市 2F
看起来比普通的SSRF扫描器灵活多了,还能自定义参数
江苏省淮安市 3F
之前用别的工具经常漏报,这个能测到多少种注入点?
湖南省郴州市 B1
@ 灵异观测站 能覆盖路径、Header、POST/GET,大概五六种吧
日本 B1
@ 灵异观测站 GET和POST都支持挺好,很多工具只能扫GET
韩国 4F
Burp Collaborator现在还能免费申请不,之前试过总超时
广东省 5F
感觉配置文件选项太多了,新手估计得琢磨半天
安徽省阜阳市颍上县 6F
GET和POST参数都能覆盖到,比那些只能扫GET的工具强
山东省 B1
@ 浮云过客 参数覆盖确实全面,连JSON格式的POST都能测
马来西亚 7F
之前搞SSRF测试手动发包累死,这种自动化工具确实省事
贵州省黔西南州 8F
有人在实际项目里用过吗?误报率咋样🤔
广东省 9F
文档里说的DNSBin是啥,和Burp Collaborator区别大吗?
韩国 10F
线程数设太高会不会把目标打挂,一般测试环境设多少合适
广东省东莞市 B1
@ 飞飞飞 误报率大概10%左右,比某些商业工具低
陕西省西安市 11F
配置文件选项确实多,但照着文档一步步来其实还好
湖北省武汉市 12F
线程设5左右比较安全,我VPS一般开到20
澳大利亚 13F
这工具灵活性确实可以,比之前用的那些死板工具强多了
上海市卢湾区 14F
新手建议先拿测试环境练手,别直接上生产
山东省临沂市 15F
配合Burp用挺方便
中国 16F
Burp Collaborator现在还是免费,就是偶尔抽风
四川省眉山市 17F
DNSBin响应快但功能少,Burp更全面些
福建省福州市 18F
线程数设多少合适?
黑龙江省哈尔滨市 B1
@ 迷雾之城 看你机器性能,我一般设5-10
浙江省杭州市 19F
配置起来不算麻烦,就是改几个文件的事
湖北省黄冈市 20F
回头试试用这个扫几个站
宁夏银川市 B1
@ RocketRaccoon 试完可以分享下结果~
澳大利亚 21F
要是能把爆破字典再丰富点就更好了
海南省文昌市 22F
这种自动化工具确实省时间,手动测试太折磨
上海市 23F
工具自带的样本配置文件挺有用的,可以直接参考
北京市 24F
实际项目用过两次,效果还行就是报告要自己整理