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-attachment-crlf — CakePHP 5.4.2 – Hoch – Remote – CRLF – Content-Type und Content-ID von Anhängen verbleiben | Kitploit
Tools/GitHubGitHub/abraxas/cakephp-attachment-crlf
SchwachstellenanalyseExploitationWebanwendungs-ExploitationSicherheitsvirtualisierungWebsicherheitPenetrationstests
GitHubabraxas/cakephp-attachment-crlf

cakephp-attachment-crlf

CakePHP 5.4.2 – Hoch – Remote – CRLF – Content-Type und Content-ID von Anhängen verbleiben

Repository anzeigen
2vor 4 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-attachment-crlf

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

cakephp-attachment-crlf

Klasse: MIME-Part-Header-Injection Reichweite: Remote

CakePHP 5.4.2 (887b641) - Cake Software Foundation

5.4.2 entfernt bereits ", \r und \n aus multipart name= / filename= (FormDataPart::_headerParameterToString). Das ist die Kontrolle. Content-Type und Content-ID wurden als rohe Verkettung belassen. Message::setAttachments kopiert einen UploadedFile-Client-Media-Type in dieses Typ-Feld ohne zusätzlichen Filter.

Eine App, die einen Benutzer-Upload anhängt oder die eine Benutzer-contentId übergibt, platziert diese Bytes auf dem MIME-Part. getBodyString() zeigt dann eine zweite Header-Zeile unter diesem Part.

IDnoch keine CVE
KlasseMIME-Part-Header-Injection
ReichweiteRemote (App, die einen Benutzer-Upload oder eine Benutzer-contentId anhängt)
CWECWE-93
CVSSMedium: 5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
ProduktCakePHP
Betroffen5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
AuthAnwendung, die einen Benutzer-Upload anhängt (UploadedFile-Client-MIME) oder eine Benutzer-contentId
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

Jemand, der Attachment-Metadaten beeinflussen kann, die die App in Message::setAttachments / addAttachment übergibt, kann MIME-Part-Header injizieren.

PrivilegMethode / SinkArtLab-bewiesen oder abgeleitet
Zusätzliche Content-Type-Header-ZeilesetAttachments mit 'mimetype' => "text/plain\\r\\nX-Injected: …"Integrität der MIME-Part-HeaderLab-bewiesen. Witness-Zeile vorhanden
Zusätzliche Content-ID-Header-Zeile'contentId' => "cid@…>\\r\\nX-Injected: …" (Inline-Part)Integrität der MIME-Part-HeaderLab-bewiesen. Witness-Zeile vorhanden
Dieselbe Injection über Upload-MIMEUploadedFile::getClientMediaType() kopiert auf mimetypeIntegrität der MIME-Part-HeaderLab-bewiesen. Witness-Zeile vorhanden
filename= CRLFAttachment-Name mit CR/LFGeschlossenLab-bewiesen geschlossen. 5.4.2-Strip hält
Envelope RCPT / Bcc über diesen SinkMIME-Part-Header im BodyGeschlossenDas ist SmtpTransport pair-only-Strip, ein Geschwister
SMTP-VersandLab ruft nur getBodyString() aufGeschlossenKein Transport, keine Shell

Abgeleitet aus derselben Verkettung, nicht demonstriert: ein präparierter Type oder contentId, der eine Multipart-Boundary enthält, könnte die Nachricht in einem empfangenden MUA in zusätzliche Parts aufteilen. Ich habe keine Mail versendet.

Gleiche Pin-Überreste: window SQLi, collate SQLi, cache unserialize.

Wie ich es gefunden habe

Ich habe cakephp/cakephp 5.4.2 gepinnt, nachdem die Bakery-Notiz besagte, dass multipart Content-Disposition filename=-Injection behoben wurde. _headerParameterToString ist der Sanitizer:

$transliterated = Text::transliterate(str_replace(['"', "\r", "\n"], '', $value));

__toString() macht weiterhin:

if ($this->type) {
    $out .= 'Content-Type: ' . $this->type . "\r\n";
}
if ($this->contentId) {
    $out .= 'Content-ID: <' . $this->contentId . ">\r\n";
}

Message::setAttachments kopiert den Upload-Client-Type ohne Strip. attachFiles / attachInlineFiles rufen dann $part->type($fileInfo['mimetype']) und $part->contentId($fileInfo['contentId']) auf.

Bereits festgehaltene Irrwege: Envelope RCPT als diesen Überrest behandeln (die zusätzliche Zeile ist im Body); behaupten, filename= injiziere weiterhin (tut es nicht); SMTP senden; eine Reverse Shell. Theater.

Lab

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

oder

cd lab
./run.sh

Ziel nur http://127.0.0.1:19460. PHP 8.3, CakePHP-Tag 5.4.2 beim Build geklont. lab_server.php exponiert Message::setAttachments. Vier Fälle: filename-Kontrolle, mimetype, contentId, UploadedFile-Media-Type.

SUCCESS cakephp-attachment-crlf how=live pin=5.4.2 sha=887b641de9f7aba06071f98f17edcbc573cbcf63 mimetype=yes contentId=yes upload=yes filename-stripped=yes CAKEPHP-ATTACHMENT-CRLF-WITNESS

Der Fix

type, contentId und transferEncoding durch denselben " / \r / \n-Strip wie _headerParameterToString laufen lassen. Den Wert ablehnen, wenn er nach dem Strip noch einen Zeilenumbruch enthält. UploadedFile-Client-MIME und explizites mimetype / contentId in den Mailer-Tests abdecken, nicht nur filename=.

Referenzen

  • github.com/cakephp/cakephp Tag 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • FormDataPart.php · Message.php
  • In der Nähe gepatcht: 5.4.2 Bakery filename=-Strip
  • Gleicher Pin: cakephp-window-sqli · cakephp-collate-sqli · cakephp-cache-unserialize
  • CWE-93

Lizenz

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

Tool herunterladen