升级您在现代云环境中的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漏洞

 

ad1a1b7183235414


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)的结果而创建的。

标签:工具分享, SSRF