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-cookie-suffix — CakePHP 5.4.2 - Hoch - Remote - Cookie - Http Client Cookie Jar gleicht Domains als Regex-Suffix ab | Kitploit
Tools/GitHubGitHub/abraxas/cakephp-cookie-suffix
SchwachstellenanalyseExploitationWebanwendungs-ExploitationInformationsbeschaffungWebsicherheitPapers & Forschung
GitHubabraxas/cakephp-cookie-suffix

cakephp-cookie-suffix

CakePHP 5.4.2 - Hoch - Remote - Cookie - Http Client Cookie Jar gleicht Domains als Regex-Suffix ab

Repository anzeigen
7vor 3 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-cookie-suffix

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

cakephp-cookie-suffix

Klasse: Cookie-Leak / Plant Reichweite: Remote

CakePHP 5.4.2 (887b641) - Cake Software Foundation

CookieCollection::findMatchingCookies verwendet preg_match('/' . preg_quote($domain) . '$/', $host). Das ist ein String-Suffix, kein RFC-6265-Domain-Match. Ein Cookie für api.partner.com wird an evilapi.partner.com gesendet. Ein Cookie für bank.com wird an notbank.com gesendet.

Cookie::createFromHeaderString() kopiert außerdem Set-Cookie Domain= ohne Prüfung gegen den Response-Host. addFromResponse von attacker.test mit Domain=victim.internal speichert dieses Cookie und hängt es später an victim.internal an.

Eine App, die Cake\Http\Client mit dem Standard-Jar über mehr als einen Host verwendet, kann ein Partner-Session-Cookie an ein suffix-verwechseltes Geschwister leaken oder ein Cookie auf einem internen Host platzieren, nachdem eine Angreifer-URL abgerufen wurde. other.com stimmt nicht überein. Dies ist kein Browser-Cookie-Bug. Das Standard-cakephp/app ruft nicht von sich aus einen zweiten Host auf.

IDnoch keine CVE
KlasseCookie-Leak / Plant (Regex-Suffix-Domain-Match)
ReichweiteRemote (App verwendet Http-Client-Jar über Hosts hinweg)
CWECWE-565, CWE-201
CVSSHoch: 8.2 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
ProduktCakePHP
Betroffen5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
AuthApp verwendet Cake\Http\Client mit dem Standard-Cookie-Jar über Hosts hinweg
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1

Was ein Angreifer tun kann

Erfordert eine Anwendung, die Cake\Http\Client-Cookies über mehr als einen Host hinweg beibehält (OAuth, Webhooks, eine benutzergelieferte URL, eine zweite API).

PrivilegMethode / SinkLab-bewiesen oder abgeleitet
Ein gespeichertes Cookie an ein suffix-verwechseltes Geschwister leakenCookieCollection::addToRequest für https://evilapi.partner.com/ nach einem Cookie mit Domain api.partner.comLab-bewiesen. Request-Cookie ist sid=SECRET. RFC 6265 würde nicht übereinstimmen
Derselbe Leak für ein registrierbares SuffixCookie-Domain bank.com, Request-Host notbank.comLab-bewiesen. Request-Cookie ist sid=SECRET
NegativkontrolleRequest-Host other.comLab-bewiesen. Kein Cookie-Header
Ein Cookie für einen internen Host platzierenaddFromResponse von Set-Cookie: sid=x; Domain=victim.internal von https://attacker.test/Lab-bewiesen. Gespeicherte Domain ist victim.internal; der nächste Request an diesen Host sendet sid=x
Session-Fixation / gestohlene Partner-Session beim nächsten Client-AufrufPlatziertes oder geleaktes sid, das als API-Session verwendet wirdAbgeleitet. Das Lab endet beim Cookie-Header-Oracle
Same-Host-Send funktioniert weiterhinCookie-Domain api.partner.com an Host api.partner.comLab-bewiesen. Erwartet, kein Bug

Ausgeschlossen bei diesem Überbleibsel: other.com stimmt nicht überein. Browser-Cookie-Jars sind nicht dieser Bug. Keine Shell. Kein unauthentifiziertes RCE auf einer Skeleton-App.

Wie ich es gefunden habe

Ich habe cakephp/cakephp 5.4.2 nach GHSA-2qh5, GHSA-fxf7, GHSA-vjqc und der 5.4.2-filename=-Notiz gepinnt. Das Http-Client-Cookie-Matching ist ein Regex-Suffix:

$pattern = '/' . preg_quote($domain, '/') . '$/';
if (!preg_match($pattern, $host)) {
    continue;
}

addFromResponse übergibt den Request-Host nur als Standardwert. Ein Domain=-Attribut aus Set-Cookie überschreibt ihn und wird gespeichert.

Bereits festgehaltene Irrwege: dies als Browser-Cookie-Bug zu behandeln; zu behaupten, other.com stimme ebenfalls überein; ein Cookie-Header-Oracle ohne eine App, die den Jar über Hosts hinweg verwendet, zu ATO aufzublähen. Theater: eine Reverse Shell.

Lab

python3 cakephp-cookie-suffix-Abraxas-Labs.py

oder

cd lab
./run.sh

Git-Clone-Tag 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63) in PHP 8.3. Loopback-Oracle-HTTP unter 127.0.0.1:19420. Kein zusätzlicher HTTP-Origin erforderlich; das Oracle führt CookieCollection aus dem Pin aus.

  1. sid=SECRET Domain api.partner.com hinzufügen. addToRequest https://evilapi.partner.com/ -> Cookie: sid=SECRET.
  2. Kontrolle https://other.com/ -> kein Cookie-Header.
  3. Derselbe Host https://api.partner.com/ sendet weiterhin sid=SECRET.
  4. Zusätzliches Suffix bank.com -> https://notbank.com/ sendet sid=SECRET.
  5. addFromResponse von https://attacker.test/ mit Set-Cookie: sid=x; Domain=victim.internal; Path=/. Der nächste Aufruf von https://victim.internal/ sendet sid=x.
SUCCESS cakephp-cookie-suffix suffix-leak=yes control-other=yes plant-domain=yes how=cakephp-5.4.2 CAKEPHP-COOKIE-SUFFIX-WITNESS

Der Fix

RFC-6265-Domain-Match (host === domain || str_ends_with($host, '.' . $domain)). Host-only-Cookies, wenn Domain weggelassen wird. Domain ablehnen, das nicht mit dem Request-Host domain-matcht. Öffentliche Suffixe ablehnen.

Referenzen

  • github.com/cakephp/cakephp Tag 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • src/Http/Cookie/CookieCollection.php · src/Http/Cookie/Cookie.php
  • RFC 6265 domain-match
  • CWE-565 · CWE-201

Lizenz

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

Tool herunterladen