Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cakephp-smtp-crlf — CakePHP 5.4.2 - Alta - Remoto - Injeção de cabeçalho - SmtpTransport LF isolado remanescente de GHSA-2qh5 | Kitploit
Ferramentas/GitHubGitHub/abraxas/cakephp-smtp-crlf
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebVirtualização para SegurançaSegurança WebTestes de PenetraçãoSegurança de Email
GitHubabraxas/cakephp-smtp-crlf

cakephp-smtp-crlf

CakePHP 5.4.2 - Alta - Remoto - Injeção de cabeçalho - SmtpTransport LF isolado remanescente de GHSA-2qh5

Ver Repositório
1há 2 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

Abraxas Labs - cakephp-smtp-crlf

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  cakephp-smtp-crlf

cakephp-smtp-crlf

Classe: Injeção de cabeçalho de e-mail Alcance: Remoto

CakePHP 5.4.2 (887b641) - Cake Software Foundation

GHSA-2qh5 / CVE-2026-77634 adicionou str_replace("\r\n", '', $val) em SmtpTransport e MailTransport. Esse callback é um no-op para um LF ou CR isolado. Os nomes de cabeçalho ainda são concatenados sem sanitização. O mail() do PHP e o SMTP DATA que capturamos tratam um LF isolado como uma nova linha de cabeçalho.

Se um aplicativo copia dados do usuário para um cabeçalho personalizado, um atacante pode adicionar Bcc, reescrever o Subject ou invadir o corpo enviando LF em vez de CRLF. A correção anunciada não impede isso. O cakephp/app padrão não coloca dados de requisição em cabeçalhos personalizados por conta própria.

IDainda sem CVE
ClasseInjeção de cabeçalho de e-mail (resíduo de LF isolado do GHSA-2qh5)
AlcanceRemoto (igual ao GHSA-2qh5: o app copia dados do usuário para Message::setHeaders)
CWECWE-93
CVSSAlto: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
ProdutoCakePHP
Afetado5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
Autenticaçãoigual ao GHSA-2qh5: o app copia dados do usuário para Message::setHeaders / addHeaders
LicençaGNU Affero GPL v3.0
Labapenas 127.0.0.1

O que um atacante pode fazer

Precisa de uma aplicação que coloque dados de requisição em cabeçalhos de e-mail personalizados.

PrivilégioMétodo / sinkComprovado em lab ou inferido
Injetar uma linha Bcc: extra (ou Cc: / To:) no bloco de cabeçalho do SMTP DATAsetHeaders(['X-Meta' => "ok\nBcc: [email protected]"]) e então SmtpTransport::sendComprovado em lab. O SMTP DATA e o getHeadersString mostram uma nova linha Bcc:. Testemunha X-Oracle: CAKEPHP-SMTP-CRLF-WITNESS
Mesma injeção através do MailTransportMesmo callback em MailTransport::sendComprovado em lab no getHeadersString com a lista de inclusão e o callback de strip do MailTransport. Este lab não chama o mail() do PHP
CR isolado, assim como LF isoladook\rBcc: ...Comprovado em lab. O strip apenas de par deixa \r; parsers de cabeçalho que dividem em CR/LF tratam isso como uma nova linha
Reescrever o Subject ou invadir o corpoValor contém \nSubject: ou \n\nInferido a partir da mesma concatenação. O lab injetou Bcc / X-Oracle, não Subject
Destinatário extra no envelopeBcc injetado dentro do DATAInferido. Alguns MTAs reanalisam o DATA. O RCPT TO do Cake ainda usa apenas setTo / setCc / setBcc no objeto Message
Par \r\n de dois bytesStrip do GHSA-2qh5Comprovado em lab como fechado. O controle concatena okBcc:...
RCE não autenticado em um app skeletonnão este resíduoFechado
CRLF em filename= multipart5.4.2 já remove "/\r/\nFechado

Como eu encontrei

Fiz o pin do cakephp/cakephp 5.4.2 após GHSA-2qh5, GHSA-fxf7, GHSA-vjqc e a nota sobre filename= na 5.4.2. Os testes de transporte só enviam "line one\r\nline two" e esperam line oneline two.

SmtpTransport 5.4.2:

$headers = $message->getHeadersString(
    [...],
    "\r\n",
    function (string $val): string {
        return str_replace("\r\n", '', $val);
    },
);

O MailTransport usa o mesmo callback. Message::getHeadersString mapeia o callback sobre os valores e então faz $key . ': ' . $val.

Caminhos errados já registrados: tratar o GHSA-2qh5 como fechado e ir embora; chamar o mail() do PHP no lab (o oráculo é o SMTP DATA mais o getHeadersString); inflar isso para RCE não autenticado em um app skeleton. Teatro: um reverse shell.

Lab

python3 cakephp-smtp-crlf-Abraxas-Labs.py

ou

cd lab
./run.sh

Composer cakephp/cakephp:5.4.2 em PHP 8.3. Sink SMTP em loopback em 127.0.0.1:19410.

  1. Controle: X-Meta = ok\r\nBcc: [email protected]\r\nX-Oracle: CAKEPHP-SMTP-CRLF-WITNESS. Resultado: um cabeçalho X-Meta: okBcc: [email protected]: CAKEPHP-SMTP-CRLF-WITNESS.
  2. Caso LF: mesmo payload apenas com \n. Resultado: novas linhas Bcc: e X-Oracle: no SMTP DATA, no getHeadersString do Smtp e no getHeadersString do Mail.
  3. Caso CR: o mesmo apenas com \r. As mesmas linhas extras.
SUCCESS cakephp-smtp-crlf pin=5.4.2 control-crlf-stripped=yes lf-bcc=yes cr-leftover=yes how=smtp-data-bcc-line CAKEPHP-SMTP-CRLF-WITNESS

A correção

Remover ou rejeitar qualquer \r ou \n em nomes e valores de cabeçalho (o mesmo que o sanitizador de filename= da 5.4.2). Cobrir LF isolado e CR isolado nos testes de transporte, não apenas o par \r\n.

Referências

  • github.com/cakephp/cakephp tag 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • src/Mailer/Transport/SmtpTransport.php · src/Mailer/Transport/MailTransport.php · src/Mailer/Message.php
  • Próximo corrigido (apenas par): GHSA-2qh5-382h-3jpc / CVE-2026-77634
  • CWE-93

Licença

GNU Affero GPL v3.0. Veja LICENSE. Apenas lab em loopback. Sem garantia.

Baixar ferramenta