
Python-Proof-of-Concept für CVE-2026-93300, eine nicht authentifizierte SQL-Injection im WordPress-Plugin EventON Subscriber; fingerprintet den AJAX-Handler und extrahiert Datenbankdaten über zeitbasierte Orakel.
Python-Proof-of-Concept für CVE-2026-93300: nicht authentifizierte SQL-Injection über den Parameter email im WordPress-Plugin EventON - Subscriber (Wordfence, CVSS 7.5 Hoch).
| CVE | CVE-2026-93300 |
| Plugin | EventON - Subscriber (eventon-subscriber) |
| Betroffen | alle Versionen ≤ 1.4.5 |
| Behobene Version | keine veröffentlicht (Stand 2026-10) |
| Vektor | POST /wp-admin/admin-ajax.php, action=evosub_new_subscriber, Parameter email |
| Authentifizierung | keine (nicht authentifiziert) |
| CWE | CWE-89 SQL Injection |
Sicherheitshinweis: https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/eventon-subscriber/eventon-subscriber-145-unauthenticated-sql-injection-via-email-parameter
Der AJAX-Handler des Abonnement-Formulars (evosub_new_subscriber, registriert mit wp_ajax_nopriv_, erreichbar über das öffentliche Frontend-Formular in assets/evosub_script.js) erstellt eine bestehende SQL-Abfrage unter Verwendung des vom Benutzer übergebenen email-Werts ohne $wpdb->prepare() / ordnungsgemäße Escaping. Der Wert gelangt unescaped in die Abfrage, sodass ein Angreifer aus dem String-Literal ausbrechen und die Abfrage anhängen/ändern kann, um beliebige Daten aus der Datenbank zu lesen.
Der clientseitige E-Mail-Regex in evosub_script.js ist die einzige Formatprüfung im Browser; er bietet keinen serverseitigen Schutz.
# 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 | Standard | Beschreibung |
|---|---|---|
--mode | check | check / users / sql |
--action | evosub_new_subscriber | zu testende AJAX-Action |
--param | email | injizierter Parameter |
--prefix | wp_ | WordPress-Tabellenpräfix |
--sql | — | skalares SELECT für --mode sql |
--delay | 2.0 | SLEEP()-Sekunden für zeitbasiertes Oracle |
--timeout | 25 | HTTP-Timeout |
--max-id | 15 | höchste zu scannende Benutzer-ID |
--proxy / --insecure / --ua | — | HTTP-Proxy / TLS-Verifikation überspringen / benutzerdefinierter UA |
action=evosub_new_subscriber mit einer nicht registrierten Action (0 / HTTP 400), um zu bestätigen, dass der Handler vorhanden und aktiv ist.', ", \) → wenn SQL-Fehler zurückgespiegelt werden (WP_DEBUG), wird ein fehlerbasiertes Oracle verwendet (am schnellsten, eine Anfrage pro Bit);SLEEP() → Union-Time-Oracle (eine Auswertung pro Probe, keine Verlangsamung pro Zeile);;SELECT SLEEP(...)) → Stacked-Time-Oracle, falls der Treiber Multi-Statements erlaubt;OR/AND/paren/concat SLEEP) → Template-Time-Oracle als Fallback.1=1 → wahr und 1=0 → falsch (wiederholt) beantworten, bevor die Extraktion beginnt, wodurch Fehlalarme durch langsame/instabile Ziele herausgefiltert werden.LENGTH() und ASCII(SUBSTRING(...)) (7 Anfragen pro Zeichen).--mode check endet mit einer Plausibilitäts-Extraktion von user_login@USER(), um den Datenzugriff zu belegen.
poc*@example.invalid-Einträge im Post-Typ evo-subscriber erzeugen; diese sind unter Events → All Subscribers sichtbar und können in den Papierkorb verschoben werden.email serverseitig mit einem strikten Filter validiert, verhalten sich alle Probes identisch und das Tool meldet nicht anfällig / Eingabe validiert.admin-ajax.php (Fatal bei Baseline) werden als fehlerhaft gemeldet und abgebrochen.SELECT-Abfrageformen (INSERT/UPDATE-Kontext) werden erkannt, haben aber möglicherweise kein funktionierendes Zeit-Oracle.--delay bei echten Zielen ≥ 1.0 halten; sehr kleine Verzögerungen erzeugen falsch-negative Ergebnisse bei Verbindungen mit hoher Latenz.email (und alle Request-Eingaben) mit $wpdb->prepare() / esc_sql(); validieren Sie serverseitig mit is_email().admin-ajax.php-Anfragen, deren email-Wert SQL-Metazeichen enthält (', ", \, --, ;, UNION).Nur für autorisierte Sicherheitstests und Bildungszwecke. Unbefugter Zugriff auf Computersysteme ist illegal. Sie sind für die Einhaltung aller geltenden Gesetze verantwortlich.