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-smtp-crlf — CakePHP 5.4.2 - Alta - Remota - Inyección de encabezados - SmtpTransport LF solitario remanente de GHSA-2qh5 | Kitploit
Herramientas/GitHubGitHub/abraxas/cakephp-smtp-crlf
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebVirtualización de SeguridadSeguridad WebPruebas de PenetraciónSeguridad de Correo Electrónico
GitHubabraxas/cakephp-smtp-crlf

cakephp-smtp-crlf

CakePHP 5.4.2 - Alta - Remota - Inyección de encabezados - SmtpTransport LF solitario remanente de GHSA-2qh5

Ver Repositorio
15hace 6 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-smtp-crlf

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

Análisis: https://abraxaslabs.tech/research/cakephp-smtp-crlf

cakephp-smtp-crlf

Clase: Inyección de cabeceras de correo Alcance: Remoto

CakePHP 5.4.2 (887b641) - Cake Software Foundation

GHSA-2qh5 / CVE-2026-77634 añadió str_replace("\r\n", '', $val) en SmtpTransport y MailTransport. Esa función de callback no hace nada ante un LF o CR aislado. Los nombres de cabecera siguen concatenándose sin sanear. La función mail() de PHP y los datos SMTP DATA que capturamos tratan un LF aislado como una nueva línea de cabecera.

Si una aplicación copia datos del usuario en una cabecera personalizada, un atacante puede añadir Bcc, reescribir Subject o irrumpir en el cuerpo enviando LF en lugar de CRLF. La corrección anunciada no lo impide. El cakephp/app estándar no introduce datos de la petición en cabeceras personalizadas por sí mismo.

IDaún sin CVE
ClaseInyección de cabeceras de correo (residuo de LF aislado de GHSA-2qh5)
AlcanceRemoto (igual que GHSA-2qh5: la app copia datos del usuario en Message::setHeaders)
CWECWE-93
CVSSAlto: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
ProductoCakePHP
Afectado5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
Autenticaciónigual que GHSA-2qh5: la app copia datos del usuario en Message::setHeaders / addHeaders
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1

Qué puede hacer un atacante

Requiere una aplicación que introduzca datos de la petición en cabeceras de correo personalizadas.

PrivilegioMétodo / sinkDemostrado en laboratorio o inferido
Inyectar una línea Bcc: adicional (o Cc: / To:) en el bloque de cabeceras SMTP DATAsetHeaders(['X-Meta' => "ok\nBcc: [email protected]"]) y luego SmtpTransport::sendDemostrado en laboratorio. Tanto SMTP DATA como getHeadersString muestran una nueva línea Bcc:. Testigo X-Oracle: CAKEPHP-SMTP-CRLF-WITNESS
La misma inyección a través de MailTransportMismo callback en MailTransport::sendDemostrado en laboratorio sobre getHeadersString con la lista de inclusión y el callback de eliminación de MailTransport. Este laboratorio no invoca la función mail() de PHP
CR aislado además de LF aisladook\rBcc: ...Demostrado en laboratorio. La eliminación solo de pares deja \r; los analizadores de cabeceras que dividen por CR/LF lo tratan como una nueva línea
Reescribir Subject o irrumpir en el cuerpoEl valor contiene \nSubject: o \n\nInferido a partir de la misma concatenación. El laboratorio inyectó Bcc / X-Oracle, no Subject
Destinatario de sobre adicionalBcc inyectado dentro de DATAInferido. Algunos MTA vuelven a analizar DATA. El RCPT TO de Cake sigue usando solo setTo / setCc / setBcc en el objeto Message
Par \r\n de dos bytesEliminación de GHSA-2qh5Demostrado en laboratorio como cerrado. El control concatena okBcc:...
RCE no autenticado en una app esqueletono es este residuoCerrado
CRLF en filename= de multipart5.4.2 ya elimina "/\r/\nCerrado

Cómo lo encontré

Fijé cakephp/cakephp 5.4.2 tras GHSA-2qh5, GHSA-fxf7, GHSA-vjqc y la nota sobre filename= de 5.4.2. Las pruebas de transporte solo envían "line one\r\nline two" y esperan line oneline two.

SmtpTransport 5.4.2:

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

MailTransport usa el mismo callback. Message::getHeadersString aplica el callback sobre los valores y luego hace $key . ': ' . $val.

Errores ya registrados: dar GHSA-2qh5 por cerrado y abandonar; llamar a mail() de PHP en el laboratorio (el oráculo es SMTP DATA más getHeadersString); inflar esto a RCE no autenticado en una aplicación esqueleto. Teatro: una reverse shell.

Laboratorio

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

o

cd lab
./run.sh

Composer cakephp/cakephp:5.4.2 en PHP 8.3. Receptor SMTP de loopback en 127.0.0.1:19410.

  1. Control: X-Meta = ok\r\nBcc: [email protected]\r\nX-Oracle: CAKEPHP-SMTP-CRLF-WITNESS. Resultado: una cabecera X-Meta: okBcc: [email protected]: CAKEPHP-SMTP-CRLF-WITNESS.
  2. Caso LF: misma carga útil solo con \n. Resultado: nuevas líneas Bcc: y X-Oracle: en SMTP DATA, en getHeadersString de Smtp y en getHeadersString de Mail.
  3. Caso CR: lo mismo solo con \r. Las mismas líneas adicionales.
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

La solución

Eliminar o rechazar cualquier \r o \n en los nombres y valores de las cabeceras (igual que el saneador de filename= de la 5.4.2). Cubrir el LF solitario y el CR solitario en las pruebas de transporte, no solo el par \r\n.

Referencias

  • github.com/cakephp/cakephp etiqueta 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • src/Mailer/Transport/SmtpTransport.php · src/Mailer/Transport/MailTransport.php · src/Mailer/Message.php
  • Parcheado cercano (solo el par): GHSA-2qh5-382h-3jpc / CVE-2026-77634
  • CWE-93

Licencia

GNU Affero GPL v3.0. Consulte LICENSE. Solo laboratorio de loopback. Sin garantía.

Descargar herramienta