升级您在现代云环境中的SSRF漏洞。 surf允许您过滤主机列表,返回可行的SSRF候选列表
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/assetnote/surf
项目简介
Surf是一款对主机列表进行筛选,返回可用SSRF候选项的工具。通过从你的机器向每个主机发送HTTP请求,收集所有未响应的主机,然后将它们过滤成面向外部和面向内部的主机列表,你可以在任何可能存在SSRF漏洞的地方尝试这些主机。这个技术非常强大,因为传统的SSRF过滤器只会关注内部或受限制的IP范围,你会惊喜地发现,大型云环境的公司会为内部Web应用程序分配外部IP地址,而这些地址通常无法通过HTTP(s)从你的机器访问。使用这个技术可以找出这些漏洞。
技术点
- SSRF漏洞
- HTTP请求
项目用途
Surf可以用于筛选出可用SSRF候选项,可以找到那些通常无法通过HTTP(s)从你的机器访问的外部IP地址,从而找出SSRF漏洞。 它可以帮助网络安全人员更好地识别和利用SSRF漏洞。
Surf - 在现代云环境中升级你的SSRF漏洞

surf 允许您过滤主机列表,返回一个可行的SSRF候选列表。它通过从您的机器向每个主机发送HTTP请求,收集所有未响应的主机,然后将它们过滤成一个外部和内部主机列表。
您可以在可能存在SSRF漏洞的地方尝试这些主机。由于大多数SSRF过滤器只关注内部或受限制的IP范围,当您从您的机器无法通过HTTP(s)访问的外部IP上获得SSRF时,您会感到惊喜。
通常,您会发现拥有云环境的大型公司会为内部Web应用程序拥有外部IP。除非将这些主机明确添加到黑名单中(通常不会),否则传统的SSRF过滤器将无法捕获到这一点。这就是为什么这种技术如此强大的原因。
安装
该工具需要go 1.19或更高版本,因为我们依赖于 httpx 来进行HTTP探测。
可以使用以下命令进行安装:
go install github.com/assetnote/surf/cmd/surf@latest
用法
假设您有一个名为 bigcorp.txt 的文件,其中包含 bigcorp.com 的子域,并且您想要查找这些子域的所有SSRF候选项。以下是一些示例:
# 查找所有ssrf候选项(包括通过HTTP探测获得的外部IP地址)
surf -l bigcorp.txt
# 查找所有ssrf候选项(包括通过HTTP探测获得的外部IP地址)以及超时和并发设置
surf -l bigcorp.txt -t 10 -c 200
# 查找所有ssrf候选项(包括通过HTTP探测获得的外部IP地址),并仅打印所有主机
surf -l bigcorp.txt -d
# 查找所有指向内部/私有IP地址的主机(无HTTP探测)
surf -l bigcorp.txt -x
以下是完整的设置列表:
❯ surf -h
███████╗██╗ ██╗██████╗ ███████╗
██╔════╝██║ ██║██╔══██╗██╔════╝
███████╗██║ ██║██████╔╝█████╗
╚════██║██║ ██║██╔══██╗██╔══╝
███████║╚██████╔╝██║ ██║██║
╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝
by shubs @ assetnote
Usage: surf [--hosts FILE] [--concurrency CONCURRENCY] [--timeout SECONDS] [--retries RETRIES] [--disablehttpx] [--disableanalysis]
Options:
--hosts FILE, -l FILE
List of assets (hosts or subdomains)
--concurrency CONCURRENCY, -c CONCURRENCY
Threads (passed down to httpx) - default 100 [default: 100]
--timeout SECONDS, -t SECONDS
Timeout in seconds (passed down to httpx) - default 3 [default: 3]
--retries RETRIES, -r RETRIES
Retries on failure (passed down to httpx) - default 2 [default: 2]
--disablehttpx, -x Disable httpx and only output list of hosts that resolve to an internal IP address - default false [default: false]
--disableanalysis, -d
Disable analysis and only output list of hosts - default false [default: false]
--help, -h display this help and exit
输出
运行 surf 时,它将在 stdout 中打印出SSRF候选项,但它还将在运行的文件夹中保存两个文件:
external-{timestamp}.txt- 可以外部解析,但无法从您的机器发送HTTP请求internal-{timestamp}.txt- 可以内部解析,并且显然无法从您的机器发送HTTP请求
这两个文件将包含最理想的SSRF候选主机列表,以在目标上尝试。外部目标列表的可行性比内部列表更高。
致谢
在幕后,该工具利用 httpx 进行HTTP探测。它捕获httpx返回的错误,然后执行一些基本分析,以确定最适合SSRF的候选者。
该工具是作为HackerOne的一次现场黑客活动(H1-4420 2023)的结果而创建的。