前言
简单整理一下漏洞中ssrf绕过的一些方法,希望在渗透测试中有更清晰的思路。
什么是SSRF
SSRF(Server-Side Request Forgery:服务器端请求伪造)是从服务端获取其他服务器信息的的功能。使用指定的URL,web应用可以获取图片,下载文件,读取文件内容等。这个功能如果被恶意使用,可以利用存在缺陷的Web应用作为代理,访问内网,攻击远程服务器,读取敏感信息等。
SSRF能做什么
1、SSRF到反射XSS
2、尝试利用URL访问内部资源并使服务器执行操作(http://,file:///, dict://, ftp://, gopher://..)
3、扫描内部网络和端口
4、如果它在云实例上运行,则尝试获取元数据
5、攻击内网应用程序
6、DoS攻击
SSRF怎么绕过
例如一处ssrf漏洞:http://example.com/?url=http://google.com/
IP与主机名
http://example.com/?url=http://66.102.7.147/
URL编码
http://example.com/?url=http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D
双字编码
http://example.com/?url=http://1113982867/
十六进制编码
http://example.com/?url=http://0x42.0x0000066.0x7.0x93/
八进制编码
http://example.com/?url=http://0102.0146.0007.00000223/
协议解析绕过
http://example.com/?url=//www.google.com/
使用@(%40)
http://example.com/?url=http://[email protected]/
使用#(%23)
http://example.com/?url=http://google.com#http://example.com
添加端口号
http://example.com/?url=http://google.com:443
授信域名重定向
http://example.com/?url=http://abc.com/?redirect=https://google.com
定制DNS服务
这些网站可以使用它们将其指向特定的IP
http://xip.io/
http://nip.io/
https://ip6.name/
https://sslip.io/
比如:10.0.0.1.xip.io -->10.0.0.1
也可以创建一个子域并使用DNS A记录指向192.168.0.1
使用封闭式数字字母
http://ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ = example.com
如何防范
1.禁止跳转
2.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
3.禁用不需要的协议,仅仅允许http和https请求。可以防止类似于file://, gopher://, ftp:// 等引起的问题
4.设置URL白名单或者限制内网IP(使用gethostbyname()判断是否为内网IP)
5.限制请求的端口为http常用的端口,比如 80、443、8080、8090
6.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
参考链接
http://byd.dropsec.xyz/2017/11/21/SSRF%E7%BB%95%E8%BF%87%E6%96%B9%E6%B3%95%E6%80%BB%E7%BB%93/