Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cakephp-cookie-suffix — CakePHP 5.4.2 - Alta - Remota - Cookie - El cookie jar del cliente Http hace coincidir dominios como sufijo de regex | Kitploit
Herramientas/GitHubGitHub/abraxas/cakephp-cookie-suffix
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónSeguridad WebPapers e Investigación
GitHubabraxas/cakephp-cookie-suffix

cakephp-cookie-suffix

CakePHP 5.4.2 - Alta - Remota - Cookie - El cookie jar del cliente Http hace coincidir dominios como sufijo de regex

Ver Repositorio
7hace 4 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Abraxas Labs - cakephp-cookie-suffix

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

cakephp-cookie-suffix

Clase: Fuga / plantado de cookies Alcance: Remoto

CakePHP 5.4.2 (887b641) - Cake Software Foundation

CookieCollection::findMatchingCookies usa preg_match('/' . preg_quote($domain) . '$/', $host). Eso es un sufijo de cadena, no una coincidencia de dominio RFC 6265. Una cookie para api.partner.com se envía a evilapi.partner.com. Una cookie para bank.com se envía a notbank.com.

Cookie::createFromHeaderString() también copia el Domain= de Set-Cookie sin verificar contra el host de la respuesta. addFromResponse desde attacker.test con Domain=victim.internal almacena esa cookie y luego la adjunta a victim.internal.

Una aplicación que usa Cake\Http\Client con el jar predeterminado en más de un host puede filtrar una cookie de sesión de un socio a un hermano con confusión de sufijo, o plantar una cookie en un host interno después de obtener una URL del atacante. other.com no coincide. Esto no es un bug de cookies del navegador. El cakephp/app estándar no llama a un segundo host por sí solo.

IDsin CVE aún
ClaseFuga / plantado de cookies (coincidencia de dominio por sufijo regex)
AlcanceRemoto (la app usa el jar de Http Client entre hosts)
CWECWE-565, CWE-201
CVSSAlto: 8.2 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
ProductoCakePHP
Afectado5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
Authla app usa Cake\Http\Client con el jar de cookies predeterminado entre hosts
LicenciaGNU Affero GPL v3.0
Labsolo 127.0.0.1

Qué puede hacer un atacante

Requiere una aplicación que mantenga las cookies de Cake\Http\Client en más de un host (OAuth, webhooks, una URL proporcionada por el usuario, una segunda API).

PrivilegioMétodo / sinkProbado en lab o inferido
Filtrar una cookie almacenada a un hermano con confusión de sufijoCookieCollection::addToRequest para https://evilapi.partner.com/ después de una cookie con dominio api.partner.comProbado en lab. La Cookie de la petición es sid=SECRET. RFC 6265 no coincidiría
Misma fuga para un sufijo registrableDominio de cookie bank.com, host de petición notbank.comProbado en lab. La Cookie de la petición es sid=SECRET
Control negativoHost de petición other.comProbado en lab. Sin cabecera Cookie
Plantar una cookie para un host internoaddFromResponse de Set-Cookie: sid=x; Domain=victim.internal desde https://attacker.test/Probado en lab. El dominio almacenado es victim.internal; la siguiente petición a ese host envía sid=x
Fijación de sesión / sesión de socio robada en la siguiente llamada del Clientsid plantado o filtrado usado como sesión de APIInferido. El lab se detiene en el oráculo de la cabecera Cookie
El envío al mismo host sigue funcionandoDominio de cookie api.partner.com a host api.partner.comProbado en lab. Esperado, no es un bug

Cerrado sobre este remanente: other.com no coincide. Los jars de cookies del navegador no son este bug. Sin shell. No es RCE no autenticado en una app esqueleto.

Cómo lo encontré

Fijé cakephp/cakephp 5.4.2 tras GHSA-2qh5, GHSA-fxf7, GHSA-vjqc y la nota de filename= de 5.4.2. La coincidencia de cookies de Http Client es un sufijo regex:

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

addFromResponse pasa el host de la petición solo como valor predeterminado. Un atributo Domain= de Set-Cookie lo sobrescribe y se almacena.

Caminos equivocados ya registrados: tratar esto como un bug de cookies del navegador; afirmar que other.com también coincide; inflar un oráculo de cabecera Cookie a ATO sin una app que use el jar entre hosts. Teatro: una reverse shell.

Lab

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

o

cd lab
./run.sh

Git clone del tag 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63) en PHP 8.3. Oráculo HTTP en loopback en 127.0.0.1:19420. No se requiere un origen HTTP adicional; el oráculo ejecuta CookieCollection desde el pin.

  1. Añadir sid=SECRET dominio api.partner.com. addToRequest https://evilapi.partner.com/ -> Cookie: sid=SECRET.
  2. Control https://other.com/ -> sin cabecera Cookie.
  3. El mismo host https://api.partner.com/ sigue enviando sid=SECRET.
  4. Sufijo extra bank.com -> https://notbank.com/ envía sid=SECRET.
  5. addFromResponse desde https://attacker.test/ con Set-Cookie: sid=x; Domain=victim.internal; Path=/. La siguiente https://victim.internal/ envía sid=x.
SUCCESS cakephp-cookie-suffix suffix-leak=yes control-other=yes plant-domain=yes how=cakephp-5.4.2 CAKEPHP-COOKIE-SUFFIX-WITNESS

La solución

Coincidencia de dominio RFC 6265 (host === domain || str_ends_with($host, '.' . $domain)). Cookies solo de host cuando se omite Domain. Rechazar Domain que no coincida por dominio con el host de la petición. Rechazar sufijos públicos.

Referencias

  • 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

Licencia

GNU Affero GPL v3.0. Ver LICENSE. Solo lab en loopback. Sin garantía.

Descargar herramienta