WebLogic 任意文件上传漏洞

WebLogic 任意文件上传漏洞

Posted by 看不尽的尘埃 on September 24, 2019

前言

最近在给公司写指纹规则、漏洞检测和利用规则,因此漏洞复现的文章更新会比较频繁。

0x00 漏洞介绍

  • 漏洞名称:WebLogic 任意文件上传漏洞
  • CVE编号:CVE-2018-2894
  • 发布时间:2018-07-18
  • 漏洞说明:Weblogic Web 服务测试客户端,其配置页面存在未授权访问的问题,路径为/ws_utc/config.do。 攻击者访问config.do配置页面,先更改Work Home工作目录,用有效的已部署的Web应用目录替换默认的存储JKS Keystores文件的目录,之后使用”添加Keystore设置”的功能,可上传恶意的JSP脚本文件。
  • 影响范围:10.3.6.0, 12.1.3.0, 12.2.1.2, 12.2.1.3
  • 修复建议:关闭Weblogic Web 服务测试客户端

0x01 环境配置

像Weblogic这类漏洞,还是使用docker环境比较方便,这里推荐一下Vulhub,里面好多漏洞环境,使用起来也非常得简单: 只要先启动docker,在输入以下命令就可以: docker-compose up -d 启动后,我们访问7001端口就会出现以下界面: 图片 由于这个漏洞比较鸡肋,需要网站管理员开启Weblogic Web 服务测试客户端,因此我们需要知道管理员的账号密码。 我们可以通过以下命令来获取到:

docker-compose logs | grep password

图片 知道了账号密码后,我们登录管理页面模拟管理员来开启这个选项: 图片

图片

在勾上”启动Web服务测试页”这个选项后,退出登录,访问以下链接:

http://10.20.40.96:7001/ws_utc/config.do

可以看到这是一个未授权的页面,首先需要修改Work Home Dir,这边设置/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css 图片

我们可以在这里上传WebShell,如下图数据包所示,我先测试成上传了一个jsp HelloWorld: 图片

<%@ page import="java.util.*,java.io.*,java.net.*"%>
<HTML><BODY>
<%
out.println("Hello dbappsecurity");
%>
</pre>
</BODY></HTML>

图片

然后我再尝试上传了一个JSP Webshell: 图片

图片

0x02 Web指纹

对于Weblogic的指纹,我也是想了好久,从被动的指纹探测中是无法实现指纹的识别的,因为Weblogin有一些首页是404页面,所以采取了主动策略进行指纹识别。

0x03 总结

1、由于这个漏洞不太好自动化漏洞利用。因为目录不一定是固定的,目前做到了Linux平台漏洞利用。Linux下概率比较大,Windows的话概率就比较小了,Linux的话默认路径应该是这个/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css。 2、在上传WebShell的时候也遇到了一个问题,有的一些JSP Webshell上传后会报错,但是放到Tomcat中是可以执行的,很奇怪。 图片