📅 Source : flawfence.com, publié le 10 août 2026. Analyse technique détaillée de la vulnérabilité CVE-2026-64638, baptisée xss2shell, découverte par l’équipe de recherche pwn.ai et corrigée dans WordPress 7.0.3 le 6 août 2026.
🔍 Nature de la vulnérabilité
La faille repose sur une confusion de parseurs entre deux fonctions de nettoyage HTML de WordPress :
strip_tags()(PHP natif) : ne reconnaît pas une balise si un espace suit le chevron ouvrant (< areapasse intact)wp_kses_post(): interprète< areacomme une balise<area>HTML valide
Cette divergence permet d’injecter du HTML dans le message d’erreur de wp-login.php sans aucune authentification.
⚙️ Chaîne d’exploitation (kill chain en 7 étapes)
Phase 1 – XSS réfléchie non authentifiée :
- La page
wp-login.phpest accessible sans compte - Injection d’une balise
< area id=ajaxurl>survivant àstrip_tags()mais rendue parwp_kses_post() - DOM clobbering : les identifiants injectés détournent la variable
ajaxurldu scriptuser-profile.js - Rebond via l’API REST WordPress avec le paramètre
_jsonp, exécutant du JavaScript arbitraire dans l’origine du site
Phase 2 – Escalade vers le webshell (conditionnelle) :
5. SOME (Same-Origin Method Execution) : déclenchement automatique du bouton d’autorisation sur authorize-application.php via un administrateur connecté
6. Vol d’un mot de passe d’application WordPress, permettant une authentification Basic à l’API REST avec droits administrateur
7. Dépôt d’un webshell PHP via upload d’un plugin ZIP piégé dans wp-content/plugins/
📊 Score CVSS 3.1 : 7,5 (élevé)
Vecteur : AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
🛠️ Correctif
Le patch consiste à appliquer esc_html() sur le nom d’utilisateur dans wp-includes/user.php avant toute interpolation. Rétroporié jusqu’à la branche 4.7. Seule la version 7.0.3 ou supérieure garantit l’absence de la faille.
🎯 Surface d’attaque : toutes les installations WordPress par défaut, sans plugin requis, représentant plus de 40 % du web.
📝 Cet article est une analyse technique approfondie incluant un proof of concept (curl + template Nuclei), destinée à permettre aux équipes de sécurité de tester leur exposition et de comprendre la chaîne d’exploitation complète.
🧠 TTPs et IOCs détectés
TTP
- T1059.004 — Command and Scripting Interpreter: Unix Shell (Execution)
- T1190 — Exploit Public-Facing Application (Initial Access)
- T1505.003 — Server Software Component: Web Shell (Persistence)
- T1539 — Steal Web Session Cookie (Credential Access)
- T1550.001 — Use Alternate Authentication Material: Application Access Token (Defense Evasion)
- T1059.007 — Command and Scripting Interpreter: JavaScript (Execution)
IOC
- CVEs :
CVE-2026-64638— NVD · CIRCL - Chemins :
/wp-login.php - Chemins :
/wp-content/plugins/ - Chemins :
/wp-includes/user.php - Chemins :
/wp-admin/update.php
⚠️ À propos de ces IOC — ils sont extraits automatiquement de l’article original le 16 août 2026 et n’ont pas fait l’objet d’une vérification externe. Un indicateur peut avoir été réattribué depuis : une IP de C2 peut redevenir un service légitime, un domaine sinkholé peut changer de propriétaire. Aucune garantie d’exactitude ni d’actualité — contrôlez leur validité avant tout usage opérationnel, en particulier avant de les injecter dans une blocklist ou un SIEM.
Malware / Outils
- Nuclei (tool)
🟡 Indice de vérification factuelle : 55/100 (moyenne)
- ⬜ flawfence.com — source non référencée (0pts)
- ✅ 15000 chars — texte complet (fulltext extrait) (15pts)
- ✅ 5 IOCs (IPs/domaines/CVEs) (10pts)
- ⬜ pas d’IOC vérifié (0pts)
- ✅ 6 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ✅ 1/1 CVE(s) confirmée(s) (CIRCL) (5pts)
🔗 Source originale : https://flawfence.com/blog/xss2shell-faille-wordpress-xss-rce-cve-2026-64638/