
Exploit d'exécution de code à distance (RCE) pour Wing FTP Server (CVE-2025-47812)
Exploit d'exécution de code à distance (RCE) pour Wing FTP Server (CVE-2025-47812)
📌 Crédit : Vulnérabilité découverte par Julien (@MrTuxracer).
Cette implémentation de PoC est basée sur leurs recherches originales.
Ce dépôt héberge un exploit Python pour la vulnérabilité d'exécution de code à distance (RCE) de Wing FTP Server (CVE-2025-47812). Cette faille critique permet aux attaquants d'obtenir une exécution de code à distance en tant que root/SYSTEM sur les instances affectées de Wing FTP Server, même avec l'accès anonyme activé.
Cette vulnérabilité provient d'une gestion incorrecte des octets NULL dans le paramètre du nom d'utilisateur lors du processus d'authentification de Wing FTP Server. Cela permet aux attaquants d'injecter du code Lua directement dans les fichiers de session. Ces fichiers de session malveillants sont ensuite exécutés lorsqu'une session valide est chargée, entraînant l'exécution de commandes arbitraires sur le serveur.
Principales fonctionnalités de cet exploit :
Cet outil est destiné strictement à des fins éducatives et de tests d'intrusion autorisés. L'auteur décline toute responsabilité en cas d'utilisation abusive ou de dommages causés par ce logiciel. Assurez-vous toujours d'avoir une autorisation écrite explicite avant d'effectuer des tests sur un système.
Cette vulnérabilité a été découverte et documentée en détail par Julien (@MrTuxracer). Voir le rapport original :
What the NULL?! Wing FTP Server RCE (CVE-2025-47812)
La vulnérabilité CVE-2025-47812 est un problème critique découlant de plusieurs faiblesses dans la gestion de l'authentification et des sessions utilisateur par Wing FTP Server :
c_CheckUser() : La fonction c_CheckUser(), responsable de l'authentification, utilise en interne strlen() sur le nom d'utilisateur fourni. Lorsqu'un octet NULL (%00) est injecté dans le nom d'utilisateur (par ex. anonymous%00...), strlen() tronque la chaîne à cet endroit. Cela signifie que l'authentification réussit pour la partie du nom d'utilisateur avant l'octet NULL, contournant ainsi efficacement la validation.rawset(_SESSION, "username", username) dans loginok.html utilise le nom d'utilisateur entier et non assaini directement des paramètres GET ou POST. Cela inclut l'octet NULL et tous les caractères suivants.anonymous%00]]%0dlocal+h+%3d+io.popen("id")%0dlocal+r+%3d+h%3aread("*a")%0dh%3aclose()%0dprint(r)%0d--) entraîne l'écriture de ce code malveillant directement dans le fichier de session.SessionModule.load(), invoquée lors de l'accès à toute fonctionnalité authentifiée (telle que /dir.html), exécute directement le fichier de session en utilisant loadfile(filepath) suivi de f(). Cette étape cruciale déclenche le code Lua injecté, conduisant à une exécution de code à distance.Cette vulnérabilité est particulièrement grave car Wing FTP Server s'exécute souvent avec les privilèges root sur Linux ou les privilèges SYSTEM sur Windows par défaut. Cette configuration par défaut confère aux attaquants un contrôle maximal sur le système compromis après une exploitation réussie.
Versions affectées : Les versions de Wing FTP Server antérieures à 7.4.4 sont vulnérables.
Ce script prend en charge plusieurs arguments en ligne de commande pour personnaliser son fonctionnement.
python3 CVE-2025-47812.py -h
usage: CVE-2025-47812.py.py [-h] [-u URL] [-f FILE] [-c COMMAND] [-v] [-o OUTPUT] [-U USERNAME]
Exploit script for command injection via login.html.
options:
-h, --help show this help message and exit
-u URL, --url URL Target URL (e.g., [http://192.168.134.130](http://192.168.134.130)). Required if -f not specified.
-f FILE, --file FILE File containing list of target URLs (one per line).
-c COMMAND, --command COMMAND
Custom command to execute. Default: whoami. If specified, verbose output is enabled automatically.
-v, --verbose Show full command output (verbose mode). Ignored if -c is used since verbose is auto-enabled.
-o OUTPUT, --output OUTPUT
File to save vulnerable URLs.
-U USERNAME, --username USERNAME
Username to use in the exploit payload. Default: anonymous
python3 CVE-2025-47812.py -u http://192.168.134.130 -c ipconfig
