
Unauthentifizierte Rechteausweitung in WordPress WAWP (Automation Web Platform) ≤ 4.8.6 über öffentliche REST-Registrierung und unsanitisierte wawp_custom_fields → Admin. Python-Check/Exploit-PoC (PoCbit).
Python-3-PoC für CVE-2026-14281 im WordPress-Plugin Automation Web Platform (automation-web-platform — WAWP / Notifications & OTP for WooCommerce).
Gelistet auf PoCbit — Community-Katalog: https://pocbit.org/pocs/
Beim Ausführen des PoC wird ein PoCbit-Header ausgegeben; JSONL-Zeilen enthalten pocbit, pocbit_catalog und pocbit_page.
| Plattform | WordPress-Plugin |
| Komponente | Automation Web Platform (WAWP) |
| Betroffen | ≤ 4.8.6 |
| Behoben in | > 4.8.6 (auf neueste stabile Version aktualisieren) |
| CVSS 3.1 | 9.8 Kritisch (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Auth | Unauthentifiziert |
| Vektor | Öffentliche REST POST /wp-json/wawp/v1/signup/signup |
Der Signup-REST-Handler (public_permissions_check) akzeptiert wawp_custom_fields, mappt es auf custom_fields_data und schreibt nach wp_insert_user() jeden Schlüssel mit update_user_meta() ohne Allowlist. Angreifer können wp_capabilities und wp_user_level setzen, um Administrator-Rechte zu erlangen.
Relevanter Code (4.8.6): includes/api/class-wawp-rest-settings-api.php (/signup/(?P<op>…)), includes/auth-services/class-wawp-otp-service.php (wawp_custom_fields → custom_fields_data), includes/auth-services/class-wawp-signup.php (finish_registration_logic).
Wenn Signup-OTP aktiviert ist, kann der erste signup-Aufruf bei otp_verify stoppen (Challenge gesendet) und die Registrierung erst nach OTP abgeschlossen werden — die vollständige Unauth-Admin-Kette kann erfordern, dass OTP deaktiviert ist oder ein separater OTP-Bypass existiert. Der PoC meldet in diesem Fall otp_required.
pip install -r requirements.txt
Python 3.8+.
# Version + REST-Oberfläche + optionaler Live-Signup-Probe (erstellt einen Wegwerf-Benutzer, wenn OTP aus)
python poc.py -u https://target.example --mode check
# Admin-fähigen Benutzer registrieren (nur autorisierte Ziele)
python poc.py -u https://target.example --mode exploit --verify
# Massenscan
python poc.py --list targets.example.txt --mode check --threads 20 --quiet
# JSON nach stdout (einzelnes Ziel)
python poc.py -u https://target.example --mode check 2>nul
| Datei | Bedeutung |
|---|---|
cve_2026_14281_results.jsonl | Vollständiges JSON pro Ziel |
hits.txt | Kandidaten-Hosts (check) oder url|email|password (exploit) |
candidates.jsonl | Zusammenfassung im Check-Modus |
body="/wp-content/plugins/automation-web-platform/"
body="/wp-json/wawp/"
Nur auf Systemen verwenden, die Sie besitzen oder für die Sie eine ausdrückliche Testgenehmigung haben.
| Status | Bedeutung |
|---|
exploit_confirmed_probe | Probe-Signup abgeschlossen (OTP aus); Meta-Injektionspfad aktiv |
vulnerable_otp_blocks_signup | Plugin/Version + REST OK; OTP-Schritt blockiert One-Shot-Signup |
vulnerable_rest_signup | Verwundbare Version; REST erreichbar (Probe nicht eindeutig) |
patched | Version > 4.8.6 |
no_plugin | Plugin nicht erkannt |