
Toolkit offensivo per MSSQL scritto in Python, basato su SQLRecon
PySQLRecon
PySQLRecon è un porting Python del fantastico progetto SQLRecon di @sanjivkawa. Vedi la sezione comandi per un elenco delle capacità.
Post che dimostra SCCM TAKEOVER-1 con PySQLRecon.
PySQLRecon può essere installato con pip3 install pysqlrecon o clonando questo repository ed eseguendo pip3 install .
Tutti i moduli principali di SQLRecon hanno comandi equivalenti. I comandi contrassegnati con [PRIV] richiedono privilegi elevati o diritti di amministratore di sistema per essere eseguiti. In alternativa, i comandi contrassegnati con [NORM] possono probabilmente essere eseguiti da utenti normali e non richiedono privilegi elevati.
Il supporto per l'impersonificazione ([I]) o l'esecuzione su server collegati ([L]) è indicato alla fine della descrizione del comando.
adsi [PRIV] Ottieni credenziali ADSI dal server collegato ADSI [I,L]
agentcmd [PRIV] Esegui un comando di sistema utilizzando i processi dell'agente [I,L]
agentstatus [PRIV] Enumera lo stato e i processi dell'agente SQL [I,L]
checkrpc [NORM] Enumera lo stato RPC dei server collegati [I,L]
clr [PRIV] Carica ed esegui assembly .NET in una stored procedure [I,L]
columns [NORM] Enumera le colonne all'interno di una tabella [I,L]
databases [NORM] Enumera i database su un server [I,L]
disableclr [PRIV] Disabilita l'integrazione CLR [I,L]
disableole [PRIV] Disabilita le procedure di automazione OLE [I,L]
disablerpc [PRIV] Disabilita RPC e RPC Out sul server collegato [I]
disablexp [PRIV] Disabilita xp_cmdshell [I,L]
enableclr [PRIV] Abilita l'integrazione CLR [I,L]
enableole [PRIV] Abilita le procedure di automazione OLE [I,L]
enablerpc [PRIV] Abilita RPC e RPC Out sul server collegato [I]
enablexp [PRIV] Abilita xp_cmdshell [I,L]
impersonate [NORM] Enumera gli utenti che possono essere impersonificati
info [NORM] Raccogli informazioni sul server SQL
links [NORM] Enumera server collegati [I,L]
olecmd [PRIV] Esegui un comando di sistema utilizzando procedure di automazione OLE [I,L]
query [NORM] Esegui una query SQL personalizzata [I,L]
rows [NORM] Ottieni il conteggio delle righe in una tabella [I,L]
sample [NORM] Query di un campione di dati di tabella [I,L]
sccm [SUBM] Sottomodulo per comandi specifici di SCCM
search [NORM] Cerca in una tabella un nome di colonna [I,L]
smb [NORM] Forza l'autenticazione NetNTLM tramite xp_dirtree [I,L]
tables [NORM] Enumera le tabelle all'interno di un database [I,L]
users [NORM] Enumera gli utenti con accesso al database [I,L]
whoami [NORM] Raccogli utente connesso, utente mappato e ruoli [I,L]
xpcmd [PRIV] Esegui un comando di sistema utilizzando xp_cmdshell [I,L]
I comandi SCCM si trovano eseguendo pysqlrecon [OPTIONS] sccm -h (i flag globali richiesti devono essere specificati per farlo funzionare - vedi utilizzo)
addadmin [PRIV] Eleva un account ad Amministratore completo [I]
credentials [NORM] Mostra credenziali crittografate [I]
logons [NORM] Mostra client SCCM e ultimo utente connesso [I]
removeadmin [PRIV] Rimuovi account elevato o privilegi elevati [I]
sites [NORM] Raccogli informazioni sui siti SCCM [I]
taskdata [NORM] Decifra sequenze di attività [I]
tasklist [NORM] Mostra sequenze di attività [I]
users [NORM] Enumera utenti SCCM [I]
PySQLRecon dispone di opzioni globali (disponibili per qualsiasi comando), con alcuni comandi che introducono flag aggiuntivi. Tutte le opzioni globali devono essere specificate prima del nome del comando:
pysqlrecon [GLOBAL_OPTS] COMMAND [COMMAND_OPTS]
Visualizza le opzioni globali:
pysqlrecon --help
Visualizza le opzioni specifiche del comando:
pysqlrecon [GLOBAL_OPTS] COMMAND --help
Cambia il database a cui autenticarsi, o utilizzato in alcuni comandi di PySQLRecon (query, tables, columns rows), con il flag --database.
Esegui come target un comando di PySQLRecon su un server collegato (invece del server SQL a cui si è autenticati) utilizzando il flag --link.
Impersonifica un account utente durante l'esecuzione di un comando PySQLRecon con il flag --impersonate.
--link e --impersonate sono incompatibili.
ntlmrelayxPySQLRecon può essere utilizzato con proxychains per sfruttare l'autenticazione reindirizzata verso un servizio mssql://. A causa del funzionamento delle sessioni ntlmrelayx, il parametro --database non verrà rispettato durante l'esecuzione di PySQLRecon (la sessione di relay sarà sempre connessa al database master). Questo può essere rilevante specialmente quando si utilizzano moduli SCCM, che richiedono che il database del sito sia specificato. Per risolvere, prima cambia il contesto del database utilizzando il modulo query (questo persisterà in qualsiasi utilizzo successivo di PySQLRecon, con la stessa sessione di relay). Esempio:
proxychains4 pysqlrecon -t <target> -d <DOMAIN> -u <username> -p FAKE query --query 'use new_db_name'
Ora puoi eseguire moduli/query che mirano a risorse all'interno di quel database specifico, anche senza specificare --database, dalla stessa sessione ntlmrelayx.
pysqlrecon utilizza uv per gestire le dipendenze. Installa dal sorgente e configura per lo sviluppo con:
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install pysqlrecon
git clone https://github.com/tw1sm/pysqlrecon
cd pysqlrecon
uv sync
uv run pysqlrecon --help
PySQLRecon è facilmente estendibile - vedi il template e le istruzioni in resources