Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
cakephp-smtp-crlf — CakePHP 5.4.2 — высокий — удалённый — инъекция заголовков — SmtpTransport одиночный LF, оставшийся от GHSA-2qh5 | Kitploit
Инструменты/GitHubGitHub/abraxas/cakephp-smtp-crlf
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВиртуализация для безопасностиВеб-безопасностьТестирование на ПроникновениеБезопасность Электронной Почты
GitHubabraxas/cakephp-smtp-crlf

cakephp-smtp-crlf

CakePHP 5.4.2 — высокий — удалённый — инъекция заголовков — SmtpTransport одиночный LF, оставшийся от GHSA-2qh5

Репозиторий
12 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Abraxas Labs - cakephp-smtp-crlf

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

cakephp-smtp-crlf

Класс: Инъекция в заголовки почты Доступ: Удалённый

CakePHP 5.4.2 (887b641) - Cake Software Foundation

GHSA-2qh5 / CVE-2026-77634 добавили str_replace("\r\n", '', $val) в SmtpTransport и MailTransport. Этот callback ничего не делает для одиночного LF или CR. Имена заголовков по-прежнему конкатенируются без санитизации. PHP mail() и SMTP DATA, которые мы перехватили, трактуют одиночный LF как новую строку заголовка.

Если приложение копирует пользовательские данные в пользовательский заголовок, злоумышленник может добавить Bcc, переписать Subject или вклиниться в тело, отправив LF вместо CRLF. Объявленное исправление это не останавливает. Стандартный cakephp/app сам по себе не помещает данные запроса в пользовательские заголовки.

IDCVE пока нет
КлассИнъекция в заголовки почты (остаточный одиночный LF от GHSA-2qh5)
ДоступУдалённый (как в GHSA-2qh5: приложение копирует пользовательские данные в Message::setHeaders)
CWECWE-93
CVSSHigh: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
ПродуктCakePHP
Затронуто5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
Аутентификациякак в GHSA-2qh5: приложение копирует пользовательские данные в Message::setHeaders / addHeaders
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

Что может сделать злоумышленник

Требуется приложение, которое помещает данные запроса в пользовательские заголовки почты.

ПривилегияМетод / sinkДоказано в лаборатории или выведено
Внедрить дополнительную строку Bcc: (или Cc: / To:) в блок заголовков SMTP DATAsetHeaders(['X-Meta' => "ok\nBcc: [email protected]"]) затем SmtpTransport::sendДоказано в лаборатории. SMTP DATA и getHeadersString оба показывают новую строку Bcc:. Свидетель X-Oracle: CAKEPHP-SMTP-CRLF-WITNESS
Та же инъекция через MailTransportТот же callback в MailTransport::sendДоказано в лаборатории на getHeadersString со списком включений MailTransport и callback-ом strip. Эта лаборатория не вызывает PHP mail()
Одиночный CR, а также одиночный LFok\rBcc: ...Доказано в лаборатории. Strip только пары оставляет \r; парсеры заголовков, которые разбивают по CR/LF, трактуют его как новую строку
Переписать Subject или вклиниться в телоЗначение содержит \nSubject: или \n\nВыведено из той же конкатенации. В лаборатории внедрялись Bcc / X-Oracle, а не Subject
Дополнительный получатель конвертаВнедрённый Bcc внутри DATAВыведено. Некоторые MTA повторно разбирают DATA. Cake RCPT TO по-прежнему использует только setTo / setCc / setBcc на объекте Message
Двухбайтовая пара \r\nStrip из GHSA-2qh5Доказано в лаборатории как закрыто. Контроль конкатенирует okBcc:...
Неаутентифицированный RCE на скелетном приложениине этот остатокЗакрыто
Multipart filename= CRLF5.4.2 уже удаляет "/\r/\nЗакрыто

Как я это нашёл

Я зафиксировал cakephp/cakephp 5.4.2 после GHSA-2qh5, GHSA-fxf7, GHSA-vjqc и примечания к filename= в 5.4.2. Тесты транспорта отправляют только "line one\r\nline two" и ожидают line oneline two.

SmtpTransport 5.4.2:

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

MailTransport использует тот же callback. Message::getHeadersString применяет callback к значениям, затем выполняет $key . ': ' . $val.

Уже зафиксированные неверные пути: считать GHSA-2qh5 закрытым и уйти; вызывать PHP mail() в лаборатории (оракул — это SMTP DATA плюс getHeadersString); раздувать это до неаутентифицированного RCE на скелетном приложении. Театр: reverse shell.

Лаборатория

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

или

cd lab
./run.sh

Composer cakephp/cakephp:5.4.2 в PHP 8.3. Loopback SMTP-приёмник на 127.0.0.1:19410.

  1. Контроль: X-Meta = ok\r\nBcc: [email protected]\r\nX-Oracle: CAKEPHP-SMTP-CRLF-WITNESS. Результат: один заголовок X-Meta: okBcc: [email protected]: CAKEPHP-SMTP-CRLF-WITNESS.
  2. Случай LF: та же полезная нагрузка только с \n. Результат: новые строки Bcc: и X-Oracle: в SMTP DATA, Smtp getHeadersString и Mail getHeadersString.
  3. Случай CR: то же только с \r. Те же дополнительные строки.
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

Исправление

Удалять или отклонять любой \r или \n в именах и значениях заголовков (так же, как санитайзер filename= в 5.4.2). Покрыть одиночный LF и одиночный CR в тестах транспорта, а не только пару \r\n.

Ссылки

  • github.com/cakephp/cakephp тег 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • src/Mailer/Transport/SmtpTransport.php · src/Mailer/Transport/MailTransport.php · src/Mailer/Message.php
  • Ближайшее исправленное (только пара): GHSA-2qh5-382h-3jpc / CVE-2026-77634
  • CWE-93

Лицензия

GNU Affero GPL v3.0. См. LICENSE. Только loopback-лаборатория. Без гарантий.

Скачать инструмент