SSRF漏洞复现
1.SSRF简介(原理)
SSRF是一种由恶意访问者构造,形成由服务器端发起请求的一种安全漏洞。
一般情况下,ssrf访问的目标是外网无法访问的内部系统(正是因为请求是由服务端发起的,所以能够请求到与它相连,与外界隔离的内部系统)
**原理:**服务端提供了从其他服务器获取数据的能力,但是并没有对目标地址做过滤或者限制,所以导致攻击者可以向受害者服务器传入任意的url,并将请求数据返回。
1.2危害
- 对服务器所在的内网进行端口扫描,获取一些服务的banner信息
- 攻击运行在内网或本地的程序
- 对内网的web应用进行指纹识别,识别企业的内部信息
- 利用file协议读取本地文件
- 攻击内外网的web应用,主要是使用http,get请求就可以实现的攻击(如struts2,SQLi)
1.3常见ssrf漏洞的位置
- url地址分享的页面
- 转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览
- 在线翻译:给网址翻译对应网页的内容
- 图片加载与下载: 通过URL地址加载或下载图片,图片加载远程图片地址此功能用到的地方很多,但大多都是比较隐秘,比如在有些公司中的加载自家图片服务器上的图片用于展示。
- 图片、文章收藏功能
此处的图片、文章收藏中的文章收藏就类似于功能一、分享功能中获取URL地址中title以及文本的内容作为显示,目的还是为了更好的用户体验,而图片收藏就类似于功能四、图片加载。
1.4ssrf防御
- 过滤返回信息,如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
- 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
- 限制请求的端口为http常用的端口,比如,80,443,8080。
- 黑名单内网ip。避免应用被用来获取内网数据,攻击内网。
- 禁用不需要的协议。仅仅允许http和https请求。
2.模拟weblogic的ssrf漏洞实验
漏洞描述
Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件。
影响版本
weblogic 10.0.2
weblogic 10.3.6
漏洞修复
Weblogic SSRF 漏洞出现在 uddi 组件(所以安装Weblogic时如果没有选择 uddi 组件那么就不会有该漏洞),
更准确地说是 uudi 包实现包 uddiexplorer.war 下的 SearchPublicRegistries.jsp。
所以修复的直接方法是将 SearchPublicRegistries.jsp 直接删除就好了
源码分析:https://zhuanlan.zhihu.com/p/266211467
2.1打开centOS7的虚拟机,启动docker
systemctl start docker
2.2进入vulhub/weblogic/ssrf/中
打开靶场说明书
gedit README.md或者
cat README.md
2.3启动靶场,进入对应网址
docker-compose up -d
在浏览器中打开http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp
2.4使用bp抓包,发送Repeater模块
2.5复制说明书中的代码粘贴到GET请求后
2.6 将复制的代码粘贴到GET请求的位置,然后获取Weblogic的ip、本机IP替换掉原有IP并把本机ip端口改为4444
2.6.1获取weblogic的ip
查看容器的id
docker ps -a
查看weblogic的ip
docker inspect 容器id
docker inspect 96330d40bda2
Weblogic 的 SSRF 有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入%0a%0d来注入换行符,
而某些服务(如 redis)是通过换行符来分隔每条命令,也就说我们可以通过该 SSRF 攻击内网中的 redis 服务器。
首先,通过 ssrf 探测内网中的 redis 服务器,应为这个漏洞是用 docker 环境搭建的,所以 redis 服务器的内网即是
需要替换的地方
替换之后
2.7 在虚拟机上开启监听,发送数据包
nc -lvnp 4444
确认替换正确之后,点击发送send
2.8监听成功,获得getshell权限
2.9 移除环境,关闭容器
docker-compose down
systemctl stop docker