白帽故事 · 2024年12月18日 0

从 Wayback Machine 到 AWS 元数据:5 分钟内发现生产系统中的 SSRF

前言

wayback machine,这是一个获取隐藏 URL 的伟大工具。通过以下URL即可轻松获取 URL:

https://web.archive.org/cdx/search/cdx?url=*.redacted.com/*&output=text&fl=original&collapse=urlkey&filter=statuscode:200

当选择一个网站(例如上面 URL 参数中的 redacted.com)时,我们可以 wayback url 中寻找 API 端点和有价值的参数,如 getImage、 url 、 path 等。

漏洞发现

在一次搜索中,白帽小哥发现了一个可以用于生成 PDF 的 API,参数作为 GET 参数进行传递,URL看起来如下;

https://redacted.com/pdf-service?path=/test/testpage

白帽小哥开始尝试读取一些本地文件,但没有发现任何重要内容:

https://redacted.com/pdf-service?path=/../../../../../../../../etc/passwd

然后白帽小哥尝试传递一个URL给这个参数:

https://redacted.com/pdf-service?path=somethinglikethis.com

同样失败,但却收到了这个请求一些内部报错,于是白帽小哥开始尝试一些字符,看能否绕过该验证:

https://redacted.com/pdf-service?path=@google.com

成功!可以在 PDF 中看到谷歌页面。

这是一个 PDF 生成器,它会将页面转换为 PDF。然后白帽小哥用collaborator URL 试了试,发现该服务器部署在 AWS ec2 上。并且可以看到AWS ec2的几个 IP 地址。

file

于是白帽小哥开始尝试获取AWS元数据,但却看到的是一个空白的 PDF 页面。

这是因为当服务器无法访问一个域名时,它会返回了一个内部服务器错误。

经过一些尝试后,白帽小哥顺利获得服务器 200 状态响应并返回了 AWS 元数据:

file

file

其实这时候已经足够报告漏洞了,但白帽小哥对内部网络心生好奇。

因为这是一个生产环境,白帽小哥发现了一些内部域名。

file

于是小哥尝试从 localhost 获取一些端口,并成功得到了 3000 端口,这是 nodejs 端口。

但经过几番尝试后,小哥发现扫描 localhost 会导致拒绝服务,于是小哥不得不停止了扫描,只好乖乖地迅速报告漏洞,静静地等待赏金奖励。

你学到了么?

以上内容由骨哥翻译并整理。

原文:https://medium.com/@gguzelkokar.mdbf15/from-wayback-machine-to-aws-metadata-uncovering-ssrf-in-a-production-system-within-5-minutes-2d592875c9ab