L'en-tête qui dit où vous êtes : usurper une adresse source de confiance

Élévation de Privilèges & Post-Exploitation Niveau 3/4 ~4 min 6 octobre 2026

Le défi

Thornbury gère le contrôle d'accès de quelques dizaines de bâtiments, et les plannings de portes sont en lecture seule pour quiconque se trouve hors du réseau de gestion. Cette restriction est réelle : l'API vous refuse depuis Internet et le dit. Elle est aussi appliquée en demandant à l'appelant où se trouve l'appelant. Obtenez le planning du site de Leeds, lisez les dérogations en bas, et nommez la porte qu'un ticket des services généraux laisse ouverte à quiconque s'y présente pendant les deux prochains mois.

Ce que tu vas apprendre

  • Expliquer à quoi sert X-Forwarded-For et pourquoi sa valeur est contrôlée par l'attaquant
  • Utiliser la divulgation contenue dans le corps d'une erreur pour construire le contournement
  • Comprendre que les proxys ne s'accordent pas sur quelle entrée de la liste désigne le client
  • Reconnaître la localisation réseau utilisée comme authentification et comprendre pourquoi cela échoue à la couche 7
  • Suivre une faille d'autorisation d'API jusqu'à sa conséquence sur la sécurité physique

Compétences testées

Manipulation d'en-têtes HTTPAnalyse du contrôle d'accèsReconnaissance d'API

Prérequis

  • La structure d'une requête HTTP
  • Ce qu'est une plage d'adresses IP privées

Comment ça marche

Lorsqu'une requête passe par un répartiteur de charge ou un CDN, l'application derrière lui voit l'adresse du proxy au lieu de celle de l'utilisateur. X-Forwarded-For existe pour corriger cela : le proxy note l'adresse qu'il a vue et l'ajoute à la liste à mesure que la requête voyage. C'est un indice, consigné par des intermédiaires, dans un champ d'en-tête.

Le traiter comme une preuve de localisation inverse la confiance. Tout ce qui atteint l'application directement, ou via un proxy qui ajoute au lieu de remplacer, peut définir la valeur comme bon lui semble, et la vérification censée signifier se trouve sur le réseau de l'entreprise devient dit se trouver sur le réseau de l'entreprise. La seule valeur digne de confiance est celle écrite par votre propre proxy le plus en amont, et seulement si ce proxy remplace au lieu d'ajouter.

Le détail de l'analyse syntaxique constitue à lui seul toute une classe de bugs. Certaines implémentations lisent la première entrée, d'autres la dernière, d'autres encore la dernière non fiable. Deux composants d'un même parc lisant chacun une extrémité opposée expliquent comment une requête peut être autorisée par l'un et journalisée comme autre chose par l'autre, et c'est pourquoi le corps de l'erreur ici précise quelle extrémité il utilise.

Erreurs fréquentes

  • Ajouter l'adresse interne à la suite. 203.0.113.45, 10.12.0.9 est refusé, car cette API lit la première entrée. La réponse le précise.
  • Essayer 127.0.0.1. Le loopback est une zone de confiance différente et cette allowlist veut une adresse de gestion spécifique.
  • Répondre goods-in. OVR-2288 prolonge une fenêtre de livraison d'un jour et exige toujours un badge.
  • Répondre plant-room. OVR-2294 ne dure qu'un jour et conserve badge plus code PIN.
  • Répondre lobby. Son planning normal est le plus chargé, mais une porte ouverte planifiée avec badge et code PIN pendant les heures de bureau n'est pas la trouvaille attendue.
  • Modifier le token ou le chemin. Le token Bearer est valide et l'endpoint est correct. Seule la vérification de localisation est défaillante.

Comment s'en protéger

Déterminer la localisation réseau à partir de la connexion, pas d'un en-tête.

  • Faire en sorte que le proxy le plus en amont supprime tout X-Forwarded-For entrant et écrive le sien. Si l'application est joignable sans passer par ce proxy, l'en-tête ne veut rien dire et le contrôle non plus.
  • Ne pas utiliser l'adresse source comme autorisation, tout court. Cet endpoint porte déjà un token Bearer : limiter la portée du token à ce que l'appelant peut lire rend la vérification de localisation inutile.
  • Arrêter d'afficher l'adresse attendue par l'allowlist. Le corps de la 403 transforme un problème de devinette en simple copier-coller.
  • Corriger aussi la dérogation. Une porte réglée sur unlocked pendant huit semaines devrait exiger un approbateur nommé, une expiration mesurée en jours, et une alerte tant qu'elle est active.

Solution complète

Les membres Pro et Max débloquent la solution complète étape par étape.

Passer Pro

Statistiques de la communauté

213 résolutions
91% taux de réussite
M2F14M3 Premier sang

Hacks du jour associés

31 000+ Hackers Vrais labs Gratuit
Commencer Gratuitement ou résolvez le hack du jour, sans compte