
Strumento avanzato di penetration testing per MSSQL per movimento laterale, esecuzione di comandi, relay NTLM e attacchi brute-force tramite server collegati e molteplici metodi di autenticazione.
MSSqlPwner è uno strumento avanzato e versatile per pentesting, progettato per interagire e compromettere server MSSQL in modo agevole.
Questo strumento si basa su Impacket, che permette agli attaccanti di autenticarsi ai database utilizzando password in chiaro, hash NTLM e ticket Kerberos.
Con MSSqlPwner, gli utenti possono eseguire comandi personalizzati attraverso vari metodi, tra cui assembly personalizzato, xp_cmdshell, sp_oacreate (Ole Automation Procedures) e molto altro.
Lo strumento inizia con un'enumerazione ricorsiva sui server collegati e sulle possibili impersonificazioni, in modo da raccogliere tutte le possibili catene per l'esecuzione di comandi.
Inoltre, MSSqlPwner può essere utilizzato per capacità di NTLM relay, sfruttando funzioni come xp_dirtree, xp_subdirs, xp_fileexist.
Questo strumento può essere impiegato per valutazioni di movimento laterale ed esplorazione di server collegati.
Se l'utente MSSQL autenticato non dispone delle autorizzazioni per eseguire determinate operazioni, lo strumento può trovare la catena giusta che consentirà l'esecuzione del comando.
Ad esempio, se il tuo utente non può eseguire comandi nel contesto corrente, lo strumento costruirà una catena che utilizza un server collegato e si riconnette al nostro server con privilegi elevati.
Iniziare con mssqlpwner è semplicissimo. Puoi farlo scaricandolo direttamente dal repository:
pip install 'mssqlpwner@git+https://github.com/ScorpionesLabs/MSSqlPwner.git'
Oppure, usando pipx – e dovresti –, prova così:
pipx install 'git+https://github.com/ScorpionesLabs/MSSqlPwner.git'
E ora puoi usare il tuo nuovo strumento preferito:
mssqlpwner -hashes ':0CB6948805F797BF2A82807973B89537' 'Administrator'@172.16.2.12 -windows-auth interactive
Questo strumento supporta molteplici metodi di autenticazione, descritti di seguito.
Questo strumento è progettato per professionisti della sicurezza e ricercatori solo a scopo di test e non deve essere utilizzato per scopi illegali.
interactive: permette di utilizzare lo strumento in modo interattivo con esecuzione in tempo reale.enumerate: enumera i server collegati e le catene.get-chain-list – ottiene l'elenco delle catene:
-filter-hostname HOSTNAME – Ottiene risultati filtrati con hostname specifico.get-link-server-list – ottiene l'elenco dei server collegati.set-chain – Imposta l'ID della catena (solo per modalità interattiva!)
CHAIN – L'ID della catena da impostare.set-link-server – Imposta il server collegato (solo per modalità interattiva!)
LINK – Il server collegato da impostare.get-rev2self-queries – Recupera le query per tornare a SELF (solo per modalità interattiva!).get-adsi-provider-list – Recupera l'elenco dei provider ADSI.rev2self – Torna a SELF (solo per modalità interattiva!).exec – Esegue comandi usando exec sul server locale o su server collegati
COMMAND – Il comando da eseguire.-command_execution_method – Il metodo di esecuzione del comando da utilizzare.
xp_cmdshell – Esegue comandi usando la procedura xp_cmdshell (predefinito).sp_oacreate – Esegue comandi usando la procedura Ole Automation Procedure (da usare come "cmd /c qualcosa").retrieve-password – Recupero password dai provider ADSI.
-listen-port – La porta su cui ascoltare (predefinito: 1389).-adsi-provider – Provider ADSI da utilizzare (se non definito, verrà scelto automaticamente).-arch – L'architettura da utilizzare (se non definita, verrà scelta automaticamente).
x86 – Usa architettura x86.x64 – Usa architettura x64.ntlm-relay – Forza un relay NTLM verso un server.
SMB_SERVER – Il server SMB verso cui fare il relay.-relay-method – Il metodo di relay da utilizzare.
xp_dirtree – Usa la procedura xp_dirtree (predefinito).xp_subdirs – Usa la procedura xp_subdirs.xp_fileexist – Usa la procedura xp_fileexist (in alcune situazioni questo modulo deve essere eseguito da una catena privilegiata).custom-asm – Esegue procedure usando assembly personalizzato
COMMAND – Il comando/percorso o query da usare.-procedure-name – Il nome della procedura da usare (predefinito: execute_command).
execute_command – Esegue comandi usando assembly personalizzato (predefinito).run_query – Esegue query usando assembly personalizzato.run_query_system_service – Esegue query usando assembly personalizzato come utente sistema (tipo SqlSVC).inject-custom-asm – Inietta codice usando assembly personalizzato.
file_location – La posizione del file da iniettare.-procedure-name – Il nome della procedura da usare (predefinito: Inject).direct-query – Esegue query diretteQUERY – La query da eseguire.-query-method – Il metodo di query da usare.
OpenQuery – Usa la procedura OpenQuery (predefinito).exec_at – Usa la procedura exec AT.brute – Avvia la forza bruta (può ricevere ticket, hash e password)TARGETS_FILE – Un file contenente host e IP su cui fare brute force.-ul – Un file contenente utenti su cui fare brute force.-pl – Un file contenente password su cui fare brute force.-tl – Un file contenente ticket su cui fare brute force.-hl – Un file contenente hash su cui fare brute force.-link-name – Il nome del server collegato da usare-chain-id – L'ID della catena da usare-max-link-depth – La profondità massima del collegamento da usare (predefinito: 10)-max-impersonation-depth – La profondità massima dell'impersonificazione da usare (predefinito: 10)-auto-yes – Risponde automaticamente sì a tutte le domande (predefinito: False)-timeout – Il timeout da usare (predefinito: 30)