SSRF
概念
由攻击者构造,从而让服务端发起请求的一种安全漏洞,它将一个可以发起网 络请求的服务当作跳板来攻击其他服务。
产生原因
由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制
比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等
常见产生点
- weblogic中间件
- php代码
file_get_content(),curl-curl_exec(),socket-fsockopen() - ffmpeg软件
SSRF利用
1.可以对外网,服务器所在内网,本地进行端口
扫描,获取一些服务的banner信息
2.可以攻击在内网或本地的应用程序(溢出)
3.对内网web应用进行指纹识别,通过访问默认文件实现
4.攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如Struts2,sqil等)
5.利用file协议读取本地文件
如何挖掘SSRF漏洞
web
分享:通过URL地址分享网页内容
转码服务:通过URL地址把原地址的网页调优使其适合手机屏幕浏览
在线翻译:通过URL地址翻译对应文本的内容
图片加载与下载:通过URL地址加载或下载图片
图片,文章的收藏功能
URL关键字寻找
share,wap,url,link,src,source,
target,u3g,display,sourceURL,
imageURL,domain等
SSRF漏洞的验证
排除法:
查看请求对象--服务端发起的请求,在本地浏览器的请求中就不存在对目标(图片等)的请求
验证是否可以探测内网:
验证查看此URL是否可以请求对应的内网地址。
首先获取内网存在HTTP服务并且存在favicon.ico文件的地址,才可以验证
找存在HTTP服务的内网地址
1.从漏洞平台的历史漏洞寻找泄露的存在web应用的内网地址
2.通过二级域名暴力猜解工具模糊内网地址
过滤绕过:
1.使用@:a.com@10.10.10.10
a.com:b@a10.10.10.10
2.ip地址转换成进制:127.0.0.1 =2130706433,115.239.210.26=16373751032
3.使用短地址来生成内网地址:heep://10.10.116.11=http://t.cn/RwblKDx
4.端口绕过:内网编织者,
http://tieba.baidu.com/f/commit/share/openShareApi?url=http://10.50.33.43:8080/
xip.io:xxx.127.0.0.1.xip.io = 127.0.0.1、foo.bar.10.0.0.1.xip.io = 10.0.0.1
5.通过JS跳转
修复方案
1.过滤返回信息,验证远程服务器对请求的响应是比较容易的方法
如果web应用是去获取某一种类型的文件,那么再把返回的结果展示给用户之前先验证返回的信息是否符合标准
2.统一错误信息,避免用户可以根据错误信息来判断远程服务器的端口状态
3.闲置请求的端口为http常用的端口,比如:80,443,8080,8090
4.黑名单内网IP,避免应用被用来获取内网数据,攻击内网
5.禁用不需要的协议,仅允许http和https的请求
自动化挖掘
burpsuite插件自动化监测
扩展
SSRF攻击实例解析:http://www.freebuf.com/articles/web/20407.html
利用SSRF漏洞接管APP服务器:http://bobao.360.cn/learning/detail/2870.html
SSRF漏洞的挖掘经验:https://sobug.com/article/detail/11
已经被发现的常见漏洞场景:
weblogic配置不当,默认存在SSRF漏洞
discuz x2.5/x3.0/x3.1/x3.2 SSRF漏洞
CVE-2016-1897/8 - FFMpeg
CVE-2016-3718 - ImageMagick