Injection XXE

Injection XXE

Un fichier XML téléchargé qui lit les propres fichiers du serveur.

Qu'est-ce que Injection XXE?

XXE transforme un analyseur XML en une primitive de lecture de fichiers et de falsification de requêtes. L'attaquant déclare une entité SYSTEM dans un DOCTYPE et l'analyseur intègre un fichier local ou la réponse d'une URL interne avant que votre code ne voie le document. Cela en fait un bug de configuration de l'analyseur plutôt qu'un bug de forme d'entrée. Vous pointerez un téléchargement de bon de commande vers file:///etc/passwd et le relirez dans le champ du fournisseur en écho. Ensuite, vous corrigez libxmljs.parseXml(..., { noent: true }) : rejetez les déclarations DOCTYPE et d'entité, et analysez avec la résolution d'entité externe et de DTD désactivée.

Ce que vous apprendrez dans Injection XXE

Injection XXE — Étapes de la formation

  1. Trouver la fonction d'admission

    Brackwell Logistics permet à tout fournisseur enregistré de soumettre un bon de commande en le téléchargeant sous forme de fichier XML. Le formulaire prend le document, l'analyse sur les serveurs de Brackwell et lit le fournisseur et le total. Bob ouvre la fonctionnalité pour voir comment elle se comporte avant de la toucher.

  2. Où l'analyse se produit

    Une ligne sur cette page est la seule raison pour laquelle Bob est intéressé.

  3. Télécharger une commande normale

    Tout d’abord, observez le comportement normal de la fonctionnalité. Bob joint un bon de commande ordinaire et le soumet. Le panneau Réseau du navigateur enregistre la demande et la réponse du serveur, exactement ce qu'un développeur voit dans DevTools.

  4. Ce que l'analyseur a fait écho

    La commande a été analysée proprement. Un détail dans la réponse indique à Bob comment l'attaquer.

  5. Partir d'un fichier normal

    Bob ouvre le bon de commande ordinaire dans son éditeur. À l’heure actuelle, c’est exactement à quoi cela ressemble : un fournisseur et des données totales et claires. XML permet à un document de déclarer une entité externe, un espace réservé nommé dont l'analyseur récupère la valeur ailleurs. Bob est sur le point d'en ajouter un.

  6. Armer le fichier

    Bob ajoute un DOCTYPE qui déclare une entité externe pointant vers un fichier sur le disque, puis pointe le champ fournisseur vers cette entité. Le fichier est toujours analysé comme un bon de commande. Il commence par le fichier que possède chaque machine Linux, pour prouver que l'analyseur suit la référence.

  7. L'entité

    Deux lignes suffisent.

  8. Téléchargez le fichier contrefait

    Bob soumet son fichier spécialement conçu via la même fonction d'admission. Pour le navigateur, il s’agit simplement d’un autre téléchargement de bon de commande.

  9. Le fichier revient

    La réponse n'est pas un nom de fournisseur. Il s'agit du fichier de mots de passe du serveur, lu sur le disque et restitué directement via la sortie normale du téléchargement.

  10. Contrôle des connaissances

    Vous venez de regarder un téléchargement de bon de commande lire les fichiers du serveur. Verrouillez pourquoi.

Couverture des référentiels de sécurité

OWASP Top 10

  • A02:2025 Security Misconfiguration
  • A05:2021 Security Misconfiguration

CWE

  • CWE-611 Improper Restriction of XML External Entity Reference
  • CWE-918 Server-Side Request Forgery (SSRF)

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security