BlogPapers

SummerSec

View on GitHub

漏洞环境的搭建

准备工作

搭建工作

   按需增删命令,笔者这里一般配置如下,注释掉删除的东西。

#!/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/

在这里插入图片描述    给脚本添加读写权限,执行脚本,等待几分钟就好了。 在这里插入图片描述 在这里插入图片描述


漏洞调试准备(需要调试分析的可以看看)


漏洞复现

   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