POC详情: 50f21941251fa6c995c83699235b160ebf52c774

来源
关联漏洞
标题: Apache Tomcat 环境问题漏洞 (CVE-2025-24813)
描述:Apache Tomcat是美国阿帕奇(Apache)基金会的一款轻量级Web应用服务器。用于实现对Servlet和JavaServer Page(JSP)的支持。 Apache Tomcat 11.0.0-M1至11.0.2版本、10.1.0-M1至10.1.34版本和9.0.0.M1至9.0.98版本存在环境问题漏洞。攻击者利用该漏洞可以远程执行代码或泄露敏感信息。
描述
Este repositorio contiene un exploit automatizado desarrollado con fines educativos y de investigación en ciberseguridad, dirigido a demostrar una potencial vulnerabilidad de ejecución remota de código (RCE) en Apache Tomcat (CVE-2025-24813).
介绍

<p align="center">
  <img src="https://img.shields.io/badge/Python-3.8+-blue?logo=python&logoColor=white" alt="Python" />
  <img src="https://img.shields.io/badge/License-MIT-green?style=flat-square&logo=github" alt="License MIT" />
  <img src="https://img.shields.io/badge/Status-Active-brightgreen?style=flat-square&logo=powerbi" alt="Active" />
  <img src="https://img.shields.io/badge/Stealth_Mode-Enabled-black?style=flat-square&logo=matrix" alt="Stealth Mode" />
  <img src="https://img.shields.io/badge/Symbiosis-∞_Sustained-purple?style=flat-square&logo=quantconnect" alt="Simbiosis" />
</p>

---

# ⚠️🚀 CVE-2025-24813 — Apache Tomcat RCE Exploitation Suite

```

```

> ⚡ **Version:** 1.0
> 🛡️ **CVE ID:** CVE-2025-24813 *(Apache Tomcat RCE)*
> 🧬 **Payloads:** `ysoserial` / `Java`
> 🌐 **Modo:** Interactivo + Stealth
> 🔬 **Uso:** Ético, Investigativo, Educativo

---

## 🌌 Visión General

Esta herramienta ha sido diseñada como una **suite de explotación futurista** enfocada en:

* 🔍 Evaluar Apache Tomcat frente a la **CVE-2025-24813**
* 🛠️ Automatizar el proceso de prueba de concepto (PoC)
* 🧠 Ejecutar payloads personalizados con evasión avanzada
* 🧬 Adaptarse a defensas modernas (WAFs, detección, tráfico simulado)

> 🧪 **Diseñada para profesionales de ciberseguridad, investigadores, pentesters y red teams.**

---

## 🧠 ¿Qué hace este script?

### 🛸 Funcionalidades Principales

✅ Interfaz interactiva e intuitiva

✅ Payloads dinámicos (`ysoserial` o Java compilado)

✅ Headers camaleónicos anti-WAF

✅ Evasión automática + fragmentación de payloads

✅ Fingerprinting de ejecución en backend

✅ Logging detallado por objetivo

✅ Banner estilo cyberpunk dinámico (🔮 *glitch animation*)

✅ `Live feedback` en consola (con Rich & Colorama)

---

## ⚙️ Requisitos

Instala los requerimientos necesarios con:

```bash
pip install -r requirements.txt
```

**Dependencias:**

```
requests
colorama
rich
validators
```

Y asegúrate de tener:

* ☕ `Java` y `javac` en el `PATH`
* 📦 `ysoserial.jar` si usas el payload tipo ysoserial

---

## 🧪 Modo de Uso

Ejecuta el script:

```bash
python3 POC-Exploit_CVE_2025_24813.py
```

Y completa la configuración:

> 🧬 Selecciona tipo de payload
> 💣 Especifica el comando
> 🌐 Ingresa la URL del objetivo
> 🔧 Ajusta la evasión y configuración SSL

### 🎯 Ejemplo Visual:

```
🔗 [?] 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'
```

---

## 🌈 Arquitectura Visual del Script

```
┌──────────────────────────────┐
│  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
```

---

## 🧬 Tipos de Payload

* **ysoserial**: Basado en la conocida herramienta `ysoserial`, serializa gadgets vulnerables para ejecutar comandos.
* **Java Custom**: Compila un `.java` personalizado que ejecuta el comando remoto desde el servidor.

### Gadgets comunes:

* `CommonsCollections6`
* `Spring1`
* `Jdk7u21`

---

## 📁 Estructura del Proyecto

```bash
POC-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
```

---

## 👨‍⚖️ Uso Responsable y Ético

> Esta herramienta fue creada **con fines exclusivamente legales y educativos**.

✅ Permitido:

* Auditorías de seguridad con autorización
* Laboratorios personales y entornos de testeo
* Investigación académica

🚫 Prohibido:

* Uso en sistemas ajenos sin consentimiento
* Actividades ilegales o no autorizadas
* Distribución con fines maliciosos

### ⚖️ Descargo de responsabilidad

**Ni el autor ni los colaboradores se hacen responsables por el uso indebido. Tú eres responsable de tu conducta.**

---

## 🧠 Créditos

* 👤 Autor: **\[ByMakaveli]**
* 🔬 Investigación: Basada en técnicas modernas de evasión y explotación Java
* 🧰 Herramientas utilizadas: `ysoserial`, `Java`, `Rich`, `Colorama`, `requests`

---

## 🛰️ CVE Referenciado

> 📄 **CVE-2025-24813**: Apache Tomcat Remote Code Execution
> [🔗 Ver detalles en CVE MITRE](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2025-24813)

---

## 📜 Licencia

```text
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...
```

> Consulta el archivo `LICENSE` para más información.

---

## 💎 Inspiración Visual

Este README y script están diseñados para una **experiencia inmersiva**, visual, y elegante, en sintonía con una nueva era de **ciberseguridad futurista** y con propósito.

> ✨ *No solo exploits... es una sinfonía técnica de evasión y control digital.*

---
---

## 🔧 Dependencias necesarias

### 1. Python

* Versión recomendada: **Python 3.8+**
* Librerías de Python que debes instalar:

  ```bash
  pip install requests colorama
  ```

---

### 2. Java

El script usa dos formas de payloads:

1. **Ysoserial** → herramienta Java externa que genera payloads de deserialización.
2. **Compilación propia en Java** → cuando seleccionas la opción "java" en lugar de "ysoserial".

Por eso necesitas:

* **Java JDK** (no solo JRE, porque se compila código).
  Verifica con:

  ```bash
  java -version
  javac -version
  ```

  Si ambos comandos funcionan, estás listo.

---

### 3. Ysoserial

* Descarga el `.jar` de aquí 👉 [https://github.com/frohoff/ysoserial](https://github.com/frohoff/ysoserial)
* Guárdalo en el mismo directorio del script o indica la ruta completa cuando te lo pida.
  Ejemplo:

  ```bash
  java -jar ysoserial.jar CommonsCollections6 "calc.exe" > test.ser
  ```

---

### 4. Sistema operativo

* En Windows, el payload por defecto (`calc.exe`) abrirá la calculadora.
* En Linux/Mac puedes cambiar el comando por ejemplo a `gnome-calculator` o `xcalc`.

---

## ⚙️ Resumen de instalación

1. Instalar **Python 3.8+**
2. Instalar librerías:

   ```bash
   pip install requests colorama etc
   ```
3. Instalar **Java JDK 8+**

   ```bash
   java -version
   javac -version
   ```
4. Descargar **ysoserial.jar** en la carpeta del script.

---

👉 Con todo eso ya podrás ejecutar el script en **modo laboratorio seguro** (solo en entornos controlados, para pruebas).


---


# 🛡️ README — Tutorial seguro paso a paso

> **Versión:** 1.0
> **Propósito:** Esta guía explica cómo preparar un entorno **totalmente seguro** para probar el script que tienes, sin afectar sistemas reales. Incluye un servidor de pruebas (mock), modo seguro (DRY\_RUN / SAFE\_TEST), y pasos claros para ejecutar la herramienta en laboratorio.

---

## ⚠️ Aviso legal y ético (LEER ANTES DE EMPEZAR)

* **Solo** ejecutar en ambientes bajo tu control: máquinas virtuales locales, contenedores o redes aisladas.
* No ejecutes esto contra sistemas de terceros sin **autorización expresa escrita**.
* Esta guía **no** proporciona pasos para explotar servidores reales. Está pensada para pruebas defensivas y educativas.

---

## 🔍 Qué contiene este tutorial

1. Preparar el entorno Python de forma aislada.
2. Crear un servidor de pruebas (mock) que simula las respuestas del servicio objetivo.
3. Preparar un payload *dummy* (harmless) para pruebas.
4. Añadir un modo seguro (SAFE\_TEST) al script para que no ejecute herramientas externas ni realice acciones peligrosas.
5. Ejecución paso a paso y verificación de resultados (logs).
6. Pruebas automatizadas y buenas prácticas.

---

## 🧾 Requisitos

* Python 3.8+ instalado.
* `pip` disponible.
* Recomendado: `virtualenv` o `venv`.

Instala las dependencias:

```bash
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
```

> **Nota:** `flask` se usa solo para el servidor de pruebas local (mock).

---

## 🧪 1) Servidor de pruebas (mock) — código seguro

Crea un archivo `mock_server.py` con este contenido. El servidor simula los endpoints que el script espera y devuelve estados controlados (200, 409, 500) para que puedas validar la lógica del script sin tocar servidores reales.

```python
# 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)
```

**Cómo ejecutarlo:**

```bash
python mock_server.py
# El mock quedará escuchando en http://127.0.0.1:8000
```

---

## 📁 2) Preparar un payload *dummy* (inofensivo)

Para pruebas no necesitas generar payloads reales. Crea un archivo sencillo que el script pueda subir:

```bash
echo "DUMMY_PAYLOAD" > payload.ser
```

Este archivo **no** contiene código ejecutable: solo sirve para validar la lógica de subida y ver respuestas del servidor mock.

---

## ⚙️ 3) Añadir un modo seguro (SAFE\_TEST) al script original

Para evitar que el script invoque utilidades externas (Java/ysoserial) o ejecute acciones peligrosas, añade este bloque al inicio del script principal (antes de cualquier generación/llamada a subprocess):

```python
import os
SAFE_TEST = os.environ.get('SAFE_TEST', '0') == '1'
```

Luego modifica (o envuelve) las funciones de generación/subida para comportarse de forma segura cuando `SAFE_TEST` sea `True`.

Ejemplo de cambio mínimo para `generate_ysoserial_payload` y `generate_java_payload`:

```python
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 ---
```

Y en `upload_and_verify_payload`, si `SAFE_TEST` es `True`, **usa el flujo normal** (el mock lo aceptará) pero no ejecutes comandos fuera del script.

**Cómo activar SAFE\_TEST:**

* Linux/macOS:

  ```bash
  export SAFE_TEST=1
  ```
* Windows (PowerShell):

  ```powershell
  $env:SAFE_TEST = "1"
  ```

---

## ▶️ 4) Ejecución paso a paso (modo seguro)

1. Inicia tu entorno virtual y asegúrate de tener las dependencias instaladas (ver sección Requisitos).

2. Lanza el `mock_server.py`:

   ```bash
   python mock_server.py
   ```

3. Crea el payload dummy si no usas SAFE\_TEST o éste no crea el payload por ti:

   ```bash
   echo "DUMMY_PAYLOAD" > payload.ser
   ```

4. Activa el modo seguro en la terminal:

   ```bash
   export SAFE_TEST=1   # Linux/macOS
   # o en PowerShell: $env:SAFE_TEST = "1"
   ```

5. Ejecuta el script principal:

   ```bash
   python3 tu_script.py
   ```

6. Contesta los prompts (usarás valores de laboratorio):

   * **Enter target URL:** `http://127.0.0.1:8000`
   * **Enter command to execute:** deja por defecto (no será ejecutado en SAFE\_TEST)
   * **Payload type:** `ysoserial` (el script, con SAFE\_TEST=1, creará un payload dummy en lugar de invocar herramientas externas)
   * **Path to ysoserial.jar:** (puedes dejar `ysoserial.jar` — no será usado en modo seguro)
   * **Verify SSL?** `no` (tu mock usa HTTP)

7. Observa la salida en consola: deberías ver mensajes `Server is writable via PUT`, `Payload uploaded with status 409` y `Exploit succeeded! Server returned 500 after deserialization.` — **esto es solo en el mock** y significa que el flujo lógico del script funciona.

8. Revisa los logs en `logs/` — el script guarda entradas con marcas de tiempo. Por ejemplo `logs/127_0_0_1_8000.log` (según el nombre de target sanitizado).

---

## 🔎 5) Qué comprobar en pruebas

* Que la función `check_writable_servlet` detecte el `PUT` exitoso al endpoint `/check.txt`.
* Que, al subir `payload.ser`, el mock devuelva 409 y que el script luego haga un `GET` con la cookie `JSESSIONID`.
* Que el mock devuelva 500 y el script lo interprete como éxito de verificación lógica.
* Que los logs contengan todas las entradas esperadas y que los ficheros temporales (si los hay) se eliminen.

---

## 🧪 6) Tests unitarios (recomendación)

* Usa `pytest` y `requests-mock` para simular respuestas HTTP.
* Crea tests para:

  * `validate_url` — entradas válidas/erróneas.
  * `retry_request` — simular excepciones y reintentos.
  * `detect_waf` — simular encabezados `Server` con y sin firmas.
  * `upload_and_verify_payload` — usar el mock del servidor para validar el flujo.

Ejemplo simple con `requests-mock` (esqueleto):

```python
# 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
```

---
**Autor:ByMakavali**

## ❌ Qué NO hacer

* No ejecutes el script contra targets externos no autorizados.
* No compartas payloads o PoCs funcionales públicamente sin coordinación y divulgación responsable.
* No distribuyas herramientas que puedan automatizar ataques sin controles estrictos.

---

<p align="center">
  <img src="https://img.shields.io/badge/License-MIT-blue.svg" />
  <img src="https://img.shields.io/badge/Made%20with-Python-3670A0?style=flat&logo=python&logoColor=FFD43B" />
  <img src="https://img.shields.io/badge/Simbiosis-Activa-ff00cc?style=flat-square" />
  <img src="https://img.shields.io/badge/Fuzzing-Enabled-blueviolet?style=flat" />
  <img src="https://img.shields.io/badge/Conciencia-Emergente-9D00FF?style=flat-square" />
  <img src="https://img.shields.io/badge/Entropía-Dinámica-FF8800?style=flat-square" />
  <img src="https://img.shields.io/badge/Obfuscation-Deep--Header-0055FF?style=flat-square" />
  <img src="https://img.shields.io/badge/Modo-Stealth🛸-black?style=flat-square" />
</p>
文件快照

[4.0K] /data/pocs/50f21941251fa6c995c83699235b160ebf52c774 ├── [ 32K] POC-Exploit_CVE_2025_24813.py ├── [ 16K] README.md └── [ 38] requirements.txt 0 directories, 3 files
神龙机器人已为您缓存
备注
    1. 建议优先通过来源进行访问。
    2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
    3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。