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
1hace 2 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

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. Ese callback no hace nada ante un LF o CR aislado. Los nombres de cabecera siguen concatenándose sin sanear. PHP mail() y el 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 colarse en el cuerpo enviando LF en lugar de CRLF. El fix anunciado no lo impide. El cakephp/app estándar no introduce datos de la petición en cabeceras personalizadas por sí solo.

IDsin CVE todavía
ClaseInyección de cabeceras de correo (resto 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)
Authigual que GHSA-2qh5: la app copia datos del usuario en Message::setHeaders / addHeaders
LicenciaGNU Affero GPL v3.0
Labsolo 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 / sinkProbado en lab o inferido
Inyectar una línea Bcc: (o Cc: / To:) adicional en el bloque de cabeceras de SMTP DATAsetHeaders(['X-Meta' => "ok\nBcc: [email protected]"]) y luego SmtpTransport::sendProbado en lab. Tanto SMTP DATA como getHeadersString muestran una nueva línea Bcc:. Testigo X-Oracle: CAKEPHP-SMTP-CRLF-WITNESS
Misma inyección a través de MailTransportMismo callback en MailTransport::sendProbado en lab sobre getHeadersString con la lista de inclusión y el callback de strip de MailTransport. Este lab no llama a PHP mail()
CR aislado además de LF aisladook\rBcc: ...Probado en lab. El strip solo de pares deja \r; los parsers de cabeceras que dividen por CR/LF lo tratan como una nueva línea
Reescribir Subject o colarse en el cuerpoEl valor contiene \nSubject: o \n\nInferido a partir de la misma concatenación. El lab inyectó Bcc / X-Oracle, no Subject
Destinatario de sobre adicionalBcc inyectado dentro de DATAInferido. Algunos MTAs reparsean DATA. El RCPT TO de Cake sigue usando solo setTo / setCc / setBcc en el objeto Message
Par \r\n de dos bytesStrip de GHSA-2qh5Probado en lab, cerrado. El control concatena okBcc:...
RCE no autenticado en una app esqueletono este restoCerrado
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. Los tests 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.

Caminos equivocados ya registrados: dar GHSA-2qh5 por cerrado y marcharse; llamar a PHP mail() en el lab (el oráculo es SMTP DATA más getHeadersString); inflar esto a un RCE no autenticado en una app esqueleto. Teatro: una reverse shell.

Lab

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

o

cd lab
./run.sh

Composer cakephp/cakephp:5.4.2 en PHP 8.3. Sink SMTP en 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: mismo payload 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

El fix

Eliminar o rechazar cualquier \r o \n en nombres y valores de cabecera (igual que el sanitizador de filename= de 5.4.2). Cubrir LF aislado y CR aislado en los tests de transporte, no solo el par \r\n.

Referencias

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

Licencia

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

Descargar herramienta