测试利用
以下是我发给Facebook的复现步骤:
1、打开Burp抓包工具,选择其中的“Burp Collaborator client”,生成一个Collaborator 域名,并复制:
2、打开“https://tinyurl.com/"网站,输入复制的Collaborator域名,生成tinyurl方式的短域名:
3、在以下链接,在“srcURL”参数处插入我们生成的tinyurl短域名,然后发起访问:
https://m-nexus.thefacebook.com/servlet/taskProc?taskId=shortURL&taskEnv=xml&taskContentType=json&srcURL={YOUR_TINY_URL_HERE}
4、观察Burp Collaborator服务端的返回信息,可以看到,IP地址“199.201.64.1”对Burp Collaborator服务端发起了请求:
5、理论上看,这无疑是SSRF的前奏了,经whois记录查询,IP地址199.201.64.1确实属于Facebook所有:
6、为深入测试SSRF,我又构造了一个由内部IP地址(如123.10.123.10)生成的tinyurl短域名,形成srcURL参数值,发起请求后,无任何反应:
7、我又用127.0.0.1:8080构造了一个tinyurl短域名,形成srcURL参数值,发起请求后,Facebook服务端提示需要进行HTTP基本认证:
反复利用该方法,可以枚举出Facebook防火墙后的一系列内部IP地址和相关架构信息,于是我立马把该漏洞上报给了Facebook安全团队。但是之后,Facebook认为这不属于安全漏洞,......:
深入挖掘($1000)
利用上述发现,我尝试利用不同的SSRF测试姿势试图读取Facebook服务端的敏感信息,或是云端的实例数据,但经file://、dict://、ftp://、gopher://等一通操作之后,竟然都不成功,一无所获。
最终,我总算发现了几个像样的漏洞实例。如以下的这个XSS:
以及这个基于SSRF的钓鱼攻击,这里首先需要自架一个服务端,部署上伪造的Facebook登录页面: