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
CVE-2026-73847-emlog-PoC — PoC para CVE-2026-73847 - CSRF no emlog AI Assistant para execução de SQL e tomada de conta do administrador (CVSS 6.8) | Kitploit
Ferramentas/GitHubGitHub/squeeze440/cve-2026-73847-emlog-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de Penetração
GitHubsqueeze440/cve-2026-73847-emlog-poc

CVE-2026-73847-emlog-PoC

PoC para CVE-2026-73847 - CSRF no emlog AI Assistant para execução de SQL e tomada de conta do administrador (CVSS 6.8)

Ver Repositório
10há 23 diasAinda não revisado

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

CVE-2026-73847 — Assistente de IA do emlog: CSRF → Execução de SQL → Assunção total da conta de administrador

PoC para a falta de proteção contra CSRF no endpoint execute_tool do Assistente de IA do emlog pro, que permite a um atacante aproveitar a sessão autenticada de um administrador para executar SQL arbitrário no banco de dados do site — incluindo a assunção total da conta de administrador.

CVECVE-2026-73847
CNAGitHub
AvisoGHSA-v6wr-4x55-7qp5
CVSS 3.16.8 Médio — AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N
CWECWE-352 (CSRF), CWE-1275 (SameSite impróprio), CWE-798 (String de confirmação de gravação fixa no código)
Afetadosemlog pro até 2.6.23
CréditoDostxodjayev Abdullox (@squeeze440) — correção pendente no registro do CVE, veja abaixo

Causa raiz

O painel administrativo do emlog pro traz um assistente de IA que pode executar SQL em nome do administrador via POST /admin/ai.php?action=execute_tool. Diversos problemas se acumulam neste único endpoint:

  1. Sem token CSRF. Todos os outros arquivos de ação destrutiva em admin/ chamam LoginAuth::checkToken() primeiro (ex.: admin/media.php:140). admin/ai.php nunca chama.
  2. A autenticação é apenas por cookie de sessão (admin/ai.php:152, User::isAdmin()) — sem verificação de Origin/Referer.
  3. A barreira de confirmação de gravação é uma string pública fixa no código. include/service/ai.php:594: if (trim($confirm_code) !== 'confirm'). Qualquer requisição forjada simplesmente envia confirm_code=confirm.
  4. SQL somente leitura não exige confirmação alguma (include/service/ai.php:578,589) — uma requisição autenticada simples pode executar SELECT em qualquer tabela.
  5. Somente a tabela blog é protegida contra gravação (include/service/ai.php:591) — user e todas as outras tabelas são totalmente graváveis.
  6. O mascaramento de senha pode ser contornado via alias. O mascaramento só corresponde ao nome literal da coluna de saída password (include/service/ai.php:822-828) — SELECT password AS pwd_hash FROM user retorna o hash bruto.
  7. O cookie de autenticação não tem atributo SameSite (include/lib/loginauth.php:99), deixando a janela de carência padrão "Lax+POST" do Chrome (aproximadamente os dois primeiros minutos após o login) como única barreira entre isso e uma entrega cross-site confiável.

Encadeados: uma única requisição forjada do navegador de um administrador lê todas as tabelas (incluindo hashes de senha) e grava em todas as tabelas, exceto blog, incluindo uma sobrescrita direta de user.password.

PoC

Parte 1 — cadeia de impacto bruta (poc_raw_impact.sh)

Isola a primitiva de bypass de SQL/auth da questão de entrega via CSRF. Execute contra uma instância local que você controla:

root@kitploit:~
./poc_raw_impact.sh http://TARGET admin '<adminpass>'

Ele faz login como admin, extrai os hashes de senha via bypass por alias de coluna, sobrescreve a senha do admin diretamente na tabela user e então faz login novamente com a senha escolhida pelo atacante a partir de um novo cookie jar — provando a assunção total da conta quando uma única requisição autenticada chega ao endpoint.

Atacante faz login como administrador com a senha sobrescrita via SQL, chegando ao painel autenticado em uma sessão nova e isolada

Parte 2 — entrega real de CSRF entre sites (poc_csrf.html)

Resolve a questão do SameSite com um navegador real, em vez de supor. Sirva o poc_csrf.html de qualquer origem distinta do alvo (um IP diferente já basta — o Chrome trata IPs literais distintos como sites separados) e faça um administrador autenticado abri-lo dentro de aproximadamente dois minutos após o login:

root@kitploit:~
python3 -m http.server 8888
# then point poc_csrf.html's form action at your target and get it opened

O formulário é enviado automaticamente ao carregar, fazendo POST de uma chamada query_database forjada com confirm_code=confirm entre sites.

Página de login do administrador do emlog Painel administrativo autenticado após o login Código-fonte da página do atacante, servida a partir de uma origem separada POST entre sites chega à resposta JSON bruta de sucesso Linha marcadora CSRF injetada visível no próprio painel de Links do administrador vítima

Verificado ao vivo: o POST forjado entre sites carregou o cookie de autenticação real do administrador (sec-fetch-site: cross-site, cookie anexado), retornou 200 {"code":0,"msg":"ok",...}, e a linha injetada foi confirmada como presente por meio de uma leitura autenticada subsequente. Repetir a mesma requisição cerca de 48 minutos depois contra o mesmo cookie jar, agora envelhecido, falhou — nenhum cookie foi anexado e o servidor retornou um redirecionamento não autenticado, confirmando que a janela de aproximadamente dois minutos do Lax+POST é a restrição real (refletida em AC:H).

Impacto

  • Leitura completa do banco de dados: todas as tabelas/colunas, incluindo hashes de senha e quaisquer segredos em emlog_options (credenciais SMTP, chaves de API, etc.).
  • Gravação completa no banco de dados em todas as tabelas exceto blog, incluindo user — sobrescrita de papel/senha/email, demonstrada de ponta a ponta como assunção de conta.
  • Limitado a contas com role=admin; writer/editor são bloqueados por User::checkRolePermission(). Não é escalada de privilégio a partir de um papel inferior — transforma um único clique em link malicioso por um admin autenticado em comprometimento total e silencioso do site.

Correção

Adicione LoginAuth::checkToken() ao execute_tool, defina SameSite=Strict no cookie de autenticação e substitua a string estática confirm_code por um token real de uso único por sessão. Detalhes completos de remediação no aviso.

Linha do tempo da divulgação

  • 2026-07-31 — Relatado via GitHub Security Advisories, conforme o próprio SECURITY.md do emlog.
  • 2026-08-01 — O mantenedor publicou o aviso e solicitou um CVE.
  • 2026-08-16 — CVE-2026-73847 atribuído pelo GitHub (CNA).

Nota sobre o crédito: o GitHub como CNA publicou o registro do CVE sem uma entrada credits, apesar de o próprio GHSA creditar e aceitar o relator. Uma solicitação de correção foi enviada para [email protected] em 2026-08-16; este README será atualizado se o registro for corrigido.

Isenção de responsabilidade

Publicado depois que o aviso se tornou público e um CVE foi atribuído, para uso defensivo/educacional. Não execute isto contra uma instância do emlog que você não possua ou para a qual não esteja explicitamente autorizado a testar.

Baixar ferramenta