Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cakephp-smtp-crlf — CakePHP 5.4.2 - Élevée - À distance - Injection d'en-tête - SmtpTransport saut de ligne LF isolé résiduel de GHSA-2qh5 | Kitploit
Outils/GitHubGitHub/abraxas/cakephp-smtp-crlf
Analyse des VulnérabilitésExploitationExploitation d'Applications WebVirtualisation de SécuritéSécurité WebTests d'IntrusionSécurité des Emails
GitHubabraxas/cakephp-smtp-crlf

cakephp-smtp-crlf

CakePHP 5.4.2 - Élevée - À distance - Injection d'en-tête - SmtpTransport saut de ligne LF isolé résiduel de GHSA-2qh5

Voir le dépôt
1il y a 2 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Abraxas Labs - cakephp-smtp-crlf

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

cakephp-smtp-crlf

Classe : Injection d'en-tête de courrier Portée : Distante

CakePHP 5.4.2 (887b641) - Cake Software Foundation

GHSA-2qh5 / CVE-2026-77634 a ajouté str_replace("\r\n", '', $val) sur SmtpTransport et MailTransport. Ce callback est sans effet pour un LF ou un CR seul. Les noms d'en-tête sont toujours concaténés sans assainissement. PHP mail() et le SMTP DATA que nous avons capturé traitent un LF seul comme une nouvelle ligne d'en-tête.

Si une application copie des données utilisateur dans un en-tête personnalisé, un attaquant peut ajouter un Bcc, réécrire le Subject, ou s'introduire dans le corps en envoyant un LF au lieu d'un CRLF. Le correctif annoncé ne l'empêche pas. Le cakephp/app standard ne place pas les données de requête dans des en-têtes personnalisés de lui-même.

IDpas encore de CVE
ClasseInjection d'en-tête de courrier (résidu de LF seul de GHSA-2qh5)
PortéeDistante (identique à GHSA-2qh5 : l'application copie des données utilisateur dans Message::setHeaders)
CWECWE-93
CVSSÉlevé : 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
ProduitCakePHP
Affecté5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
Authidentique à GHSA-2qh5 : l'application copie des données utilisateur dans Message::setHeaders / addHeaders
LicenceGNU Affero GPL v3.0
Labo127.0.0.1 uniquement

Ce qu'un attaquant peut faire

Nécessite une application qui place des données de requête dans des en-têtes de courrier personnalisés.

PrivilègeMéthode / sinkProuvé en labo ou déduit
Injecter une ligne Bcc: supplémentaire (ou Cc: / To:) dans le bloc d'en-tête SMTP DATAsetHeaders(['X-Meta' => "ok\nBcc: [email protected]"]) puis SmtpTransport::sendProuvé en labo. SMTP DATA et getHeadersString montrent tous deux une nouvelle ligne Bcc:. Témoin X-Oracle: CAKEPHP-SMTP-CRLF-WITNESS
Même injection via MailTransportMême callback dans MailTransport::sendProuvé en labo sur getHeadersString avec la liste d'inclusion et le callback de suppression de MailTransport. Ce labo n'appelle pas PHP mail()
CR seul ainsi que LF seulok\rBcc: ...Prouvé en labo. La suppression de la paire seule laisse \r ; les analyseurs d'en-tête qui découpent sur CR/LF le traitent comme une nouvelle ligne
Réécrire Subject ou s'introduire dans le corpsLa valeur contient \nSubject: ou \n\nDéduit de la même concaténation. Le labo a injecté Bcc / X-Oracle, pas Subject
Destinataire d'enveloppe supplémentaireBcc injecté dans DATADéduit. Certains MTA ré-analysent DATA. Le RCPT TO de Cake utilise toujours uniquement setTo / setCc / setBcc sur l'objet Message
Paire \r\n de deux octetsSuppression GHSA-2qh5Prouvé en labo, fermé. Le contrôle concatène okBcc:...
RCE non authentifiée sur une application squelettepas ce résiduFermé
CRLF dans filename= multipart5.4.2 supprime déjà "/\r/\nFermé

Comment je l'ai trouvé

J'ai épinglé cakephp/cakephp 5.4.2 après GHSA-2qh5, GHSA-fxf7, GHSA-vjqc, et la note sur filename= de la 5.4.2. Les tests de transport envoient uniquement "line one\r\nline two" et attendent line oneline two.

SmtpTransport 5.4.2 :

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

MailTransport utilise le même callback. Message::getHeadersString applique le callback sur les valeurs, puis fait $key . ': ' . $val.

Fausses pistes déjà consignées : considérer GHSA-2qh5 comme fermé et passer à autre chose ; appeler PHP mail() dans le labo (l'oracle est SMTP DATA plus getHeadersString) ; gonfler cela en RCE non authentifiée sur une application squelette. Théâtre : un reverse shell.

Labo

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

ou

cd lab
./run.sh

Composer cakephp/cakephp:5.4.2 sous PHP 8.3. Récepteur SMTP en boucle locale sur 127.0.0.1:19410.

  1. Contrôle : X-Meta = ok\r\nBcc: [email protected]\r\nX-Oracle: CAKEPHP-SMTP-CRLF-WITNESS. Résultat : un seul en-tête X-Meta: okBcc: [email protected]: CAKEPHP-SMTP-CRLF-WITNESS.
  2. Cas LF : même charge utile avec \n uniquement. Résultat : nouvelles lignes Bcc: et X-Oracle: dans SMTP DATA, Smtp getHeadersString, et Mail getHeadersString.
  3. Cas CR : idem avec \r uniquement. Mêmes lignes supplémentaires.
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

Le correctif

Supprimer ou rejeter tout \r ou \n dans les noms et valeurs d'en-tête (comme l'assainisseur filename= de la 5.4.2). Couvrir le LF seul et le CR seul dans les tests de transport, pas seulement la paire \r\n.

Références

  • github.com/cakephp/cakephp tag 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • src/Mailer/Transport/SmtpTransport.php · src/Mailer/Transport/MailTransport.php · src/Mailer/Message.php
  • Correctif voisin (paire uniquement) : GHSA-2qh5-382h-3jpc / CVE-2026-77634
  • CWE-93

Licence

GNU Affero GPL v3.0. Voir LICENSE. Labo en boucle locale uniquement. Aucune garantie.

Télécharger l’outil