amnsecurity/CVE-2024-52046-Apache-MINA-RCE

GitHub: amnsecurity/CVE-2024-52046-Apache-MINA-RCE

针对 Apache MINA 框架 ObjectSerializationDecoder 组件的反序列化 RCE 漏洞(CVE-2024-52046)提供 PoC 利用代码与详细技术分析。

Stars: 1 | Forks: 0

# ─── CVE-2024-52046 ─── CVSS 9.8
# 🏴 AMN SECURITY 🏴 ### 网络安全研究中心 | Cyber Security Research Center [![网站](https://img.shields.io/badge/Website-amn.amnoffsec.workers.dev-00FF00?style=for-the-badge&logo=googlechrome&logoColor=white)](https://amn.amnoffsec.workers.dev/) [![Instagram](https://img.shields.io/badge/Instagram-@ixctw-E4405F?style=for-the-badge&logo=instagram&logoColor=white)](https://www.instagram.com/ixctw) [![邮箱](https://img.shields.io/badge/Email-ayman.mahmoudoffsec%40gmail.com-D14836?style=for-the-badge&logo=gmail&logoColor=white)](mailto:ayman.mahmoudoffsec@gmail.com)

# ⚠️ Apache MINA 反序列化漏洞导致远程命令执行 ### CVE-2024-52046 | CVSS 9.8 | 极高危 (CRITICAL) ### 📋 执行摘要 **Apache MINA**(网络应用程序的多用途基础架构)库中存在一个极高危的安全漏洞,允许未经身份验证的攻击者通过发送特制的序列化数据(Serialized Data)来执行任意远程命令(RCE)。 该漏洞存在于 **ObjectSerializationDecoder** 组件中,该组件使用 Java 原生的反序列化协议(Native Deserialization)来处理传入数据,且没有足够的安全检查或控制措施。这允许利用不安全的反序列化链(Unsafe Deserialization)在服务器上执行恶意代码。 | 元素 | 详情 | |--------|----------| | **CVE** | CVE-2024-52046 | | **CVSS v3.1** | 9.8 (Critical) | | **向量** | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | | **类型** | 不可信数据反序列化 (CWE-502) | | **产品** | Apache MINA | | **组件** | ObjectSerializationDecoder | | **受影响版本** | 补丁前的所有版本 | | **影响** | 未经身份验证的远程命令执行 | | **复杂度** | 低 | ### 🔍 漏洞详情 Apache MINA 是一个用于在 Java 中开发网络应用程序的高性能网络框架。它被广泛应用于分布式系统、游戏服务器和 IoT 应用程序中。 **ObjectSerializationDecoder** 组件负责解码通过网络传入的序列化数据。问题在于它直接使用了 Java 中的 `readObject()` 方法,而没有验证数据的完整性或过滤允许的类。 #### Java 中的反序列化攻击是如何工作的? ``` بيانات متسلسلة واردة (بايت) │ ▼ ObjectSerializationDecoder.readObject() │ ▼ [لا يوجد تحقق أمني] ← الخلل هنا │ ▼ إنشاء كائنات Java من البيانات │ ▼ يمكن للمهاجم تضمين gadgets ضارة │ ▼ تنفيذ أوامر النظام ← RCE ``` #### 利用链 (Gadget Chain) ``` ObjectInputStream.readObject() │ ▼ HashMap.readObject() │ ▼ Runtime.exec() ← عبر سلسلة gadgets │ ▼ أمر النظام الهدف ← تنفيذ ``` #### 用于利用 Java 反序列化的常见 Gadget | 库 | Gadget | 状态 | |---------|-----------|--------| | Commons Collections 3.1 | AnnotationInvocationHandler | ✅ 最常见 | | Commons Collections 4.0 | TreeBag / TreeMap | ✅ 可用 | | JRE 8u20 | HashSet / Hashtable | ✅ 受限 | | Spring Beans | MethodInvoker | ✅ 可用 | | Groovy | MethodClosure | ✅ 可用 | | Jackson | ObjectMapper | ✅ 特定版本可用 | ### 💥 攻击机制 ``` ┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │ Attacker │ │ Target Server │ │ Vulnerable App │ │ (Unauth) │ │ (Apache MINA) │ │ (Java Runtime) │ └────────┬────────┘ └────────┬─────────┘ └────────┬─────────┘ │ │ │ │ 1. Scan for MINA │ │ │ service on network │ │ ├──────────────────────►│ │ │ │ │ │ 2. Send crafted │ │ │ serialized Java │ │ │ object payload │ │ ├──────────────────────►│ │ │ │ │ │ 3. MINA receives │ │ │ & deserializes ├────────────────────────►│ │ │ │ │ │ 4. Gadget chain │ │ │ activates │ │ │ ──► Runtime.exec() │ │ │◄────────────────────────│ │ │ │ │ 5. Command executed │ │ │ on target server │ │ │◄──────────────────────┤ │ │ │ │ ``` ### 🧪 工具使用 ``` # 使用 ysoserial 生成 payload java -jar ysoserial.jar CommonsCollections3 'id > /tmp/pwned' > payload.bin # 利用 Apache MINA python3 CVE-2024-52046.py -t 192.168.1.100 -p 8080 -c "id" # 服务扫描 python3 CVE-2024-52046.py -t 192.168.1.100 -p 8080 --check # 使用不同的 gadget python3 CVE-2024-52046.py -t 192.168.1.100 -p 8080 -c "whoami" \ --gadget CommonsCollections6 # 通过 proxy python3 CVE-2024-52046.py -t 192.168.1.100 -p 8080 -c "ipconfig" \ --proxy http://127.0.0.1:8080 # 交互模式 python3 CVE-2024-52046.py -t 192.168.1.100 -p 8080 --shell ``` #### 可用选项 | 选项 | 描述 | |--------|-------| | `-t, --target` | 目标服务器地址 | | `-p, --port` | Apache MINA 服务端口 | | `-c, --command` | 要执行的命令 | | `--check` | 仅检查漏洞是否存在 | | `--shell` | 交互式 shell 模式 | | `--gadget` | 指定 gadget chain(默认:CommonsCollections3) | | `--proxy` | HTTP 代理 | | `--ysoserial-path` | ysoserial.jar 路径 | | `-v, --verbose` | 显示详细输出 | ### 🛡️ 修复措施 | 措施 | 优先级 | 描述 | |---------|----------|-------| | **更新 Apache MINA** | 🟢 立即 | 将库更新到最新版本 | | **禁用 ObjectSerializationDecoder** | 🟢 紧急 | 使用安全的替代方案或禁用 Serialization | | **启用 Filtering** | 🟡 重要 | 使用 JEP 290 (ObjectInputFilter) | | **使用 Whitelist** | 🟡 重要 | 仅指定允许反序列化的类 | | **DMZ Network** | 🔵 持续 | 将暴露的服务与内部网络隔离 | #### 应用 JEP 290 (ObjectInputFilter) ``` // تطبيق فلتر على مستوى JVM ObjectInputFilter filter = ObjectInputFilter.Config .createFilter("!com.example.*;java.base/*;!*"); ObjectInputFilter.Config.setSerialFilter(filter); // أو على مستوى ObjectStream ObjectInputStream ois = new ObjectInputStream(inputStream); ois.setObjectInputFilter(filter); ``` #### 使用安全的 Whitelist ``` // بديل آمن لـ ObjectSerializationDecoder // استخدام JSON/YAML بدلاً من Java Serialization ObjectMapper mapper = new ObjectMapper(); MyObject obj = mapper.readValue(jsonInput, MyObject.class); ``` ### 📊 对不同系统的影响 | 系统类型 | 影响程度 | 说明 | |-----------|---------------|-------| | 游戏服务器 | 🔴 高 | Apache MINA 在大型多人在线游戏服务器中很常见 | | IoT 应用程序 | 🔴 高 | 用于物联网系统和低延迟通信 | | 金融系统 | 🔴 高 | 高频交易系统使用 MINA | | 聊天应用程序 | 🟡 中等 | 实时聊天服务器 | | 定制应用程序 | 🟡 中等 | 任何使用 MINA 进行网络通信的 Java 应用程序 | ### 🔗 参考 - **NVD**: https://nvd.nist.gov/vuln/detail/CVE-2024-52046 - **Apache Advisory**: https://lists.apache.org/thread/CVE-2024-52046 - **CWE-502**: https://cwe.mitre.org/data/definitions/502.html - **ysoserial**: https://github.com/frohoff/ysoserial - **JEP 290**: https://openjdk.org/jeps/290 # ⚠️ CVE-2024-52046 — Apache MINA 反序列化远程代码执行 ### CVSS 9.8 | 极高危 | 未经身份验证的远程代码执行 ### 执行摘要 **CVE-2024-52046** 是 **Apache MINA** 框架中一个极其严重的未经身份验证的远程代码执行漏洞。**ObjectSerializationDecoder** 组件使用 Java 的原生反序列化协议来处理传入的序列化数据,且没有足够的安全检查,这使得攻击者可以通过发送特制的恶意序列化对象来利用反序列化过程。 Apache MINA 是一个高性能网络应用框架,被广泛用于分布式系统、游戏服务器、IoT 应用程序和金融交易平台。 | 字段 | 值 | |-------|-------| | **CVE** | CVE-2024-52046 | | **CVSS v3.1** | 9.8 (Critical) | | **向量** | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | | **类型** | 不可信数据反序列化 (CWE-502) | | **产品** | Apache MINA | | **组件** | ObjectSerializationDecoder | | **影响** | 未经身份验证的远程代码执行 | ### 漏洞详情 Apache MINA 中的 `ObjectSerializationDecoder` 直接调用 Java 的 `readObject()` 方法,而没有验证传入的数据流。攻击者可以构造一个包含 gadget chain 的序列化 Java 对象,该对象在反序列化时将执行任意系统命令。 #### 常见的 Gadget Chain | 库 | Gadget | 状态 | |---------|--------|--------| | Commons Collections 3.1 | AnnotationInvocationHandler | ✅ 最常见 | | Commons Collections 4.0 | TreeBag / TreeMap | ✅ 可用 | | JRE 8u20 | HashSet / Hashtable | ✅ 受限 | | Spring Beans | MethodInvoker | ✅ 可用 | | Groovy | MethodClosure | ✅ 可用 | ### 工具使用 ``` # 使用 ysoserial 生成 payload java -jar ysoserial.jar CommonsCollections3 'id > /tmp/pwned' > payload.bin # 利用 Apache MINA python3 CVE-2024-52046.py -t 192.168.1.100 -p 8080 -c "id" # 检查漏洞 python3 CVE-2024-52046.py -t 192.168.1.100 -p 8080 --check # 使用不同的 gadget python3 CVE-2024-52046.py -t 192.168.1.100 -p 8080 -c "whoami" \ --gadget CommonsCollections6 # 交互式 shell python3 CVE-2024-52046.py -t 192.168.1.100 -p 8080 --shell ``` ### 修复措施 | 措施 | 优先级 | 描述 | |--------|----------|-------------| | **更新 MINA** | 🔴 立即 | 更新到最新的补丁版本 | | **禁用 Decoder** | 🔴 紧急 | 切换到安全的替代 decoder | | **启用 Filtering** | 🟡 重要 | 实施 JEP 290 ObjectInputFilter | | **使用 Whitelist** | 🟡 重要 | 仅允许可信类 | #### JEP 290 实施 ``` ObjectInputFilter filter = ObjectInputFilter.Config .createFilter("!com.example.*;java.base/*;!*"); ObjectInputFilter.Config.setSerialFilter(filter); ``` ### 按系统类型的影响 | 系统类型 | 影响程度 | 描述 | |------------|-------------|-------------| | 游戏服务器 | 🔴 极高危 | MINA 在 MMO 游戏服务器中很常见 | | IoT 系统 | 🔴 极高危 | 低延迟 IoT 通信 | | 金融系统 | 🔴 极高危 | 高频交易平台 | | 聊天应用程序 | 🟡 中等 | 实时消息服务器 | ### 参考文献 - **NVD**: https://nvd.nist.gov/vuln/detail/CVE-2024-52046 - **CWE-502**: https://cwe.mitre.org/data/definitions/502.html - **ysoserial**: https://github.com/frohoff/ysoserial - **JEP 290**: https://openjdk.org/jeps/290 ### 联系 AMN SECURITY 🌐 **网站**: https://amn.amnoffsec.workers.dev/ 📸 **Instagram**: https://www.instagram.com/ixctw 📧 **邮箱**: ayman.mahmoudoffsec@gmail.com
标签:Go语言工具, JS文件枚举, 反序列化, 漏洞分析, 路径探测, 逆向工具