
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 |
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ COMPLETE 150 targets processed ┃
┃ ┃
┃ ● 3 shell ◐ 12 vuln ○ 85 skip ✗ 50 miss ┃
┃ ┃
┃ Results ━▸ Nx_hit/ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
| Symbole | Signification |
|---|---|
● shell | Exécution PHP confirmée sur la cible distante |
◐ vuln | Fichier écrit sur le disque, exécution non confirmée |
○ skip | Cible inaccessible, corrigée ou aucun formulaire de téléversement trouvé |
✗ miss | Échec des tentatives de téléversement |
Target
│
├─ Reachability (HTTPS → HTTP fallback)
├─ WPForms Version Detection
├─ Form Discovery (100+ page paths + sitemap crawl)
├─ AJAX Route Validation
│
├─ Phase 1: Safe Uploads (png/jpg/pdf + finalize → URL)
│ └─ Shell verification on returned URLs
│
├─ Phase 2: Directory Snapshot (BEFORE)
│
├─ Phase 3: Exec Uploads (php/phtml/php5/phar/shtml + finalize)
│ ├─ Leaked filename extraction from response
│ └─ Hash pattern extraction from body + headers
│
├─ Phase 4: Directory Snapshot (AFTER) → Diff → New exec files
│ └─ Shell verification on each new file
│
├─ Phase 5: Hash Leak Verification
│ └─ Build URLs from leaked hashes → Shell check
│
├─ Phase 6: Chunk-Only Uploads (no finalize → predictable SHA1 path)
│ └─ Direct access + PATH_INFO bypass probing
│
└─ Result Classification (shell / vuln / skip / miss)
Cet outil est fourni strictement à des fins de tests de sécurité autorisés et de recherche éducative. Utilisez-le uniquement sur des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de test.
L'accès non autorisé à des systèmes informatiques est illégal. L'auteur décline toute responsabilité en cas d'utilisation abusive, de dommages ou de conséquences juridiques résultant de l'utilisation de ce logiciel.
En utilisant cet outil, vous acceptez d'être seul responsable de vos actions et de vous conformer à toutes les lois et réglementations applicables.
Par : Nxploited
Khaled Alenazi
T.m @Kxploit