前几天360冰刃实验室的研究员洪祯皓发现了一个Hyper-V的漏洞,由于漏洞危险级别高,影响范围广,微软在确认漏洞细节后第一时间确认奖金并致谢漏洞发现者。
奖金总额高达20万美元约合人民币137万,这也是微软史上送出的最高一笔漏洞挖掘奖励。、
挖漏洞还能拿这么多钱,白帽子们已然坐不住,都想跃跃欲试了,那么今天i春秋与大家分享一篇关于SSRF漏洞挖掘的思路与技巧,希望对大家有所帮助,年底赚些钱就当给自己发年终奖了,哈哈。
什么是SSRF
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
通俗的说,比如这样一个url:,如果我们将换为与该服务器相连的内网服务器地址会产生什么效果呢?比如127.0.0.1、10.0.0.1、192.168.1.1等等,如果存在该内网地址就会返回1xx 2xx 之类的状态码,不存在就会返回其他的状态码,所以如果应用程序对用户提供的URL和远端服务器返回的信息没有进行合适的验证和过滤,就可能存在这种服务端请求伪造的缺陷。
说到这里,先提两个问题:
1、为什么要请求127.0.0.1、10.0.0.1、192.168.1.1呢?有什么区别呢?
答:127.0.0.1只是代表你的本机地址,如果该网站只有一个服务器的情况下,是可以访问127.0.0.1来判断的,但要明确一点,127.0.0.1其实并不是内网地址,内网地址是有严格的地址段的,这是ipv4地址协议中预留的,分别是
10.0.0.0--10.255.255.255、
172.16.0.0--172.31.255.255 、
192.168.0.0--192.168.255.255。
2、如果请求地址会返回状态码,那请求地址+端口会不会返回状态码呢?
答:提出这个问题的同学应该是相当clever的,答案是肯定的,当然会返回状态码。只是探测内网地址的话属实不够看的,所以如果一个点存在SSRF,那势必要尝试一下能不能探测内网端口,比如&#x