Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cakephp-trusted-proxies — CakePHP 5.4.2 - Élevé - À distance - Proxy - trustedProxies honore X-Forwarded-* depuis n'importe quel REMOTE_ADDR | Kitploit
Outils/GitHubGitHub/abraxas/cakephp-trusted-proxies
Analyse des VulnérabilitésExploitationExploitation d'Applications WebVirtualisation de SécuritéSécurité WebTests d'Intrusion
GitHubabraxas/cakephp-trusted-proxies

cakephp-trusted-proxies

CakePHP 5.4.2 - Élevé - À distance - Proxy - trustedProxies honore X-Forwarded-* depuis n'importe quel REMOTE_ADDR

Voir le dépôt
1il y a 2 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Abraxas Labs - cakephp-trusted-proxies

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

cakephp-trusted-proxies

Classe : contournement de redirection HTTPS / usurpation IP-hôte Portée : distante

CakePHP 5.4.2 (887b641) - Cake Software Foundation

HttpsEnforcerMiddleware avec trustedProxies => ['10.0.0.1'] appelle setTrustedProxies, ce qui définit trustProxy = true et ne compare jamais la liste à REMOTE_ADDR. Ensuite, scheme(), host() et clientIp() honorent les en-têtes attaquants X-Forwarded-Proto / X-Forwarded-For / X-Forwarded-Host / X-Real-IP.

Le middleware par défaut a trustedProxies à null et n'active pas ce comportement. La configuration documentée pour répartiteur de charge est le cas exposé. Un client HTTP non authentifié qui n'est pas le proxy listé peut contourner la redirection HTTPS et usurper l'IP client et l'hôte.

IDpas encore de CVE
Classecontournement de redirection HTTPS / usurpation IP-hôte
Portéedistante (HTTP non authentifié ; application avec trustedProxies défini)
CWECWE-441, CWE-346
CVSSÉlevé : 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
ProduitCakePHP
Affecté5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
Authaucune. Application avec HttpsEnforcerMiddleware trustedProxies défini
LicenceGNU Affero GPL v3.0
Labo127.0.0.1 uniquement

Ce qu'un attaquant peut faire

Nécessite une application ayant activé trustedProxies (application typique de redirection HTTPS via proxy inverse). Pas besoin de se connecter depuis une IP de proxy listée.

PrivilègeMéthode / cibleProuvé en labo ou déduit
Contourner la redirection HTTPS / le chemin HSTSGET / HTTP avec X-Forwarded-Proto: httpsProuvé en labo. 200, scheme=https, témoin dans le JSON
Usurper clientIp()X-Forwarded-For: 203.0.113.50Prouvé en labo. client_ip=203.0.113.50
Usurper host()X-Forwarded-Host: spoof.invalidProuvé en labo. host=spoof.invalid
Usurper via X-Real-IPX-Real-IP: 198.51.100.9Prouvé en labo. client_ip=198.51.100.9
Contourner une ACL IP / limitation de débit basée sur clientIp()Même usurpationDéduit. Le remote_addr par défaut de RateLimitMiddleware n'est pas ce bug
Contrôle négatifMêmes en-têtes forwarded sur /control (sans trustedProxies)Prouvé en labo. Toujours 301 vers https

Fermé sur ce point restant : trustedProxies => null par défaut ; REMOTE_ADDR lui-même reste l'IP du bridge Docker dans le labo (192.168.208.1, pas le 10.0.0.1 listé). Pas de RCE. Pas un bug de cookie-jar.

Comment je l'ai trouvé

J'ai épinglé 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 l'appelle dès que trustedProxies est non nul. Les IP listées sont ensuite utilisées comme un array_diff sur la chaîne XFF, et non comme une vérification du pair qui se connecte.

Fausses pistes déjà consignées : traiter le middleware par défaut comme ce point restant (ce n'est pas le cas) ; qualifier le x-forwarded-for de RateLimitMiddleware du même bug (la bakery 5.4.1 a déjà déplacé ce défaut vers remote_addr) ; prétendre que REMOTE_ADDR lui-même était usurpé. Théâtre : un reverse shell.

Labo

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

ou

cd lab
./run.sh

Composer cakephp/cakephp 5.4.2 en PHP 8.3. Petite application : / utilise trustedProxies => ['10.0.0.1'] ; /control non. HTTP en loopback sur 127.0.0.1:19430.

  1. GET / sans en-têtes forwarded -> 301 https.
  2. GET /control avec proto/for/host/real-ip -> 301 https.
  3. GET / avec X-Forwarded-Proto: https -> 200, scheme https, trust_proxy=true, REMOTE_ADDR n'est pas 10.0.0.1.
  4. GET / avec XFF + Host -> client_ip=203.0.113.50, host=spoof.invalid.
  5. GET / avec 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

Le correctif

N'honorer les en-têtes forwarded que lorsque REMOTE_ADDR figure dans la liste des proxys de confiance (Symfony isFromTrustedProxy()). Une liste vide ne doit pas activer la confiance.

Références

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

Licence

GNU Affero GPL v3.0. Voir LICENSE. Labo en loopback uniquement. Aucune garantie.

Télécharger l’outil