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

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

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

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

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

Категории

Все категории
Loading categories
cakephp-trusted-proxies — CakePHP 5.4.2 — высокий — удалённый — прокси — trustedProxies доверяет X-Forwarded-* с любого REMOTE_ADDR | Kitploit
Инструменты/GitHubGitHub/abraxas/cakephp-trusted-proxies
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВиртуализация для безопасностиВеб-безопасностьТестирование на Проникновение
GitHubabraxas/cakephp-trusted-proxies

cakephp-trusted-proxies

CakePHP 5.4.2 — высокий — удалённый — прокси — trustedProxies доверяет X-Forwarded-* с любого REMOTE_ADDR

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

Популярное

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

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

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

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

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

Abraxas Labs - cakephp-trusted-proxies

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

cakephp-trusted-proxies

Класс: Обход HTTPS-редиректа / подмена IP и хоста Доступ: Удалённый

CakePHP 5.4.2 (887b641) — Cake Software Foundation

HttpsEnforcerMiddleware с trustedProxies => ['10.0.0.1'] вызывает setTrustedProxies, который устанавливает trustProxy = true и никогда не сравнивает список с REMOTE_ADDR. После этого scheme(), host() и clientIp() доверяют подконтрольным атакующему заголовкам X-Forwarded-Proto / X-Forwarded-For / X-Forwarded-Host / X-Real-IP.

Middleware по умолчанию имеет trustedProxies равным null и не включает это поведение. Уязвим документированный сценарий настройки балансировщика нагрузки. Неаутентифицированный HTTP-клиент, не являющийся указанным прокси, может обойти HTTPS-редирект и подменить IP клиента и Host.

IDCVE пока нет
КлассОбход HTTPS-редиректа / подмена IP и хоста
ДоступУдалённый (неаутентифицированный HTTP; в приложении задан trustedProxies)
CWECWE-441, CWE-346
CVSSВысокий: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
ПродуктCakePHP
Затронуто5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
Аутентификациянет. В приложении задан HttpsEnforcerMiddleware trustedProxies
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

Что может сделать атакующий

Требуется приложение, в котором включён trustedProxies (типичное принудительное использование HTTPS через обратный прокси). Подключаться с IP из списка прокси не требуется.

ПривилегияМетод / точка срабатыванияДоказано в лаборатории или выведено
Обход HTTPS-редиректа / пути HSTSGET / по HTTP с X-Forwarded-Proto: httpsДоказано в лаборатории. 200, scheme=https, свидетельство в JSON
Подмена clientIp()X-Forwarded-For: 203.0.113.50Доказано в лаборатории. client_ip=203.0.113.50
Подмена host()X-Forwarded-Host: spoof.invalidДоказано в лаборатории. host=spoof.invalid
Подмена через X-Real-IPX-Real-IP: 198.51.100.9Доказано в лаборатории. client_ip=198.51.100.9
Обход IP-ACL / ограничения скорости, привязанных к clientIp()Та же подменаВыведено. Значение по умолчанию remote_addr в RateLimitMiddleware — это не данная ошибка
Отрицательный контрольТе же forwarded-заголовки на /control (без trustedProxies)Доказано в лаборатории. Всё ещё 301 на https

Закрыто по этому остатку: значение по умолчанию trustedProxies => null; сам REMOTE_ADDR в лаборатории всё ещё является IP моста Docker (192.168.208.1, а не указанный 10.0.0.1). Не RCE. Не ошибка с cookie-jar.

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

Я зафиксировал cakephp/cakephp 5.4.2. ServerRequest::setTrustedProxies():

public function setTrustedProxies(array $proxies): void
{
    $this->trustedProxies = $proxies;
    $this->trustProxy = true;
    $this->uri = $this->uri->withScheme($this->scheme());
}

HttpsEnforcerMiddleware вызывает это всякий раз, когда trustedProxies не равен null. Указанные IP-адреса позже используются как array_diff по цепочке XFF, а не как проверка подключающегося узла.

Уже зафиксированные ошибочные пути: считать middleware по умолчанию этим остатком (это не так); называть x-forwarded-for в RateLimitMiddleware той же ошибкой (в 5.4.1 bakery уже перевёл это значение по умолчанию на remote_addr); утверждать, что сам REMOTE_ADDR был подменён. Театр: reverse shell.

Лаборатория

python3 cakephp-trusted-proxies-Abraxas-Labs.py

или

cd lab
./run.sh

Composer cakephp/cakephp 5.4.2 в PHP 8.3. Крошечное приложение: / использует trustedProxies => ['10.0.0.1']; /control — нет. Loopback HTTP на 127.0.0.1:19430.

  1. GET / без forwarded-заголовков -> 301 https.
  2. GET /control с proto/for/host/real-ip -> 301 https.
  3. GET / с X-Forwarded-Proto: https -> 200, scheme https, trust_proxy=true, REMOTE_ADDR не равен 10.0.0.1.
  4. GET / с XFF + Host -> client_ip=203.0.113.50, host=spoof.invalid.
  5. GET / с X-Real-IP -> client_ip=198.51.100.9.
SUCCESS cakephp-trusted-proxies pin=5.4.2 how=app remote-addr=192.168.208.1 listed-proxy=10.0.0.1 proto-bypass=200 control-redirect=301 client-ip=203.0.113.50 host=spoof.invalid x-real-ip=198.51.100.9 CAKEPHP-TRUSTED-PROXIES-WITNESS

Исправление

Доверять forwarded-заголовкам только тогда, когда REMOTE_ADDR входит в список доверенных прокси (Symfony isFromTrustedProxy()). Пустой список не должен включать доверие.

Ссылки

  • github.com/cakephp/cakephp тег 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • src/Http/ServerRequest.php · src/Http/Middleware/HttpsEnforcerMiddleware.php
  • CWE-441 · CWE-346

Лицензия

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

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