
CVE-2025-47812 POC
Este es un PoC (Proof of Concept) del Exploit para Wing FTP Server (CVE-2025-47812)
Las versiones de Wing FTP Server anteriores a la 7.4.4 sufrieron una vulnerabilidad de Ejecución Remota de Código (RCE) como resultado del tratamiento inseguro del parámetro username. Cuando se nos permite iniciar sesión en la página /loginok.html, podemos inyectar bytes nulos %00 seguidos de código Lua para conseguir RCE.
Cuando enviamos una solicitud POST a la página loginok.html, la función c_CheckUser() (la que valida el nombre de usuario y la contraseña correctos) utiliza strlen(). El problema es que la función en la que se confía es vulnerable a la truncación por bytes nulos.
Esto significa que si enviamos %00 después del nombre de usuario, c_CheckUser() solo validará la parte de la cadena anterior al byte nulo: "anonymous%00........." --> "anonymous".
Después, la aplicación crea una variable SESSION, que se escribe en un archivo. Sin embargo, este archivo contiene no solo el nombre de usuario, sino también la cadena completa, incluidos el byte nulo y el código siguiente. Como el archivo es un archivo Lua, se puede inyectar código Lua, lo que resulta en una RCE.
Imagina que el inicio de sesión anónimo está permitido. Si enviamos una solicitud POST con esta estructura: username=anonymous%00]]%0dlocal+h+%3d+io.popen("whoami")%0dlocal+r+%3d+h%3aread(\"*a\")%0dh%3aclose()%0dprint(r)%0d--&password=&username_val=anonymous&password_val= habremos inyectado el comando whoami después de los bytes nulos usando código Lua. Una vez hecho esto, necesitamos copiar el UID de la respuesta y enviar una solicitud GET a cualquier página autenticada, por ejemplo a la página dir.html, usando el mismo UID.
El script CVE-2025-47812.py hace el proceso por nosotros.