1 SSRF漏洞介绍
-
SSRF(Server Side Request Forgery服务端请求伪造),是一种由攻击者构造但是由服务端发起请求的一个安全漏洞。SSRF的攻击目标一般是从外网无法访问的内部服务器。
-
SSRF的危害
(1)对内网进行端口扫描,web指纹获取等;
(2)攻击内网或本地的应用程序,例如sql注入、struts2、redis等;
(3)利用file协议进行本地文件读取;
2 SSRF漏洞的原理
-
SSRF漏洞原理
(1)攻击者可以通过公网访问到某个web服务器;
(2)但是攻击者是无法通过公网访问到内网的其他设备或者办公区域;
(3)这时候如果想进行内网探测,web服务器同时存在SSRF漏洞,就能以web服务器作为跳板,进而攻击其他服务器或区域。
-
SSRF利用的条件:
(1)web服务器存在SSRF漏洞;
(2)web服务器有访问本地或远程服务器的权限;
-
SSRF存在的位置:一般是web服务器提供了从其他服务器获取数据的功能。
(1)通过URL分享网页内容
(2)在线翻译
(3)通过url对图片的加载和下载
(4)转码服务
这本来是一个正常的功能,但是一般被恶意利用,就能让被攻击的web服务器作为跳板进而来入侵其他可以访问的本地或远程服务器。
-
SSRF的挖掘,看URL是否有关键字“XX=”
Share、wap、url、link、src、source、target、u、3g、display、 sourceURL、imageURL、domain
3 SSRF利用实验
3.1 实验1:远程文件包含进行端口扫描(内网探测)
1. 第一步:在php.ini配置文件中,开启以下两个选项,并重启phpstudy。
allow_url_include = On #默认关闭
allow_url_fopen = On
2. 第二步:登录bwapp,并找到对应的漏洞
3. 第三步:利用的url格式为
http://localhost/bwapp/bwapp/rlfi.php?language=http://localhost/bwapp/evil/ssrf-1.txt&action=go
3.2 实验2:使用 XXE 获取敏感文件中的内容(文件读取)
1.利用的POC
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE root [ <!ENTITY bWAPP SYSTEM "http://localhost/bWAPP/bwapp/robots.txt"> ]> <reset><login>&bWAPP;</login><secret>blah</secret></reset>
3.3 实验3:对于包含特殊内容的文件
1.利用的POC如下:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE root [ <!ENTITY bWAPP SYSTEM "php://filter/read=convert.base64-encode/resource=http://localhost/bWAPP/bwapp/passwords/heroes.xml"> ]> <reset><login>&bWAPP;</login><secret>blah</secret></reset>
4 SSRF漏洞防御
-
在URL中过滤掉内网IP段,比如10.0.0.8/24 、172.16.0.0/16、192.168.0.0/16、localhost等
-
过滤掉不常用但是有危险的协议file:///、dict://、gopher://、ftp://等
-
对返回内容进行识别,避免泄露信息
-
对报错信息统一规划,避免泄露服务状态信息
-
内部对访问进行二次认证
-
最佳策略还是开启白名单,只允许必要的地址访问;对返回内容进行识别;无法使用白名单就禁用CURLOPT_FOLLOWLOCATION;
来源:freebuf.com 2020-08-25 17:12:06 by: zhijian
请登录后发表评论
注册