SSRF可以做什么
• 可以对外网服务器所在的内网、本地进行端口扫描,获取一些服务的 banner信息 。
• 攻击运行在内网或者本地的应用程序。
• 对内网web应用进行指纹识别,通过访问默认文件实现 。
• 攻击内外网的web应用。sql注入、struct2、redis等。
• 利用file协议读取本地文件等
攻击外网无法访问的内网
用户把数据给浏览器,浏览器把信息传给服务器,服务器去执行,执行结果返回浏览器,浏览器呈现给用户
有攻击者构造形成,由服务器发起请求的漏洞,一般攻击外网无法访问的内外
图片加载与下载
图片加载与下载:通过 URL地址加载或下载图片
图片加载远程图片地址此功能用到的地方很多,但大多都是比较隐秘,比如在有些公司中的加载自家 图片服务器上的图片用于展示。(此处可能会有人有疑问,为什么加载图片服务器上的图片也会有问题, 直接使用img标签不就好了,没错是这样,但是开发者为了有更好的用户体验通常对图片做些微小调整例 如加水印、压缩等,就必须要把图片下载到服务器的本地,所以就可能造成SSRF问题)。
SSRF漏洞挖掘
从URL关键字中寻找
• Share、wap、url、link、src、source、target、u、3g、display、 sourceURL、imageURL、domain
SSRF漏洞的验证
1.我们先验证,请求是否是服务器端发出的,可以右键图片,使用新窗口 打开图片,如果浏览器上地址栏是
http://www.baidu.com/img/bd_logo1.png,说明不存在SSRF漏洞。必须图片存到服务器中,而不是远程的链接
2.可以在Firebug 或者burpsuite抓包工具,查看请求数据包中是否包含 http://www.baidu.com/img/bd_logo1.png这个请求。由于SSRF是服务端 发起的请求,因此在加载这张图片的时候本地浏览器中不应该存在图片的 请求
3.在验证完是由服务端发起的请求之后,此处就有可能存在SSRF,接下 来需要验证此URL是否可以来请求对应的内网地址。首先我们要获取内网 存在HTTP服务且存在favicon.ico文件地址,才能验证是否是SSRF。
此处找内网地址可以通过从漏洞平台中的历史漏洞寻找泄露的内网地址
过滤绕过
@:
http://www.baidu.com@10.10.10.10与http://10.10.10.10 请求是相同的
IP地址转换成十进制: 127.0.0.1=2130706433
xip.io
127.0.0.1.xip.io -->127.0.0.1
www.127.0.0.1.xip.io -->127.0.0.1
Haha.127.0.0.1.xip.io -->127.0.0.1
Haha.xixi.127.0.0.1.xip.io -->127.0.0.1
修复方案
1.统一错误信息,避免用户可以根据错误信息来判断远程服务器端口状态
2.限制请求的端口为HTTP常用的端口,比如 80,443,8080,8088等
3.黑名单内网IP。
4.禁用不需要的协议,仅仅允许HTTP和HTTPS