Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cakephp-smtp-crlf — CakePHP 5.4.2 - Alto - Remoto - Iniezione di header - SmtpTransport LF isolato residuo di GHSA-2qh5 | Kitploit
Strumenti/GitHubGitHub/abraxas/cakephp-smtp-crlf
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebVirtualizzazione per la SicurezzaSicurezza WebPenetration TestingSicurezza Email
GitHubabraxas/cakephp-smtp-crlf

cakephp-smtp-crlf

CakePHP 5.4.2 - Alto - Remoto - Iniezione di header - SmtpTransport LF isolato residuo di GHSA-2qh5

Vedi Repository
12 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Abraxas Labs - cakephp-smtp-crlf

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

cakephp-smtp-crlf

Classe: Mail header injection Portata: Remota

CakePHP 5.4.2 (887b641) - Cake Software Foundation

GHSA-2qh5 / CVE-2026-77634 ha aggiunto str_replace("\r\n", '', $val) su SmtpTransport e MailTransport. Quel callback è un no-op per un LF o un CR isolato. I nomi degli header vengono ancora concatenati senza sanitizzazione. La funzione PHP mail() e i dati SMTP DATA che abbiamo catturato trattano un LF isolato come una nuova riga di header.

Se un'app copia dati utente in un header personalizzato, un attaccante può aggiungere Bcc, riscrivere Subject o inserirsi nel body inviando LF invece di CRLF. La correzione annunciata non lo impedisce. Il pacchetto standard cakephp/app non inserisce dati della richiesta in header personalizzati di per sé.

IDnessuna CVE al momento
ClasseMail header injection (residuo di LF isolato di GHSA-2qh5)
PortataRemota (come GHSA-2qh5: l'app copia dati utente in 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
ProdottoCakePHP
Affetto5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
Authcome GHSA-2qh5: l'app copia dati utente in Message::setHeaders / addHeaders
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Cosa può fare un attaccante

Richiede un'applicazione che inserisce dati della richiesta in header mail personalizzati.

PrivilegioMetodo / sinkProvato in lab o dedotto
Iniettare una riga Bcc: (o Cc: / To:) extra nel blocco header di SMTP DATAsetHeaders(['X-Meta' => "ok\nBcc: [email protected]"]) poi SmtpTransport::sendProvato in lab. SMTP DATA e getHeadersString mostrano entrambi una nuova riga Bcc:. Testimone X-Oracle: CAKEPHP-SMTP-CRLF-WITNESS
Stessa iniezione tramite MailTransportStesso callback in MailTransport::sendProvato in lab su getHeadersString con la include list e il callback di strip di MailTransport. Questo lab non chiama la funzione PHP mail()
CR isolato oltre a LF isolatook\rBcc: ...Provato in lab. Lo strip della sola coppia lascia \r; i parser di header che dividono su CR/LF lo trattano come una nuova riga
Riscrivere Subject o inserirsi nel bodyIl valore contiene \nSubject: o \n\nDedotto dalla stessa concatenazione. Il lab ha iniettato Bcc / X-Oracle, non Subject
Destinatario envelope extraBcc iniettato dentro DATADedotto. Alcuni MTA ri-analizzano DATA. Il RCPT TO di Cake usa ancora solo setTo / setCc / setBcc sull'oggetto Message
Coppia \r\n a due byteStrip di GHSA-2qh5Provato in lab, chiuso. Il controllo concatena okBcc:...
RCE non autenticata su un'app skeletonnon questo residuoChiuso
CRLF in filename= multipart5.4.2 rimuove già "/\r/\nChiuso

Come l'ho trovato

Ho fissato cakephp/cakephp 5.4.2 dopo GHSA-2qh5, GHSA-fxf7, GHSA-vjqc e la nota su filename= della 5.4.2. I test dei transport inviano solo "line one\r\nline two" e si aspettano line oneline two.

SmtpTransport 5.4.2:

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

MailTransport usa lo stesso callback. Message::getHeadersString applica il callback ai valori, poi esegue $key . ': ' . $val.

Vicoli ciechi già registrati: considerare GHSA-2qh5 chiuso e andare avanti; chiamare la funzione PHP mail() nel lab (l'oracolo è SMTP DATA più getHeadersString); gonfiare questo a RCE non autenticata su un'app skeleton. Teatro: una reverse shell.

Lab

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

oppure

cd lab
./run.sh

Composer cakephp/cakephp:5.4.2 in PHP 8.3. Sink SMTP su loopback a 127.0.0.1:19410.

  1. Controllo: X-Meta = ok\r\nBcc: [email protected]\r\nX-Oracle: CAKEPHP-SMTP-CRLF-WITNESS. Risultato: un solo header X-Meta: okBcc: [email protected]: CAKEPHP-SMTP-CRLF-WITNESS.
  2. Caso LF: stesso payload con solo \n. Risultato: nuove righe Bcc: e X-Oracle: in SMTP DATA, in Smtp getHeadersString e in Mail getHeadersString.
  3. Caso CR: stesso con solo \r. Stesse righe extra.
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

La correzione

Rimuovere o rifiutare qualsiasi \r o \n nei nomi e nei valori degli header (come il sanitizer di filename= della 5.4.2). Coprire LF isolato e CR isolato nei test dei transport, non solo la coppia \r\n.

Riferimenti

  • github.com/cakephp/cakephp tag 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • src/Mailer/Transport/SmtpTransport.php · src/Mailer/Transport/MailTransport.php · src/Mailer/Message.php
  • Correlato già patchato (solo coppia): GHSA-2qh5-382h-3jpc / CVE-2026-77634
  • CWE-93

Licenza

GNU Affero GPL v3.0. Vedi LICENSE. Solo lab su loopback. Nessuna garanzia.

Scarica lo strumento