BECL 利用链使用条件及原理

1. BECL 利用链核心原理

BECL 利用链的核心原理可以概括为:利用一个看似无害的内部类,间接调用受限的命令执行函数

它主要利用了 com.bea.core.event.JmsEvent 类及其相关类的反序列化过程。当一个 JmsEvent 对象被反序列化时,它会触发一系列的事件监听器,其中一个监听器会调用 execute() 方法来执行一个命令

BECL 的攻击链通常如下:

  1. 构造恶意对象: 攻击者首先构造一个恶意的 Java 对象,该对象包含一个指向目标命令执行函数的引用。这个对象通常会利用 Java 的反射机制,指向 java.lang.Runtime 类的 exec() 方法
  2. 触发点:com.bea.core.events.JmsEvent: 攻击者将上述恶意对象封装在一个 JmsEvent 对象中。当这个 JmsEvent 对象被反序列化时,它会触发 readObject() 方法
  3. 事件监听:com.bea.core.events.SerializableEventListenerJmsEvent 的反序列化会调用 com.bea.core.events.SerializableEventListenerhandleEvent() 方法
  4. 命令执行:java.lang.Runtime.exec()SerializableEventListenerhandleEvent() 方法会进一步调用攻击者预设的恶意对象,最终导致 java.lang.Runtime.exec() 方法被执行,从而在服务器上执行任意系统命令

简单来说,BECL 利用链就像一个接力赛:

  • 第一棒(攻击者): 构造恶意序列化数据
  • 第二棒(JmsEvent): 接收并开始反序列化
  • 第三棒(SerializableEventListener): 自动被触发,并调用下一步
  • 第四棒(反射调用): 恶意代码被执行,如 Runtime.exec("your_command")

这个过程巧妙地绕过了黑名单,因为被直接反序列化的 JmsEvent 类本身是 WebLogic 内部的合法组件,并不在黑名单上

3. BECL 利用链的使用条件

要成功利用 BECL 攻击链,必须满足以下几个关键条件:

  1. 存在反序列化漏洞: 这是所有反序列化漏洞利用的前提。目标服务器必须存在一个可被攻击者控制的、未经验证的反序列化入口点。例如,t3IIOP 等协议都是常见的反序列化入口点
  2. 目标为 WebLogic Server: BECL 利用链的 Gadget Chain 是WebLogic 独有的。因为它依赖于 com.bea.core.event 这个特定于 WebLogic 的类库。因此,这个利用链不适用于 JBoss、Tomcat 或其他应用服务器
  3. 未修补的 WebLogic 版本: 漏洞利用链通常依赖于特定版本的软件。BECL 链主要影响较早版本的 WebLogic Server,特别是那些已经部署了黑名单,但仍未修复此漏洞的版本
  4. 可被利用的 JRE 类库: 尽管 BECL 的核心 Gadget 在 WebLogic 中,但它通常还需要依赖 Java 环境中的其他类,比如 java.lang.reflect 等,来完成反射调用
Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-25 03:12:55

results matching ""

    No results matching ""