Applications, sites et API

Particuliers et entreprises

Falsification de requête côté serveur

Server-side request forgery — SSRF

Un serveur est amené à contacter une destination choisie par l’attaquant.

Révision éditoriale : Comprendre : 2 min · Cas technique et détails : 5 min
Je pense être concerné : que faire ?
Illustration pédagogique : falsification de requête côté serveur.

Comprendre et agir

À la fin de cette lecture, vous pourrez expliquer le piège et choisir une première réaction adaptée à votre rôle. Aucun prérequis informatique n’est nécessaire.

Une situation concrète

Un site propose d’importer une image depuis une adresse web. Au lieu d’une image publique, un attaquant lui indique une destination interne. Le serveur peut alors contacter un service que le visiteur ne pourrait pas atteindre directement.

Comment cela fonctionne

Une SSRF détourne les requêtes envoyées par un serveur. L’application devient un intermédiaire involontaire vers une autre ressource. Le risque dépend des destinations accessibles, des informations renvoyées et des droits du serveur. Un outil qui importe des liens, produit des aperçus ou appelle des webhooks doit donc contrôler où il se connecte, pas seulement l’apparence de l’adresse.

Comment le piège fonctionne
  1. Une adresse est fournie

    Import, aperçu ou notification.

  2. Le serveur la visite

    Avec son propre accès au réseau.

  3. Une ressource privée est atteinte

    Données ou services internes.

Ce que vous pouvez faire

Vos premiers réflexes

Cette faille se corrige chez l’exploitant du service. Si un import vous renvoie des données internes inattendues, signalez le résultat sans essayer d’autres adresses.

Si vous êtes responsable du service ou de l’organisation

Développeurs et administrateurs : contrôlez les destinations réellement jointes par le serveur, y compris après redirection, et limitez ses sorties vers les réseaux privés.

Le détail qui change toutUne idée reçue à corriger

Une adresse qui commence par HTTPS n’est pas automatiquement une destination sûre pour un serveur.

À vous de décider

L’import d’une image renvoie des informations internes au service. Est-ce à vous d’essayer d’autres adresses pour comprendre ?

Choisissez votre réponse et expliquez pourquoi avant de lire la correction.

Voir la réponse expliquée

Non. Signalez le résultat et l’adresse initialement fournie, sans poursuivre l’exploration. C’est le serveur qui effectue la recherche avec ses propres accès ; son exploitant doit contrôler les destinations qu’il peut joindre.

Analyser un cas technique

Pour les personnes qui développent, administrent ou analysent les systèmes concernés. Commencez par « Comprendre et agir » si ces notions sont nouvelles pour vous.

Étude de cas fictive

Le serveur est utilisé pour atteindre une ressource interne

Dans une SSRF, l’attaquant fait effectuer une requête par le serveur. Le serveur peut atteindre des adresses auxquelles le navigateur n’a pas accès : réseau interne, interface d’administration ou service de métadonnées cloud. Le risque dépend donc des accès du serveur qui effectue la requête, pas seulement de ceux du compte utilisateur.

Le cas présenté commence par une URL publique qui redirige vers une adresse privée. Vérifier uniquement la première URL laisse passer cette seconde destination. Il faut examiner chaque redirection et l’adresse réellement jointe. Une résolution DNS peut changer entre le contrôle et la connexion ; une validation faite trop tôt ne garantit pas la destination finale.

Quand le besoin métier le permet, proposer une référence de ressource ou un fournisseur connu est plus facile à contrôler qu’une URL libre. Si les URL libres sont nécessaires, les restrictions doivent couvrir le schéma, les destinations, les redirections et les sorties réseau du service.

Les journaux HTTP de l’application ne montrent pas toujours la requête effectuée en arrière-plan. Pour mesurer l’accès, rapprocher le travail déclenché, les résolutions DNS et les connexions sortantes. Une tentative bloquée par le pare-feu n’a pas le même résultat qu’une réponse interne retournée à l’utilisateur.

Le déroulement en schéma

Qui échange avec quiLisez les échanges de haut en bas. Le point marque le départ et la flèche l’arrivée. Les vérifications après correction ne sont pas la suite de l’attaque.

Faites défiler le diagramme pour suivre les échanges ; les noms des acteurs restent en haut. Sur petit écran, faites aussi défiler de gauche à droite.

Étape
UtilisateurEntrée non fiable
ImportateurService d’import accessible
Serveur externeDestination publique
Service privéZone administration
  1. Action

    Référence ou URL d’image

    Utilisateur vers Importateur

    Trace job=j14

  2. Action

    GET initial

    Importateur vers Serveur externe

    Trace hop=0

  3. Réponse

    302 vers une adresse privée

    Serveur externe vers Importateur

    Trace Location

  4. Action

    Connexion secondaire non autorisée

    Importateur vers Service privé

    Trace connected_ip

  5. Réponse

    Réponse stockée comme aperçu

    Service privé vers Importateur

    Trace bytes=42012

  6. Refus / blocage

    Après correction : sortie réseau refusée

    Importateur vers Service privé

    Trace Règle réseau

Comment repérer cette attaque

Indices à rechercher

  • Le serveur contacte des adresses internes sans besoin métier.
  • Des imports de liens entraînent des erreurs ou délais inhabituels.
  • Des accès aux métadonnées cloud suivent une requête utilisateur.

Rechercher les connexions du service vers des réseaux ou services qui ne font pas partie de sa fonction, y compris après une redirection.

Éléments à croiser

Partir du job de téléchargement et suivre toutes les redirections. Rapprocher l’adresse effectivement jointe des flux du serveur ; tenir compte du proxy de sortie et de la traduction d’adresses.

Limites de l’interprétation

Une URL initiale publique ne garantit pas une destination finale publique. Inversement, voir un paquet bloqué ne prouve pas que le serveur a lu une réponse interne.

Comment réagir

Restreindre les sorties réseau du service d’import et conserver les références des tâches concernées. Retrouver les réponses qui ont été stockées ou renvoyées à l’utilisateur. Vérifier si des secrets ont été accessibles, puis les renouveler et rechercher leur utilisation. Retirer les fichiers exposés après avoir préservé les éléments utiles à l’enquête.

Vérifier la correction

Ces contrôles s’adressent à l’équipe responsable du système. Les simulations se préparent dans un environnement de test autorisé ; la lecture du cas ne nécessite aucune manipulation.

  1. Une URL publique redirigeant vers une destination interne interdite doit être refusée.
  2. La restriction réseau doit s’appliquer au service qui télécharge réellement la ressource, y compris aux tâches différées.
  3. Les fournisseurs et ressources autorisés doivent rester accessibles.

À vous de raisonner

L’URL initiale est publique, mais elle redirige vers une adresse privée. Quelle étape du contrôle manque si le téléchargement réussit ?

Formulez votre décision et l’élément qui la justifie avant d’ouvrir la correction.

Comparer avec le raisonnement expliqué

Le contrôle doit couvrir chaque redirection et la destination réellement jointe. Une validation de l’URL de départ ne suffit pas. Vérifiez également les restrictions réseau du composant qui télécharge, y compris s’il travaille dans une tâche différée.

Consulter les détails techniques

Pour aller plus loin après l’étude du cas : les extraits servent à s’exercer à la lecture des traces ; le guide de collecte aide les personnes qui disposent des outils et des accès nécessaires.

Lire les extraits commentés — reconstitution fictive

Ces extraits utilisent des valeurs fictives. Certains reprennent des champs documentés ; d’autres regroupent plusieurs sources dans un format pédagogique. Ce ne sont pas des exports bruts à retrouver tels quels dans vos outils. Commencez par les champs expliqués, puis retrouvez-les dans les extraits.

resolved_ip
Adresse obtenue par résolution dans la reconstitution ; elle doit être enregistrée à chaque étape, pas déduite d’une résolution effectuée après l’incident.
bytes
Quantité reçue dans le cas fictif, pas preuve du contenu exact ni de sa remise à l’attaquant.

Du lien public à une destination privée

Journal

Journal fictif d’un import, avec chaque redirection et la destination réellement contactée.

job=j14 actor=u8 requested_url=https://images.example.test/logo
job=j14 hop=0 status=302 location=http://10.20.0.8/admin/export
job=j14 hop=1 resolved_ip=10.20.0.8 port=80 network_zone=management
job=j14 hop=1 connect=allowed response_status=200 bytes=42012
job=j14 output=stored bucket=previews object=j14.bin
Préparer une collecte dans votre environnement

Choisissez les sources qui correspondent à vos outils et à votre périmètre d’intervention. Cette liste n’est pas un équipement requis pour comprendre la fiche. Vérifiez que les journaux nécessaires étaient activés pendant la période étudiée. Conservez l’export original, son fuseau horaire et sa provenance dans un espace à accès restreint ; travaillez sur une copie expurgée des secrets.

  1. Service concerné — audit et historique à vérifier

    Où les trouver
    Dans l’outil d’administration ou les journaux du service concerné. Demander à son mainteneur où sont enregistrées les décisions d’autorisation et les opérations métier.
    Quoi relever
    Dans le service qui télécharge une URL, rechercher le job, l’URL initiale, chaque redirection, les adresses résolues et la décision de connexion. Prévoir ces champs si le client HTTP ne les expose pas.
    Accès et prérequis
    Il n’existe ni fichier ni vocabulaire universels. Les champs proposés ici doivent être instrumentés s’ils manquent ; ne pas enregistrer mots de passe, jetons ou contenu privé intégral.
    Documentation : Service concerné — audit et historique à vérifier
  2. Sonde réseau Zeek — conn.log

    Où les trouver
    Sur une sonde déjà placée sur le trajet du trafic, ou dans le collecteur de ses journaux conn.log. Identifier le point d’observation, notamment avant ou après traduction d’adresses.
    Quoi relever
    Chercher une connexion sortant du serveur applicatif vers l’adresse et le port internes visés. Les adresses source et destination et les volumes confirment un échange réseau, sans montrer forcément la ressource demandée.
    Accès et prérequis
    La sonde doit avoir vu le trafic. uid, adresses, ports, orig_bytes et resp_bytes décrivent les échanges observés ; les octets réseau ne sont pas le contenu d’un document ni son destinataire humain.
    Documentation : Sonde réseau Zeek — conn.log

Dans l’histoire des cyberattaques

Groupes et campagnes documentés

1 repère

Des faits réels pour situer ce mécanisme. Les années sont celles des faits ; chaque notice précise qui établit le lien avec le groupe ou la campagne.

  1. GroupeHAFNIUM

    Exchange : enchaîner plusieurs failles pour entrer

    Microsoft décrit des intrusions dans des serveurs Exchange installés chez les organisations. Une SSRF permet de contourner une étape d’authentification ; une désérialisation non sûre peut ensuite permettre l’exécution de code avec des droits élevés. Des courriels deviennent accessibles aux attaquants.

    Ce qu’établit la source. Microsoft attribue avec une confiance élevée les premières attaques ciblées à HAFNIUM. L’éditeur signale ensuite l’exploitation de ces mêmes failles par d’autres acteurs.

    Consulter le rapport HAFNIUM targeting Exchange Servers with 0-day exploits

    Microsoft · Publié le

Sélection de cas documentés, non exhaustive. Une technique peut être utilisée par de nombreux acteurs. Les cas fictifs de la fiche ne sont attribués à aucun de ces groupes.

Si vous pensez être concerné

Si vous utilisez le service

Cette faille se corrige chez l’exploitant du service. Si un import vous renvoie des données internes inattendues, signalez le résultat sans essayer d’autres adresses.

Pour l’équipe qui exploite le service

  1. Suspendez le chemin de requête vulnérable ou restreignez ses sorties.
  2. Examinez les destinations réellement contactées.
  3. Révoquez les secrets si des services internes ou métadonnées ont pu en fournir.

Pour qualifier votre situation et être orienté : obtenir une assistance sur 17Cyber. Dans une organisation, prévenez aussi le responsable ou prestataire chargé de la sécurité.

Sources et repères pour approfondir