该工具使用预定义设置搜索请求的不同部分(路径、主机、头信息、POST和GET参数)中的SSRF漏洞。
将__example.app-settings.conf__重命名为__app-settings.conf__并调整设置。最重要的设置是回调URL。我建议使用burp collaborator。 然后,您可以将您的URL添加到config/url-to-test.txt。脚本接受域名以及带有路径和查询参数的URL。 如果你愿意,你可以将你自己的cookie添加到config/cookie-jar.txt中,并为你的请求添加额外的头信息。用于POST和GET请求的暴力破解列表目前很小,我不认为添加2000个参数是明智的。我们应该专注于那些最可能存在漏洞的参数。如果你不这么认为,那就添加你自己的吧!
此工具不期望通过CLI传递任何参数,所以只需输入:
python3 extended-ssrf-search.py
可以设置很多选项和设置,这里做一些解释。
主配置文件是"app-settings.conf",所有操作都必须在该文件中完成!除此之外,还有一些其他文件允许设置更复杂的数据,如头信息、URL和cookie。
config/cookie-jar.txt
使用此文件添加一个cookie字符串。我通常复制在每个burp请求中可以看到的那个。只需复制"Cookie:"头的值。默认文件中有一个示例输入。
config/http-headers.txt
此文件定义了添加到请求并进行操作(每个头都添加了payload)的HTTP头。最重要的已经在该文件中。但请随意添加更多。
config/parameters.txt
该工具可以选择暴力破解GET和POST参数。在这种情况下,这些参数(加上查询字符串中的参数)将被使用。每个参数都获得payload作为值。最重要的已经在该文件中。
config/static-request-headers.txt
这些头信息被添加到每个请求中,但不会被修改。它们是静态的。这是添加授权或bearer cookie的最佳位置。每行一个(键: 值)!
config/urls-to-test.txt
这就是你需要的文件!请在此处添加你要扫描的链接。允许以下格式:
当检测到最后一种情况时,会在前面加上"http://"。该工具旨在与一个好的URL列表一起使用。获取列表的一个好方法是使用burp导出它。然后你就有了一个有效的URL列表。你只需要添加你的cookie即可。
app-settings.conf定义了程序的工作流程。它是最重要的文件,你可以在其中激活/停用不同的模块。
CallbackHost
所有DNS和HTTP请求被发送回至此的URL/主机 - 我在这里主要使用burp collaborator,但DNSBin或你自己的服务器也很合适。
HTTPMethod
定义请求方法。有效选项:GET、POST、PUT、DELETE、PATCH、GET、OPTIONS 无效值会产生大量错误,因为http.client不允许其他方法!我不会检查你是否在这里做了错事 ;)
HTTPTimeout
某些请求可能需要很长时间。您可以在此处定义一个请求的最大执行时间。我建议值在2到6秒之间。
MaxThreads
线程越多,脚本运行越快 - 但由于我们处理大量连接,我通常在个人电脑上将其保持在10以下,在我的VPS上保持在30左右。
ShuffleTests
特别是在处理一个大的URL列表时,将此设置为"true"将打乱所有创建的测试。这样同一个主机就不会被频繁命中。如果你只扫描一个主机,那就无所谓了。
GetChunkSize
当处理较大的参数列表时,这可能会很方便,并能防止400实体过大的错误。
每个插入点都可以激活(设置为true/1)或停用(设置为false/0)
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
这里 Method 固定为 GET。
GET /path?[INJECT HERE PAYLOAD] HTTP/1.1
...
InParamsPost
这里 Method 固定为 POST。
POST /path HTTP/1.1
...
Content-Type: application/x-www-form-urlencoded
Content-Length: XXX
[INJECT HERE PAYLOAD]
InParamsPostAsJson
这里 Method 固定为 POST。
POST /path HTTP/1.1
...
Content-Type: application/json
Content-Length: XXX
[INJECT HERE JSON-PAYLOAD]
在默认设置中,该工具仅尝试通过SSRF触发HTTP请求。但也可以通过DNS进行数据泄露,当注入OS命令时。最常见的payload是"$(hostname)"。还有一些选项允许额外使用这种攻击。
UseExecPayload
使用此设置可以激活/停用该行为。
ExecPayload
在此你可以定义自己的payload,例如$(uname -a)
为了使识别更容易一些,当前主机和方法(缩写形式,请参见Tests.py)的组合会附加或前置到payload中。
Position
有效选项是"append"和"prepend"!
如果选择"append",payload看起来像这样:
....burpcollaborator.net/www.attacked-domain.com-testmethod
http://....burpcollaborator.net/www.attacked-domain.com-testmethod
如果选择"prepend",payload看起来像这样:
www.attacked-domain.com-testmethod.burpcollaborator.net
http://www.attacked-domain.com-testmethod.burpcollaborator.net/
也可以使用隧道,例如"127.0.0.1:8080"(Burp代理),以在Burp中监控所有流量。
Active
将此设置为"true"将强制脚本使用隧道连接。
Tunnel
在此设置你的代理服务器"ip:port"。
结果如下,当你打开Burp时,你可以查看你的HTTP历史:


请只需创建一个问题并将其标记为功能请求。
你喜欢这个工具吗?它帮助你获得赏金了吗?想要回馈/支持我吗?为什么不呢!