千家信息网

Weblogic漏洞CVE-2019-2725的示例分析

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这篇文章给大家介绍Weblogic漏洞CVE-2019-2725的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。0x01 概述0x02 深入构造方法可以参考这个CVE-2
千家信息网最后更新 2024年11月26日Weblogic漏洞CVE-2019-2725的示例分析

这篇文章给大家介绍Weblogic漏洞CVE-2019-2725的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

0x01 概述

0x02 深入

构造方法可以参考这个CVE-2017-17485。

先看看这个漏洞的payload。

再看看如何利用这个漏洞,我们发现这个漏洞利用方式是通过org.springframework.context.support.FileSystemXmlApplicationContext这个方法去加载恶意xml文件,而在上面的xml文件中通过spel表达式可以触发相关payload。

回到本次 weblogic 上, weblogic 也有这个相关构造函数,所以我们可以使用这个payload先试试,测试过程中发现无法使用,深究一下看一下代码,我们发现 weblogic 解析 xml 文件的类com.bea.core.repackaged.springframework.beans.factory.support.BeanDefinitionValueResolver

我在这里打一个断点,这样进入

com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext之后的操作就很明显。

这个地方和 CVE-2017-17485 的payload触发位置相比,少了一个表达式解析方法

Object valueObject=evaluate(TypedStringValue)

也就是说这里xml没办法通过类似对 #{ pb.start() } 开始针对 pb 这个 bean 进行操作。所以说这里需要调整理一下 payload ,我调整后的结果如下所示。

关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种:第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

第二种是:通过在xml中定义init-method 和 destory-method方法

第三种是: 通过bean实现InitializingBean和 DisposableBean接口

CVE-2017-17485 这个漏洞的触发 payload 用的是 spel 表达式的方法注册 bean ,而我们这里由于缺少相关解析文件无法使用 spel 表达式,这里可以使用 init-method 方法来解决这里这个问题,可以先看一个例子

测试程序如下:

public class TestInitMethod{public void testInit(){System.out.println("test init-method");        }}

配置文件如下:

//spring.xml

Main主程序如下:

public class Main {public static void main(String[] args){ClassPathXmlApplicationContext context1 = new ClassPathXmlApplicationContext("spring.xml");  }  }

打印如下结果:

test init-method

这里为什么没办法支持 spel ,我的想法可能是因为spring版本过低,所以没办法支持spel表达式。当然FileSystemXmlApplicationContext是继承AbstractXmlApplicationContextClassPathXmlApplicationContext也是继承AbstractXmlApplicationContext。所以理论上这个类也可以,试试看,OK确实也可以。

关于Weblogic漏洞CVE-2019-2725的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0