什么是SSRF?
服务器端请求伪造(SSRF)是一种漏洞,攻击者可以欺骗服务器向攻击者通常无法访问的内部或外部系统发送 HTTP 请求。
该漏洞可导致:
- 访问仅限内部的服务的(例如数据库、管理面板)
- 扫描内部网络并发现开放的端口
- 从云端元数据服务中查询敏感数据
- 绕过 IP 限制或防火墙
漏洞详情
目标服务运行在:
https://thumbnail.example.com/?url=<external_url>
该服务从外部 URL 获取图片以生成在其平台上显示的缩略图。
目标已设置了保护机制,阻止了内部资源的访问,假如尝试:
https://thumbnail.example.com/?url=http://localhost:443
服务器会返回错误信息。
在侦察时,偶然遇到了一个有趣的第三方域名 blip.bizrate.com ,该域名下有一个端点:
https://blip.example.com/flip?u=https://evil.com
当使用浏览器打开该 URL 时,它直接重定向到了 https://evil.com 。
将开放重定向链式触发到 SSRF
如果不能直接请求 localhost,那么通过一个可信域进行重定向会怎样呢?
https://thumbnail.example.com/?url=https://blip.example.com/flip?u=http://localhost:80
当访问以上 URL 时,服务器响应了如下信息:
dial tcp 127.0.0.1:80: connect: connection refused
通过以上这种方法,可以轻松对目标服务端口进行扫描。
白帽小哥第一时间上报了漏洞,并顺利获得了漏洞赏金。
原文:https://infosecwriteups.com/from-open-redirect-to-internal-access-my-ssrf-exploit-story-10a736962f98