
Offensives MSSQL-Toolkit geschrieben in Python, basiert auf SQLRecon
PySQLRecon
PySQLRecon ist ein Python-Port des großartigen Projekts SQLRecon von @sanjivkawa. Siehe den Abschnitt Befehle für eine Liste der Fähigkeiten.
Beitrag demonstriert SCCM TAKEOVER-1 mit PySQLRecon.
PySQLRecon kann mit pip3 install pysqlrecon installiert werden oder durch Klonen dieses Repositories und Ausführen von pip3 install .
Alle Hauptmodule von SQLRecon haben entsprechende Befehle. Mit [PRIV] gekennzeichnete Befehle erfordern erhöhte Berechtigungen oder Sysadmin-Rechte, um ausgeführt zu werden. Alternativ können mit [NORM] markierte Befehle wahrscheinlich von normalen Benutzern ausgeführt werden und erfordern keine erhöhten Rechte. Unterstützung für Identitätswechsel ([I]) oder Ausführung auf verknüpften Servern ([L]) wird am Ende der Befehlsbeschreibung angegeben.
adsi [PRIV] Obtain ADSI creds from ADSI linked server [I,L]
agentcmd [PRIV] Execute a system command using agent jobs [I,L]
agentstatus [PRIV] Enumerate SQL agent status and jobs [I,L]
checkrpc [NORM] Enumerate RPC status of linked servers [I,L]
clr [PRIV] Load and execute .NET assembly in a stored procedure [I,L]
columns [NORM] Enumerate columns within a table [I,L]
databases [NORM] Enumerate databases on a server [I,L]
disableclr [PRIV] Disable CLR integration [I,L]
disableole [PRIV] Disable OLE automation procedures [I,L]
disablerpc [PRIV] Disable RPC and RPC Out on linked server [I]
disablexp [PRIV] Disable xp_cmdshell [I,L]
enableclr [PRIV] Enable CLR integration [I,L]
enableole [PRIV] Enable OLE automation procedures [I,L]
enablerpc [PRIV] Enable RPC and RPC Out on linked server [I]
enablexp [PRIV] Enable xp_cmdshell [I,L]
impersonate [NORM] Enumerate users that can be impersonated
info [NORM] Gather information about the SQL server
links [NORM] Enumerate linked servers [I,L]
olecmd [PRIV] Execute a system command using OLE automation procedures [I,L]
query [NORM] Execute a custom SQL query [I,L]
rows [NORM] Get the count of rows in a table [I,L]
sample [NORM] Query a sample of table data [I,L]
sccm [SUBM] Submodule for SCCM specific commands
search [NORM] Search a table for a column name [I,L]
smb [NORM] Coerce NetNTLM auth via xp_dirtree [I,L]
tables [NORM] Enumerate tables within a database [I,L]
users [NORM] Enumerate users with database access [I,L]
whoami [NORM] Gather logged in user, mapped user and roles [I,L]
xpcmd [PRIV] Execute a system command using xp_cmdshell [I,L]
SCCM-Befehle finden Sie durch Ausführen von pysqlrecon [OPTIONS] sccm -h (erforderliche globale Flags müssen dafür angegeben werden - siehe Verwendung)
addadmin [PRIV] Elevate an account to Full Administrator [I]
credentials [NORM] Display encrypted credentials [I]
logons [NORM] Display SCCM clients and last logged on user [I]
removeadmin [PRIV] Remove elevated account or elevated privileges [I]
sites [NORM] Gather SCCM site info [I]
taskdata [NORM] Decrypt task sequences [I]
tasklist [NORM] Display task sequences [I]
users [NORM] Enumerate SCCM users [I]
PySQLRecon hat globale Optionen (für jeden Befehl verfügbar), wobei einige Befehle zusätzliche Flags einführen. Alle globalen Optionen müssen vor dem Befehlsnamen angegeben werden:
pysqlrecon [GLOBAL_OPTS] COMMAND [COMMAND_OPTS]
Globale Optionen anzeigen:
pysqlrecon --help
Befehlsspezifische Optionen anzeigen:
pysqlrecon [GLOBAL_OPTS] COMMAND --help
Ändern Sie die Datenbank, für die die Authentifizierung erfolgt oder die in bestimmten PySQLRecon-Befehlen (query, tables, columns, rows) verwendet wird, mit dem Flag --database.
Zielen Sie die Ausführung eines PySQLRecon-Befehls auf einem verknüpften Server (anstelle des SQL-Servers, für den die Authentifizierung erfolgt) mit dem Flag --link.
Identitätswechsel eines Benutzerkontos während der Ausführung eines PySQLRecon-Befehls mit dem Flag --impersonate.
--link und --impersonate sind inkompatibel.
ntlmrelayxPySQLRecon kann mit proxychains verwendet werden, um weitergeleitete Authentifizierung gegen einen mssql://-Dienst auszunutzen. Aufgrund der Funktionsweise von ntlmrelayx-Sitzungen wird der Parameter --database bei der Ausführung von PySQLRecon nicht beachtet (die Relay-Sitzung ist immer mit der Master-Datenbank verbunden). Dies kann insbesondere bei der Verwendung von SCCM-Modulen relevant sein, die die Angabe der Standortdatenbank erfordern. Um dies zu beheben, ändern Sie zunächst den Datenbankkontext mit dem Modul query (dies bleibt bei jeder weiteren Nutzung von PySQLRecon in derselben Relay-Sitzung bestehen). Beispiel:
proxychains4 pysqlrecon -t <target> -d <DOMAIN> -u <username> -p FAKE query --query 'use new_db_name'
Sie können jetzt Module/Queries ausführen, die auf Ressourcen in dieser bestimmten Datenbank abzielen, auch ohne --database anzugeben, von derselben ntlmrelayx-Sitzung aus.
pysqlrecon verwendet uv zur Verwaltung von Abhängigkeiten. Installieren Sie aus dem Quellcode und richten Sie die Entwicklung ein mit:
# 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 ist einfach erweiterbar - siehe die Vorlage und Anleitung in resources