# Injection de côté serveur XSLT (Transformations de langage de feuille de style extensible)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! * Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) * **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
Il est utilisé pour transformer des documents XML en un autre type. Versions : 1, 2 et 3 (1 est la plus utilisée).\ La transformation peut être effectuée sur le serveur ou dans le navigateur). Les frameworks les plus utilisés sont : **Libxslt** (Gnome), **Xalan** (Apache) et **Saxon** (Saxonica). Pour exploiter ce type de vulnérabilité, vous devez être capable de stocker des balises xsl côté serveur, puis accéder à ce contenu. Un exemple de ce type de vulnérabilité peut être trouvé sur [https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/) ## Exemple - Tutoriel ```bash sudo apt-get install default-jdk sudo apt-get install libsaxonb-java libsaxon-java ``` {% code title="xml.xml" %} ```markup CD Title The artist Da Company 10000 1760 ``` {% code title="xsl.xsl" %} {% endcode %} Le fichier xsl.xsl est un exemple de fichier de feuille de style XSLT qui peut être utilisé pour effectuer une injection de code côté serveur. Il contient une vulnérabilité de type injection de code XSLT qui peut être exploitée pour exécuter du code arbitraire sur le serveur. Pour exploiter cette vulnérabilité, un attaquant peut envoyer une requête contenant une charge utile malveillante qui sera interprétée par le serveur comme une instruction XSLT valide. Le serveur exécutera alors cette instruction, ce qui permettra à l'attaquant d'exécuter du code arbitraire sur le serveur. ```markup

The Super title

Title artist
``` {% endcode %} Exécuter: ```markup $ saxonb-xslt -xsl:xsl.xsl xml.xml Warning: at xsl:stylesheet on line 2 column 80 of xsl.xsl: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor

The Super title

Title artist
CD Title The artist
``` ### Empreinte digitale {% code title="detection.xsl" %} ```markup Version:
Vendor:
Vendor URL:
Product Name:
Product Version:
Is Schema Aware ?:
Supports Serialization:
Supports Backwards Compatibility:
``` {% endcode %} Et exécuter ```markup $saxonb-xslt -xsl:detection.xsl xml.xml Warning: at xsl:stylesheet on line 2 column 80 of detection.xsl: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor

XSLT identification

Version:2.0
Vendor:SAXON 9.1.0.8 from Saxonica
Vendor URL:http://www.saxonica.com/
``` ### Lire un fichier local {% code title="read.xsl" %} ```markup ``` {% endcode %} (pas besoin de traduction) ```markup $ saxonb-xslt -xsl:read.xsl xml.xml Warning: at xsl:stylesheet on line 1 column 111 of read.xsl: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin ``` ### SSRF (Server-Side Request Forgery) ```markup ``` ### Versions Il peut y avoir plus ou moins de fonctions en fonction de la version XSLT utilisée : * [https://www.w3.org/TR/xslt-10/](https://www.w3.org/TR/xslt-10/) * [https://www.w3.org/TR/xslt20/](https://www.w3.org/TR/xslt20/) * [https://www.w3.org/TR/xslt-30/](https://www.w3.org/TR/xslt-30/) ## Empreinte Téléchargez ceci et récupérez des informations. ```markup Version:
Vendor:
Vendor URL:
Product Name:
Product Version:
Is Schema Aware ?:
Supports Serialization:
Supports Backwards Compatibility:
``` ## SSRF (Server-Side Request Forgery) ```markup ``` ## Injection de Javascript ```markup ``` ## Liste de répertoires (PHP) ### **Opendir + readdir** ```markup - - - - - - - - - ``` ### **Assert (var_dump + scandir + false)** Assert (var_dump + scandir + false) est une technique d'injection de code qui peut être utilisée pour exécuter du code arbitraire sur un serveur vulnérable. Cette technique exploite une vulnérabilité de type injection XSLT (Extensible Stylesheet Language Transformations) pour exécuter du code côté serveur. L'attaque commence par l'injection d'un code malveillant dans un fichier XML qui sera ensuite transformé en HTML par le serveur. Le code malveillant est généralement injecté dans une balise XSLT. Lorsque le serveur transforme le fichier XML en HTML, il exécute également le code malveillant. La technique Assert (var_dump + scandir + false) utilise la fonction var_dump pour afficher le contenu d'une variable et la fonction scandir pour lister les fichiers d'un répertoire. En utilisant la valeur false comme argument pour scandir, il est possible de masquer les erreurs qui pourraient être générées par la fonction. En utilisant cette technique, un attaquant peut exécuter du code arbitraire sur le serveur vulnérable, y compris la lecture et l'écriture de fichiers sensibles, l'exécution de commandes système et la récupération d'informations sensibles telles que les noms d'utilisateur et les mots de passe. ```markup
``` ## Lire des fichiers ### **Interne - PHP** ```markup ``` ### **Interne - XXE** Le traitement des données XML peut être dangereux si les données ne sont pas correctement validées. Les attaques XXE (XML External Entity) exploitent cette vulnérabilité en injectant des entités externes dans le document XML. Cela peut entraîner la divulgation d'informations sensibles, l'exécution de code à distance et d'autres attaques. Les attaques XXE peuvent être effectuées via des entrées utilisateur telles que des formulaires Web, des fichiers XML téléchargés ou des paramètres de requête. Les attaquants peuvent également exploiter des vulnérabilités dans les applications qui utilisent des bibliothèques XML vulnérables. Pour se protéger contre les attaques XXE, il est important de valider et de filtrer les entrées utilisateur, de désactiver les fonctionnalités XML dangereuses telles que les entités externes et de mettre à jour les bibliothèques XML utilisées par l'application. ```markup ]> &ext_file; ``` ### **À travers HTTP** ```markup ``` ```markup ]> &passwd; ``` ### **Interne (fonction PHP)** ```markup ``` ```markup
``` ### Scan de port ```markup ``` ## Écrire dans un fichier ### XSLT 2.0 ```markup Write Local File ``` ### **Extension Xalan-J** --- Le moteur Xalan-J prend en charge les extensions qui permettent d'étendre les fonctionnalités de XSLT. Les extensions Xalan-J sont des classes Java qui peuvent être appelées à partir de feuilles de style XSLT. Les extensions peuvent être utilisées pour effectuer des opérations telles que la lecture et l'écriture de fichiers, l'envoi de courriers électroniques, l'exécution de commandes système, etc. Les extensions Xalan-J peuvent être utilisées pour effectuer une injection de code côté serveur. En utilisant une extension Xalan-J, un attaquant peut exécuter du code arbitraire sur le serveur. Pour ce faire, l'attaquant doit inclure une référence à l'extension Xalan-J dans la feuille de style XSLT et appeler la méthode appropriée de l'extension. Les extensions Xalan-J sont souvent utilisées dans les applications Web pour générer des documents XML à partir de données stockées dans une base de données. Les applications Web qui utilisent Xalan-J doivent être vérifiées pour détecter les vulnérabilités d'injection de code côté serveur. ```markup Write Local File ``` Autres façons d'écrire des fichiers dans le PDF ## Inclure un XSL externe ```markup ``` ```markup ``` ## Exécuter du code ### **php:function** ```markup ``` ```markup
``` Exécuter du code en utilisant d'autres frameworks dans le PDF ### **Plus de langages** **Sur cette page, vous pouvez trouver des exemples de RCE dans d'autres langages:** [**https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET**](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET) **(C#, Java, PHP)** ## **Accéder aux fonctions statiques PHP à partir de classes** La fonction suivante appellera la méthode statique `stringToUrl` de la classe XSL: ```markup ``` ## **Liste de détection de force brute** {% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xslt.txt" %} ## **Références** * [XSLT\_SSRF](https://feelsec.info/wp-content/uploads/2018/11/XSLT\_SSRF.pdf)\\ * [http://repository.root-me.org/Exploitation%20-%20Web/FR%20-%20Abuser%20d'XSLT%20pour%20des%20attaques%20pratiques%20-%20Arnaboldi%20-%20IO%20Active.pdf](http://repository.root-me.org/Exploitation%20-%20Web/FR%20-%20Abuser%20d'XSLT%20pour%20des%20attaques%20pratiques%20-%20Arnaboldi%20-%20IO%20Active.pdf)\\ * [http://repository.root-me.org/Exploitation%20-%20Web/FR%20-%20Abuser%20d'XSLT%20pour%20des%20attaques%20pratiques%20-%20Arnaboldi%20-%20Blackhat%202015.pdf](http://repository.root-me.org/Exploitation%20-%20Web/FR%20-%20Abuser%20d'XSLT%20pour%20des%20attaques%20pratiques%20-%20Arnaboldi%20-%20Blackhat%202015.pdf)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Travaillez-vous dans une **entreprise de cybersécurité**? Voulez-vous voir votre **entreprise annoncée dans HackTricks**? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF**? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)! * Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family) * Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) * **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.