Présentation de l'outil
- Le premier EXP au monde à exploiter la vulnérabilité CVE-2023-4357 Chrome XXE en un seul fichier, permettant de dérober les fichiers locaux des visiteurs.
- Le tout premier EXP exploitant la vulnérabilité CVE-2023-4357 Chrome XXE en un seul fichier, permettant aux attaquants d'obtenir les fichiers locaux des visiteurs.
| Nom du fichier | Description | Scénario d'exploitation | Pourquoi l'exploitation est-elle possible en un seul fichier / un seul payload ? |
|---|
| d.svg | Exploitation en un seul fichier, sans dépendre d'autres fichiers | 1. Lorsqu'un XSS est possible, imbriquer le lien SVG dans une iframe. 2. Lors d'un clic sur un bouton, ouvrir l'image SVG dans une nouvelle fenêtre. | Auto-inclusion. La première déclaration d'entité référençant une entité externe est bloquée. L'idée est alors de s'auto-inclure en utilisant le fichier lui-même comme document XML externe, puis d'effectuer une seconde déclaration d'entité référençant une entité externe, en veillant à ce que les formats des deux références soient mutuellement compatibles et ne génèrent aucune erreur, afin de contourner le blocage et de lire les fichiers locaux. |
| xss.html | Exploitation en un seul payload, sans dépendre d'autres fichiers | Lorsqu'un XSS est possible et que l'on ne souhaite téléverser aucun fichier SVG sur un site web, copier le contenu de xss.html comme payload. | Élément object, data:image/svg+xml;base64, data:text/xsl;base64 |
Partages intéressants
- Cet EXP en un seul fichier a servi de source d'inspiration pour la création des épreuves du
TPCTF 2023 Compétition de sécurité de l'information (compétition co-organisée par TP-Link, Tsinghua et Pékin).
- Challenges :
Xssbot et Xssbot but not Internet
- Des participants perspicaces ont remarqué mon commentaire
//You can send p.innerHTML by POST. : cn-sec, xmcve, jbnrz
- Pouvoir apporter des ressources d'apprentissage intéressantes aux débutants en sécurité de l'information est l'une des raisons d'être de ce projet open source.
Présentation de la vulnérabilité
| Informations | Contenu |
|---|
| Nom de la vulnérabilité | Chromium XXE |
| Identifiant CVE | CVE-2023-4357 |
| Niveau de risque | Élevé |
Description de la vulnérabilité
- La cause racine de la vulnérabilité se trouve dans libxslt. Par défaut, Chromium vérifie strictement si l'URL de l'entité externe référencée par la déclaration d'entité d'un document XML est cross-origin. Cependant, si Chromium analyse d'abord le document comme une feuille de style XSL puis appelle document() pour inclure un document XML externe, Chromium n'effectue alors aucune validation cross-origin sur l'URL de ce document XML externe, ce qui entraîne la fuite des fichiers locaux du visiteur.
Versions affectées
Captures d'écran de reproduction
| Environnement du visiteur | Capture d'écran |
|---|
| Linux + Chromium |  |
| Windows + Chromium |  |
Reproduction 1
- Environnement du visiteur :
- Télécharger et exécuter Chrome
wget https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/114.0.5735.90/linux64/chrome-linux64.zip
unzip chrome-linux64.zip
./chrome-linux64/chrome --no-sandbox
- Démarrer le service Web
wget https://codeload.github.com/xcanwin/CVE-2023-4357-Chrome-XXE/zip/refs/heads/main -O CVE-2023-4357-Chrome-XXE.zip
unzip CVE-2023-4357-Chrome-XXE.zip
python3 -m http.server 8888 -d CVE-2023-4357-Chrome-XXE-main
- Accéder via le navigateur
http://127.0.0.1:8888/d.svg
Reproduction 2
- Environnement du visiteur :
- Télécharger et exécuter Chrome
https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/114.0.5735.90/win64/chrome-win64.zip
./chrome-win64/chrome --no-sandbox
- Démarrer le service Web
https://codeload.github.com/xcanwin/CVE-2023-4357-Chrome-XXE/zip/refs/heads/main
python3 -m http.server 8888 -d CVE-2023-4357-Chrome-XXE-main
- Accéder via le navigateur
http://127.0.0.1:8888/d.svg
Reproduction 3
- Environnement du visiteur :
-
Télécharger et exécuter WeChat pour Mac
-
Démarrer le service Web
wget https://codeload.github.com/xcanwin/CVE-2023-4357-Chrome-XXE/zip/refs/heads/main -O CVE-2023-4357-Chrome-XXE.zip
unzip CVE-2023-4357-Chrome-XXE.zip
python3 -m http.server 8888 -d CVE-2023-4357-Chrome-XXE-main
- Envoyer le lien à l'assistant de transfert de fichiers puis y accéder
http://127.0.0.1:8888/d.svg