公粽号:黒掌
一个专注于分享网络安全、黑客圈热点、黑客工具技术区博主!
一 前言
发现此漏洞的漏洞赏金计划不允许公开披露,因此我不会直接使用涉及的系统名称。该项目是发布在Hackerone时间最长漏洞奖金最大的项目之一, Hackerone上有很多关于该项目的黑客事件。这是一家很强大的公司,拥有世界一流的安全团队并且多年来有大量安全专家对这家公司进行测试,这使该漏洞的存在更加令人惊讶。
二 侦查
一般来说,对于一个大范围的漏洞赏金项目,我会进行子域名枚举来增加攻击面,但在本例中,我专注于单一的web目标系统。因为我只关注一个web应用程序,所以我首先使用GAU(https://github.com/lc/gau) 工具获取url和参数列表。我还查看了各种javascript文件中隐藏的参数,并使用Ffuf(https://github.com/ffuf/ffuf) 工具进行了一些目录模糊处理。通过这些方法,我发现了一些有趣的参数,但没有发现什么脆弱点。
由于第一种侦查方法没有发现任何问题,因此我尝试了另一种方法。在后台运行Burp代理测试Web应用程序的各种功能,发出的所有请求都存储在Burp中,这使我可以轻松查看所有请求中是否有有趣或潜在的漏洞。在测试了Web应用程序的功能之后,我开始浏览存储在代理日志中的请求,并遇到了类似于以下的请求
GET /xxx/logoGrabber?url=http://example.com
Host: site.example.com
...
带有url参数的GET请求。此请求的响应如下所示,其中包含有关URL的标题和徽标的信息:
{
"responseTime":"99999ms","grabbedUrl":"http://example.com","urlInfo":{
"pageTitle":"Example Title","pageLogo":"pagelogourl"}}
该请求立即引起了我的兴趣,因为它正在返回有关URL的一些数据。每当您遇到从URL返回信息的请求时,最好测试一下SSRF。
三 发现SSRF
我第一次尝试SSRF失败,我能够与服务器进行外部交互,但由于受到了适当的保护,因此无法访问任何内部IP地址。
在无法访问任何内部IP地址之后,我决定查看是否可以访问该公司的任何公众已知的公司子域。我为目标做了一些子域枚举,然后对所有枚举的子域名进行尝试。最终,我很幸运,发现一些无法公开访问的站点返回了标题数据等信息。
举一个子域名(somecorpsite.example.com)的例子:当我尝试http://somecorpsite.example.com 在浏览器中访问时,该请求超时。但当我提交请求时:
GET /xxx/logoGrabber?url=http://somecorpsite.example.com
Host: site.example.com
...
响应包含内部标题和徽标信息:
{
"responseTime":"9ms","grabbedUrl":"http://somecorpsite.example.com","urlInfo":{
"pageTitle":"INTERNAL PAGE TITLE","pageLogo":"http://somecorpsite.example.com/logos/logo.png"}