
wp2shell — RCE pré-authentification dans WordPress Core (CVE-2026-60137 + CVE-2026-63030). Enchaîne une injection SQL dans author__not_in avec une confusion de route par lots pour une exécution de code à distance non authentifiée sur WP 6.9.0–6.9.4 / 7.0.0–7.0.1.
Exécution de code à distance sans authentification contre WordPress Core.
Enchaîne CVE-2026-60137 (SQLi dans le paramètre author__not_in / author_exclude de WP_Query) avec CVE-2026-63030 (confusion de route batch de l'API REST) pour une RCE sans authentification.
| Plage | Statut |
|---|---|
| <= 6.8.5 | Non affecté (pas de confusion de batch) |
| 6.8.0 - 6.8.5 | SQLi seulement, pas de RCE |
| 6.9.0 - 6.9.4 | Vulnérable |
| 7.0.0 - 7.0.1 | Vulnérable |
| 7.0.2+ / 6.9.5+ | Corrigé |
python3 poc.py -u TARGET_URL
python3 poc.py -u TARGET_URL --sql "SELECT user_pass FROM wp_users LIMIT 1"
python3 poc.py -u TARGET_URL -c "id"
| Arguments | Comportement |
|---|---|
-u TARGET_URL | Vérifier si vulnérable (sonde temporelle) |
-u TARGET_URL --sql "SQL" | Extraire une valeur scalaire par SQLi aveugle |
-u TARGET_URL -c "CMD" | Chaîne RCE complète |
/batch/v1) pour désynchroniser le traitement des requêtes et contourner l'authentificationauthor_exclude via un oracle temporel SLEEP()Vulnerability check → Seed oEmbed posts → Extract table name (blind SQLi)
→ Extract admin ID (blind SQLi) → Extract cache post IDs (blind SQLi)
→ Inject poisoned changeset via batch → Create admin user
→ Login → Upload command plugin → Execute command → Cleanup
author__not_in : découvert par TF1T, dtro, haongo