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
wp2shell-poc2 — CVE-2026-63030 | Kitploit
Outils/GitHubGitHub/attackercan/wp2shell-poc2
Frameworks d'ExploitationAnalyse des VulnérabilitésExploitation d'Applications WebPost-ExploitationTests d'IntrusionCommandement et ContrôleRed TeamingDéveloppement de Charges Utiles
GitHubattackercan/wp2shell-poc2

wp2shell-poc2

CVE-2026-63030

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

wp2shell-poc

Preuve de concept pour une injection SQL non authentifiée dans le noyau WordPress qui enchaîne sur une exécution de code à distance, via une confusion de route batch REST (CVE-2026-63030).

L'exploit ne nécessite ni identifiants ni configuration au-delà d'une cible accessible. Il atteint l'injection via un seul point d'accès : POST /wp-json/batch/v1.

La découverte est une injection SQL non authentifiée — check la confirme et read démontre une lecture arbitraire de la base de données. La commande shell est post-exploitation optionnelle (identifiants admin récupérés → téléversement d'extension → exécution de commandes), incluse pour démontrer l'impact complet ; ce n'est pas la vulnérabilité.

Versions affectées

Télécharger l’outil
BrancheAffectéeCorrigée dans
6.9.x6.9.0 – 6.9.46.9.5
7.0.x7.0.0 – 7.0.17.0.2

Les versions antérieures à 6.9.0 ne sont pas affectées par cette chaîne.

Comment ça fonctionne

Le point d'accès batch REST (/batch/v1) est non authentifié et exécute plusieurs sous-requêtes en un seul appel, en comptant sur le fait que chaque sous-requête soit validée et vérifiée en permissions individuellement.

serve_batch_request_v1() construit deux tableaux parallèles — $matches (le gestionnaire correspondant par sous-requête) et $validation (le résultat de validation par sous-requête) — puis indexe les deux par le même décalage lors de l'envoi. Une sous-requête dont le chemin échoue à wp_parse_url() est ajoutée à $validation mais pas à $matches, de sorte que les tableaux se désynchronisent et une sous-requête est envoyée sous un gestionnaire différent. C'est la confusion de route.

Le PoC imbrique la primitive deux fois :

  1. Une requête POST /wp/v2/posts contenant un corps requests est envoyée sous le gestionnaire batch lui-même. Ayant été validée comme une requête sur les articles, sa liste requests n'est jamais vérifiée par rapport au schéma batch, donc ses sous-requêtes peuvent utiliser GET — la liste blanche des méthodes est contournée.
  2. À l'intérieur de ce batch interne, une requête GET /wp/v2/users portant une chaîne author_exclude (le schéma des utilisateurs n'a pas ce paramètre, donc la valeur passe la validation sans modification) est envoyée sous get_items() des articles. Là, author_exclude correspond à la variable de requête author__not_in de WP_Query, que la version vulnérable interpole dans le SQL sous forme de chaîne.

Le résultat est une injection SQL aveugle basée sur le booléen et le temps, accessible avant authentification. Avec un accès en lecture à la base de données, le hash du mot de passe administrateur peut être récupéré ; une fois craqué, l'accès administrateur permet l'exécution de code via le téléversement d'une extension.

Prérequis

Python 3.8+ et la bibliothèque standard. Aucune dépendance tierce.

Utilisation

Exécutez-le depuis le répertoire du dépôt :

root@kitploit:~
./wp2shell.py <commande> <url> [options]

Ou pip install . pour obtenir une commande wp2shell dans votre PATH.

check — confirmer la vulnérabilité (sécurisé)

Confirme l'exploitabilité avec un délai différentiel. Ne lit aucune donnée et ne modifie rien.

root@kitploit:~
./wp2shell.py check http://cible

read — extraire des données (injection SQL aveugle)

root@kitploit:~
./wp2shell.py read http://cible                      # empreinte du serveur
./wp2shell.py read http://cible --preset users       # identifiants et hash des mots de passe
./wp2shell.py read http://cible --query "SELECT @@version"

shell — exécuter une commande (exécution de code à distance)

Post-exploitation optionnelle. Nécessite des identifiants administrateur valides ; l'injection récupère le hash du mot de passe, fournissez donc le texte clair récupéré ici.

root@kitploit:~
./wp2shell.py shell http://cible --user admin --password '<motdepasserécupéré>' --cmd id
./wp2shell.py shell http://cible --user admin --password '<motdepasserécupéré>' -i   # shell interactif

shell téléverse une extension webshell (protégée par un chemin aléatoire et un jeton par exécution) et affiche son chemin. Supprimez-la une fois terminé.

Options

OptionS'applique àDescription
--rest-routeallUtiliser /?rest_route=/batch/v1 (pour les sites sans permaliens jolis).
--proxy URLallRouter le trafic via un proxy HTTP (par exemple, Burp).
--timeout NallDélai d'attente de la requête en secondes.
--sleep NcheckDélai utilisé pour confirmer l'injection.
--presetreadfingerprint ou users.
--queryreadUne expression SQL scalaire à lire.
--prefixreadPréfixe des tables de la base (défaut wp_).
--max-length NreadNombre maximal de caractères lus par valeur (défaut 128).
--user / --passwordshellIdentifiants administrateur (texte clair, récupéré depuis le hash).
--cmdshellCommande à exécuter (omettre lors de l'utilisation de -i).
-i / --interactiveshellOuvrir un shell interactif après le déploiement.

Correction

Mettez à jour WordPress vers 6.9.5 ou 7.0.2. En attendant, bloquez à la fois /wp-json/batch/v1 et le paramètre de requête rest_route=/batch/v1 en périphérie, ou exigez une authentification pour le point d'accès batch via le filtre rest_pre_dispatch.

Légal

Pour les tests de sécurité autorisés uniquement. Utilisez-le exclusivement contre des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite de tester. L'auteur décline toute responsabilité en cas d'utilisation abusive.

Références

  • Annonce de la version WordPress 7.0.2 — https://wordpress.org/news/2026/07/wordpress-7-0-2-release/
  • CVE-2026-63030