Add files via upload

This commit is contained in:
雾島风起時
2025-09-25 03:55:13 +08:00
committed by GitHub
parent 6eda7b2da8
commit 2efe415c28
12 changed files with 430 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
### 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.SerializableEventListener`** `JmsEvent` 的反序列化会调用 `com.bea.core.events.SerializableEventListener``handleEvent()` 方法
4. **命令执行:`java.lang.Runtime.exec()`** `SerializableEventListener``handleEvent()` 方法会进一步调用攻击者预设的恶意对象,最终导致 `java.lang.Runtime.exec()` 方法被执行,从而在服务器上执行任意系统命令
**简单来说,BECL 利用链就像一个接力赛:**
- **第一棒(攻击者):** 构造恶意序列化数据
- **第二棒(`JmsEvent`):** 接收并开始反序列化
- **第三棒(`SerializableEventListener`):** 自动被触发,并调用下一步
- **第四棒(反射调用):** 恶意代码被执行,如 `Runtime.exec("your_command")`
这个过程巧妙地绕过了黑名单,因为被直接反序列化的 `JmsEvent` 类本身是 WebLogic 内部的合法组件,并不在黑名单上
**3. BECL 利用链的使用条件**
要成功利用 BECL 攻击链,必须满足以下几个关键条件:
1. **存在反序列化漏洞:** 这是所有反序列化漏洞利用的前提。目标服务器必须存在一个可被攻击者控制的、未经验证的反序列化入口点。例如,`t3``IIOP` 等协议都是常见的反序列化入口点
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` 等,来完成反射调用