Les fonctions côté serveur deviennent des vecteurs d’attaque lorsqu’elles récupèrent des URL fournies par l’utilisateur, résolvent des entités XML ou font confiance aux champs JWT sans vérification fiable. Ce cours explore SSRF, XXE et manipulation de JWT au moyen d’exercices en terminal sur des services volontairement vulnérables.
Vous passerez de l’identification de chaque comportement à la démonstration de son impact : atteindre un service interne, lire des fichiers locaux, modifier des revendications et récupérer un secret de signature. Le défi final enchaîne une divulgation XXE avec la création d’un jeton administrateur HS256 valide pour une API protégée.
Ce que vous apprendrez
- Identifier un paramètre de récupération d’URL et vérifier que le serveur émet la requête sortante.
- Contourner un filtre littéral de localhost par une autre notation IP et atteindre un service administrateur interne.
- Interroger un service simulé de métadonnées cloud via SSRF et examiner des identifiants préparés.
- Confirmer l’analyse XML et l’expansion d’entités, puis créer une entité externe lisant
/etc/passwd. - Extraire un JWT, séparer ses trois parties et décoder son en-tête et ses revendications Base64Url.
- Falsifier un jeton administrateur non signé face à une API qui accepte à tort l’algorithme
none. - Enchaîner la divulgation XXE d’un secret et une signature HS256 en Python pour accéder à un flag protégé.
À qui s’adresse ce cours
Ce cours intermédiaire s’adresse aux apprenants en sécurité web qui savent construire des requêtes simples et veulent étudier les frontières de confiance des composants serveur. Il convient aux futurs pentesteurs, aux étudiants en sécurité des API et aux développeurs cherchant des exemples de récupération d’URL dangereuse, de configuration XML et de vérification JWT.
Prérequis : Être à l’aise avec un terminal Linux et curl, les méthodes et en-têtes HTTP, la syntaxe XML et JSON de base, le traitement de texte Shell et Base64, et savoir lire un court script Python.
Environnement d’apprentissage : Un terminal Ubuntu 22.04 avec des applications locales vulnérables sur les ports 5000 et 8080, un service de métadonnées simulé sur 169.254.169.254:8000 et la bibliothèque Python jwt. Le premier contrôle SSRF demande à l’application locale de récupérer example.com ; les cibles suivantes sont préparées dans le laboratoire.
Questions fréquentes
Les identifiants des métadonnées cloud sont-ils réels ?
Non. L’endpoint de métadonnées et sa réponse de type IAM sont simulés dans le laboratoire sur le port 8000. Ils illustrent le trajet et l’impact potentiel sans compte cloud réel.
Le laboratoire XXE utilise-t-il Burp Suite ou un proxy graphique ?
Non. Vous créez et modifiez un fichier de charge XML dans le terminal, puis l’envoyez avec curl. Le processus enseigne la structure de requête et le comportement du parseur sans outil graphique.
Décoder un JWT revient-il à casser son chiffrement ?
Non. Les en-têtes et charges JWT sont encodés en Base64Url et généralement lisibles ; ils ne sont pas chiffrés dans ces exercices. La sécurité repose sur la validation de signature et la protection du secret.
Quelle différence entre les deux attaques JWT ?
Le laboratoire guidé exploite un serveur qui accepte à tort alg: none, donc le jeton n’a pas de signature. Dans le défi final, le serveur exige correctement HS256 : vous divulguez d’abord son secret par XXE, puis générez un véritable jeton administrateur signé.





