一、什么是SSRF漏洞
SSRF (Server-Side Request Forgery:服务器端请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的,所以服务端能请求到与自身相连而与外网隔离的内部系统。
二、SSRF漏洞原理
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制。比如,黑客操作服务端从指定URL地址获取网页文本内容、加载指定地址的图片、视频、文件下载等操作。利用的是服务端的请求伪造。ssrf是利用存在缺陷的web应用作为代理攻击远程和本地的服务器,简单来说就是黑客让服务端攻击其内网服务器。如下图所示。
三、识别SSRF漏洞
1.加载图片
比如某个web服务器可以显示一些图片内容,链接如下:http://www.xxx.com/image.php?url=http://www.123xx.com/1.jpg。
这个网站存在SSRF漏洞,可以将url后面写网址改成内网网址。
2.具有分享功能的网站
通过url地址分享网页内容
3.图片,文件收藏功能
比如链接:http://qdv.sdg.com/title?title=http://qdv.sdg.com/sdswfz
该链接title参数后面所跟的网页地址代表收藏文章,此处如果服务端没有对参数进行检测限制的情况下可能存在SSRF漏洞。
总结:简单来说就是服务器端能够对外发起网络请求的地方,都有可能存在SSRF漏洞。
四、SSRF案例分析
以pikachu靶场为例
环境:一台攻击者电脑记作PC-A,一台具有pikachu站点的服务器记作PC-B,一台与pikachu服务器同一个内网的电脑记作PC-C。
PC-B:
公网地址:192.168.213.132(此处用虚拟机测试,大家可以想象成公网IP)
内网地址:10.0.0.5
PC-C:
内网地址:10.0.0.6
1.开启PC-B运行pikachu站点。
2.PC-A打开pikachu站点
3.利用SSRF漏洞读取PC-C电脑上password.txt文件。
并且还可以读取本地敏感文件如windows系统中的win.ini文件
同时,还可以测试端口开放情况,如下图所示,测试本地电脑80端口,3306端口
五、SSRF防御手段
(1)过滤10.0.0.0/8 、172.16.0.0/12、192.168.0.0/16、内网私有地址、IPv6地址。
(2)禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问
题。
(3)在防火墙上设置URL白名单或者黑名单内网IP。
(4)过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型
的文件,那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
(5)url网址写死,固定几个网址,其他网址一律不允许访问。