漏洞环境的搭建
准备工作
- 下载脚本:Weblogic环境搭建工具并下载对应的jdk和weblogic
- 虚拟机:全新Ubuntu18.04(root权限)RAM 4G ROM 60G
- 本机:Windows10
- 网络本机与虚拟机能够ping通 —
搭建工作
按需增删命令,笔者这里一般配置如下,注释掉删除的东西。
#!/bin/bash
#docker rm `docker ps -a | grep weblogic | awk '{print $1}'` -f
#docker rmi -f `docker images | grep 'weblogic' | awk '{print $3}'`
docker build --build-arg JDK_PKG=jdk-8u102-linux-x64.tar.gz --build-arg WEBLOGIC_JAR=fmw_12.2.1.3.0_wls.jar -t weblogic12213jdk8u102 .
docker run -d -p 7001:7001 -p 8453:8453 -p 5556:5556 --name weblogic12213jdk8u102 weblogic12213jdk8u102
#rm -rf ./weblogic12213jdk8u102
mkdir ./weblogic12213jdk8u102
docker cp weblogic12213jdk8u102:/u01/app/oracle/middleware/wlserver ./weblogic12213jdk8u102/
给脚本添加读写权限
,执行脚本,等待几分钟就好了。
漏洞调试准备(需要调试分析的可以看看)
- 复制需要的东西,然后用idea打开。
- Debug配置文件
- 添加lib
- 调试idea专业插件推荐分享,两款插件功能类似。 第一款效果图 第二款效果图
漏洞复现
Github下载源码 https://github.com/SummerSec/JavaLearnVulnerability 建议直接git,release包源码不全。修改端口,主机号,然后运行就可。
漏洞复现遇见的坑
防火墙问题
Payload发送后,建立TCP连接,紧接着第一个GIOP协议数据包,请求Weblogic的NameServer服务地址。
第一个GIOP协议回复请求数据包,告知客户端NameServer地址。
问题出现在第三步,客户端发送恶意请求payload时,得服务器Weblogic会与客户端建立TCP连接,来达到绑定1389端口的目的(ldap端口)。连接建立不成功,一开始想的是以为是服务器的防火墙拦截了,后来认真一分析,192.168.116.146(Weblogic地址)
请求192.168.116.1(本机地址)
地址建立请求失败,然后猜是不是本机的防火墙或者是杀毒软件的原因。关了果然是Windows 10 defender原因。ps:下图可以对比参照
NAT网络问题具体解决方法
解包jar包
执行命令jar xvf wlfullclient.jar
将jar包中class文件解压到当前目录下
解压之后的结果
反编译代码
使用jad
去反编译class,将其变成java代码,亦或者使用其他的软件反编译。
执行jad IOPProfile.class
生成IOPProfile.jad
,将其修改成IOPProfile.java
然后修改对应需要内容。参考文章手把手教你解决Weblogic CVE-2020-2551 POC网络问题
重新编译
使用命令javac -classpath wlfullclient.jar IOPProfile.java
, -classpath
参数一定是wlfullclient.jar对应的相对或者是绝对路径。
重新打包
重新打包的话我为了方便使用解压软件直接替换class文件,直接覆盖就行。
参考
https://www.t00ls.net/viewthread.php?tid=48166&highlight=%E7%A0%B4%E8%A7%A3%2BRabbittb https://xz.aliyun.com/t/7498 https://xz.aliyun.com/t/7374#toc-10 https://xz.aliyun.com/t/7374