Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cakephp-smtp-crlf — CakePHP 5.4.2 - Hoch - Remote - Header-Injection - SmtpTransport einzelnes LF Überbleibsel von GHSA-2qh5 | Kitploit
Tools/GitHubGitHub/abraxas/cakephp-smtp-crlf
SchwachstellenanalyseExploitationWebanwendungs-ExploitationSicherheitsvirtualisierungWebsicherheitPenetrationstestsE-Mail-Sicherheit
GitHubabraxas/cakephp-smtp-crlf

cakephp-smtp-crlf

CakePHP 5.4.2 - Hoch - Remote - Header-Injection - SmtpTransport einzelnes LF Überbleibsel von GHSA-2qh5

Repository anzeigen
15vor 6 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

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

Klasse: Mail-Header-Injection Reichweite: Remote

CakePHP 5.4.2 (887b641) - Cake Software Foundation

GHSA-2qh5 / CVE-2026-77634 fügte str_replace("\r\n", '', $val) in SmtpTransport und MailTransport hinzu. Dieser Callback ist wirkungslos bei einem einzelnen LF oder CR. Header-Namen werden weiterhin ungefiltert konkateniert. PHP mail() und die SMTP-DATA, die wir erfasst haben, behandeln ein einzelnes LF als neue Header-Zeile.

Wenn eine App Benutzerdaten in einen benutzerdefinierten Header kopiert, kann ein Angreifer Bcc hinzufügen, den Subject umschreiben oder durch Senden von LF statt CRLF in den Body eindringen. Der angekündigte Fix verhindert das nicht. Das Standard-cakephp/app schreibt Request-Daten nicht von sich aus in benutzerdefinierte Header.

IDnoch keine CVE
KlasseMail-Header-Injection (übrig gebliebenes einzelnes LF aus GHSA-2qh5)
ReichweiteRemote (wie GHSA-2qh5: App kopiert Benutzerdaten in Message::setHeaders)
CWECWE-93
CVSSHoch: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
ProduktCakePHP
Betroffen5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
Authwie GHSA-2qh5: App kopiert Benutzerdaten in Message::setHeaders / addHeaders
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

Erfordert eine Anwendung, die Request-Daten in benutzerdefinierte Mail-Header schreibt.

PrivilegMethode / SinkIm Lab nachgewiesen oder abgeleitet
Eine zusätzliche Bcc:-Zeile (oder Cc: / To:) in den SMTP-DATA-Header-Block einschleusensetHeaders(['X-Meta' => "ok\nBcc: [email protected]"]) dann SmtpTransport::sendIm Lab nachgewiesen. SMTP DATA und getHeadersString zeigen beide eine neue Bcc:-Zeile. Zeuge X-Oracle: CAKEPHP-SMTP-CRLF-WITNESS
Dieselbe Injection über MailTransportDerselbe Callback in MailTransport::sendIm Lab nachgewiesen an getHeadersString mit der Include-Liste und dem Strip-Callback von MailTransport. Dieses Lab ruft PHP mail() nicht auf
Einzelnes CR ebenso wie einzelnes LFok\rBcc: ...Im Lab nachgewiesen. Das Entfernen nur von Paaren lässt \r zurück; Header-Parser, die an CR/LF trennen, behandeln es als neue Zeile
Subject umschreiben oder in den Body eindringenWert enthält \nSubject: oder \n\nAbgeleitet aus derselben Konkatenation. Im Lab wurden Bcc / X-Oracle injiziert, nicht Subject
Zusätzlicher Envelope-EmpfängerInjiziertes Bcc innerhalb von DATAAbgeleitet. Manche MTAs parsen DATA erneut. Cakes RCPT TO verwendet weiterhin nur setTo / setCc / setBcc am Message-Objekt
Zweibyte-Paar \r\nStrip aus GHSA-2qh5Im Lab nachgewiesen geschlossen. Die Kontrolle konkateniert okBcc:...
Unauthentifizierte RCE auf einer Skeleton-Appnicht dieses ÜberbleibselGeschlossen
Multipart filename= CRLF5.4.2 entfernt bereits "/\r/\nGeschlossen

Wie ich es gefunden habe

Ich habe cakephp/cakephp 5.4.2 nach GHSA-2qh5, GHSA-fxf7, GHSA-vjqc und dem filename=-Hinweis zu 5.4.2 gepinnt. Die Transport-Tests senden nur "line one\r\nline two" und erwarten line oneline two.

SmtpTransport 5.4.2:

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

MailTransport verwendet denselben Callback. Message::getHeadersString bildet den Callback über Werte ab und führt dann $key . ': ' . $val aus.

Bereits festgehaltene Fehlwege: GHSA-2qh5 als geschlossen zu betrachten und sich abzuwenden; PHP mail() im Lab aufzurufen (das Orakel ist SMTP DATA plus getHeadersString); dies zu unauth RCE auf einer Skeleton-App aufzublähen. Theater: eine Reverse Shell.

Lab

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

oder

cd lab
./run.sh

Composer cakephp/cakephp:5.4.2 in PHP 8.3. Loopback-SMTP-Sink unter 127.0.0.1:19410.

  1. Kontrolle: X-Meta = ok\r\nBcc: [email protected]\r\nX-Oracle: CAKEPHP-SMTP-CRLF-WITNESS. Ergebnis: ein Header X-Meta: okBcc: [email protected]: CAKEPHP-SMTP-CRLF-WITNESS.
  2. Fall LF: gleiche Payload nur mit \n. Ergebnis: neue Bcc:- und X-Oracle:-Zeilen in SMTP DATA, Smtp getHeadersString und Mail getHeadersString.
  3. Fall CR: dasselbe nur mit \r. Gleiche zusätzliche Zeilen.
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

Die Behebung

Entferne oder lehne jedes \r oder \n in Header-Namen und -Werten ab (wie beim filename=-Sanitizer in 5.4.2). Decke in den Transport-Tests einzelne LF und einzelne CR ab, nicht nur das \r\n-Paar.

Referenzen

  • github.com/cakephp/cakephp Tag 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • src/Mailer/Transport/SmtpTransport.php · src/Mailer/Transport/MailTransport.php · src/Mailer/Message.php
  • In der Nähe gepatcht (nur Paar): GHSA-2qh5-382h-3jpc / CVE-2026-77634
  • CWE-93

Lizenz

GNU Affero GPL v3.0. Siehe LICENSE. Nur Loopback-Lab. Keine Gewährleistung.

Tool herunterladen