
Boîte à outils offensive MSSQL écrite en Python, basée sur SQLRecon
PySQLRecon
PySQLRecon est un portage Python de l'excellent projet SQLRecon de @sanjivkawa. Consultez la section commandes pour la liste des fonctionnalités.
Article démontrant SCCM TAKEOVER-1 avec PySQLRecon.
PySQLRecon peut être installé avec pip3 install pysqlrecon ou en clonant ce dépôt et en exécutant pip3 install .
Tous les modules principaux de SQLRecon ont des commandes équivalentes. Les commandes notées [PRIV] nécessitent des privilèges élevés ou des droits d'administrateur système pour être exécutées. Les commandes marquées [NORM] peuvent généralement être exécutées par des utilisateurs normaux sans privilèges élevés.
La prise en charge de l'usurpation ([I]) ou de l'exécution sur des serveurs liés ([L]) est indiquée à la fin de la description de la commande.
adsi [PRIV] Obtention des identifiants ADSI depuis un serveur lié ADSI [I,L]
agentcmd [PRIV] Exécution d'une commande système via des travaux d'agent [I,L]
agentstatus [PRIV] Énumération de l'état de l'agent SQL et des travaux [I,L]
checkrpc [NORM] Énumération de l'état RPC des serveurs liés [I,L]
clr [PRIV] Chargement et exécution d'un assembly .NET dans une procédure stockée [I,L]
columns [NORM] Énumération des colonnes d'une table [I,L]
databases [NORM] Énumération des bases de données sur un serveur [I,L]
disableclr [PRIV] Désactivation de l'intégration CLR [I,L]
disableole [PRIV] Désactivation des procédures d'automatisation OLE [I,L]
disablerpc [PRIV] Désactivation de RPC et RPC Out sur un serveur lié [I]
disablexp [PRIV] Désactivation de xp_cmdshell [I,L]
enableclr [PRIV] Activation de l'intégration CLR [I,L]
enableole [PRIV] Activation des procédures d'automatisation OLE [I,L]
enablerpc [PRIV] Activation de RPC et RPC Out sur un serveur lié [I]
enablexp [PRIV] Activation de xp_cmdshell [I,L]
impersonate [NORM] Énumération des utilisateurs pouvant être usurpés
info [NORM] Collecte d'informations sur le serveur SQL
links [NORM] Énumération des serveurs liés [I,L]
olecmd [PRIV] Exécution d'une commande système via des procédures d'automatisation OLE [I,L]
query [NORM] Exécution d'une requête SQL personnalisée [I,L]
rows [NORM] Comptage du nombre de lignes dans une table [I,L]
sample [NORM] Interrogation d'un échantillon de données d'une table [I,L]
sccm [SUBM] Sous-module pour les commandes spécifiques à SCCM
search [NORM] Recherche d'un nom de colonne dans une table [I,L]
smb [NORM] Forçage de l'authentification NetNTLM via xp_dirtree [I,L]
tables [NORM] Énumération des tables d'une base de données [I,L]
users [NORM] Énumération des utilisateurs ayant accès à la base de données [I,L]
whoami [NORM] Collecte de l'utilisateur connecté, de l'utilisateur mappé et des rôles [I,L]
xpcmd [PRIV] Exécution d'une commande système via xp_cmdshell [I,L]
Les commandes SCCM s'obtiennent en exécutant pysqlrecon [OPTIONS] sccm -h (les indicateurs globaux requis doivent être spécifiés pour que cela fonctionne – voir utilisation)
addadmin [PRIV] Élévation d'un compte en administrateur complet [I]
credentials [NORM] Affichage des identifiants chiffrés [I]
logons [NORM] Affichage des clients SCCM et du dernier utilisateur connecté [I]
removeadmin [PRIV] Suppression d'un compte élevé ou de privilèges élevés [I]
sites [NORM] Collecte des informations sur le site SCCM [I]
taskdata [NORM] Déchiffrement des séquences de tâches [I]
tasklist [NORM] Affichage des séquences de tâches [I]
users [NORM] Énumération des utilisateurs SCCM [I]
PySQLRecon dispose d'options globales (disponibles pour toute commande), certaines commandes introduisant des indicateurs supplémentaires. Toutes les options globales doivent être spécifiées avant le nom de la commande :
pysqlrecon [GLOBAL_OPTS] COMMANDE [COMMAND_OPTS]
Afficher les options globales :
pysqlrecon --help
Afficher les options spécifiques à une commande :
pysqlrecon [GLOBAL_OPTS] COMMANDE --help
Changer la base de données à laquelle s'authentifier, ou utilisée dans certaines commandes PySQLRecon (query, tables, columns, rows), à l'aide de l'indicateur --database.
Cibler l'exécution d'une commande PySQLRecon sur un serveur lié (au lieu du serveur SQL auquel on s'authentifie) à l'aide de l'indicateur --link.
Usurper un compte utilisateur lors de l'exécution d'une commande PySQLRecon avec l'indicateur --impersonate.
--link et --impersonate sont incompatibles.
ntlmrelayxPySQLRecon peut être utilisé avec proxychains pour tirer parti de l'authentification relayée ciblant un service mssql://. En raison du fonctionnement des sessions ntlmrelayx, le paramètre --database ne sera pas respecté lors de l'exécution de PySQLRecon (la session relayée sera toujours connectée à la base master). Cela peut avoir un impact, notamment lors de l'utilisation de modules SCCM qui nécessitent que la base de données du site soit spécifiée. Pour résoudre ce problème, changez d'abord le contexte de la base de données en utilisant le module query (cela persistera pour toute utilisation ultérieure de PySQLRecon, avec la même session relayée). Exemple :
proxychains4 pysqlrecon -t <cible> -d <DOMAINE> -u <utilisateur> -p FAKE query --query 'use nouvelle_base'
Vous pouvez maintenant exécuter des modules/requêtes ciblant des ressources dans cette base de données spécifique, même sans spécifier --database, à partir de la même session ntlmrelayx.
pysqlrecon utilise uv pour gérer les dépendances. Installez depuis les sources et configurez pour le développement avec :
# Installer uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Installer pysqlrecon
git clone https://github.com/tw1sm/pysqlrecon
cd pysqlrecon
uv sync
uv run pysqlrecon --help
PySQLRecon est facilement extensible – voir le modèle et les instructions dans resources