📅 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 (< area passe intact)
  • wp_kses_post() : interprète < area comme 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 :

  1. La page wp-login.php est accessible sans compte
  2. Injection d’une balise < area id=ajaxurl> survivant à strip_tags() mais rendue par wp_kses_post()
  3. DOM clobbering : les identifiants injectés détournent la variable ajaxurl du script user-profile.js
  4. 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-64638NVD · 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/