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
15há 6 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

Write-up: https://abraxaslabs.tech/research/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 app 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

Requer 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çalhos do SMTP DATAsetHeaders(['X-Meta' => "ok\nBcc: [email protected]"]) e então SmtpTransport::sendComprovado em lab. O SMTP DATA e o getHeadersString mostram ambos 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 pares 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

Fixe a versão cakephp/cakephp 5.4.2 após GHSA-2qh5, GHSA-fxf7, GHSA-vjqc e a nota sobre filename= da 5.4.2. Os testes de transporte apenas 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);
    },
);

MailTransport usa o mesmo callback. Message::getHeadersString mapeia o callback sobre os valores e, em seguida, faz $key . ': ' . $val.

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

Laboratório

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

ou

cd lab
./run.sh

Composer cakephp/cakephp:5.4.2 em PHP 8.3. Sink SMTP de 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

Remova ou rejeite qualquer \r ou \n em nomes e valores de cabeçalhos (o mesmo que o sanitizador de filename= da 5.4.2). Cubra 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
  • Corrigido nas proximidades (apenas o par): GHSA-2qh5-382h-3jpc / CVE-2026-77634
  • CWE-93

Licença

GNU Affero GPL v3.0. Consulte LICENSE. Apenas laboratório em loopback. Sem garantias.

Baixar ferramenta