1、背景
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
2、成因
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容、加载指定地址的图片、下载等。
3、攻击类型
1.可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息。
2.攻击运行在内网或本地的应用程序(比如溢出)。
3.对内网web应用进行指纹识别,通过访问默认文件实现。
4.攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等)。
5.利用file协议读取本地文件等。
4、漏洞挖掘
漏洞挖掘方法分为两种:
从WEB功能上寻找
从URL关键字寻找
常见WEB功能:
1)分享:通过URL地址分享网页内容
2)转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
3)在线翻译:通过URL地址翻译对应文本的内容。
4)图片加载与下载:通过URL地址加载或下载图片。
5)图片、文章收藏功能
常见URL关键字:
share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain
5、绕过方式
1)使用@
http://[email protected] http://A.com:[email protected]
2)ip地址转换成进制
115.239.210.26 = 16373751032
3)使用短地址来生成内网地址
http://10.10.116.11 http://t.cn/RwbLKDx
4)端口绕过
5)xip.io
http://tp.chinaso.com/web?url=http://www.10.10.0.179.xip.io&fr=client 10.0.0.1.xip.io 10.0.0.1 www.10.0.0.1.xip.io 10.0.0.1 mysite.10.0.0.1.xip.io 10.0.0.1 foo.bar.10.0.0.1.xip.io 10.0.0.1
6)通过js跳转
6、修复方案
1.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
2.统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
3.限制请求的端口为http常用的端口,比如,80、443、8080、8090。
4.黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。
5.禁用不需要的协议。仅仅允许http和https请求。