MSSQL
Cheatsheet de commandes Microsoft SQL Server orientée Red Team : connexion (sqlcmd, mssqlclient, sqsh), énumération des bases et permissions, abus de fonctions étendues (xp_cmdshell, xp_dirtree) pour exécuter des commandes ou récupérer des hashs via relais NTLM, et techniques de mouvement latéral via les linked servers.
🔗 Connexion (depuis un poste Windows)¶
Se connecter à un serveur SQL Server¶
Permet de se connecter à une base de données SQL Server depuis un terminal Windows en utilisant sqlcmd.
$serveur$: Nom ou adresse IP du serveur SQL$user$: Nom d’utilisateur$password$: Mot de passe
Astuce
Si l’authentification Windows est utilisée, remplace -U $user$ -P $password par -E pour utiliser l'utilisateur actuel.
🚀 Requêtes de base¶
Lister les bases de données¶
Affiche la liste des bases de données disponibles sur le serveur SQL.
Sélectionner une base de données¶
Permet de choisir une base de données spécifique pour exécuter les requêtes suivantes.
Lister les tables d’une base de données¶
Renvoie la liste des tables présentes dans la base de données en cours.
Lister les serveurs liés¶
Affiche les serveurs SQL Server liés permettant d’effectuer des requêtes inter-serveurs.
Lister les utilisateurs SQL Server¶
SELECT sp.name AS login, sp.type_desc AS login_type, sl.password_hash,
sp.create_date, sp.modify_date,
CASE WHEN sp.is_disabled = 1 THEN 'Disabled' ELSE 'Enabled' END AS status
FROM sys.server_principals sp
LEFT JOIN sys.sql_logins sl ON sp.principal_id = sl.principal_id
WHERE sp.type NOT IN ('G', 'R')
ORDER BY sp.name;
Affiche la liste des utilisateurs SQL, leurs statuts (activé/désactivé) et d’autres informations.
Astuce
Utile pour vérifier les comptes SQL et leurs statuts de connexion.
💻 Activer xp_cmdshell¶
Activer l’exécution de commandes système¶
Active l'option xp_cmdshell, qui permet d’exécuter des commandes système depuis SQL Server.
⚡ Exécuter une commande système¶
Exécute la commande whoami directement depuis SQL Server et affiche l’utilisateur en cours.
Astuce
Peut être utilisé pour vérifier les permissions du compte SQL Server sur le système.
📝 Lire / Écrire un fichier¶
Vérifier si nous avons la permission de lire un fichier¶
SELECT * FROM fn_my_permissions(NULL, 'SERVER')
WHERE permission_name='ADMINISTER BULK OPERATIONS'
OR permission_name='ADMINISTER DATABASE BULK OPERATIONS';
Affiche les permissions actuelles de l’utilisateur SQL pour la lecture et l’importation de fichiers.
Lire un fichier depuis le système¶
Lit le contenu du fichier spécifié et affiche son contenu sous forme de texte.
Astuce
Utile pour lire les fichiers système directement via SQL Server.
Écrire dans un fichier (nécessite des droits d’administrateur)¶
sp_configure 'show advanced options', 1
RECONFIGURE
sp_configure 'Ole Automation Procedures', 1
RECONFIGURE
DECLARE @OLE INT
DECLARE @FileID INT
EXECUTE sp_OACreate 'Scripting.FileSystemObject', @OLE OUT
EXECUTE sp_OAMethod @OLE, 'OpenTextFile', @FileID OUT, 'c:\fichier.txt', 8, 1
EXECUTE sp_OAMethod @FileID, 'WriteLine', Null, 'Coucou :)'
EXECUTE sp_OADestroy @FileID
EXECUTE sp_OADestroy @OLE
Crée un fichier texte et y écrit du contenu directement depuis SQL Server.
sp_OACreate: Crée une instance de l’objet Scripting.FileSystemObjectOpenTextFile: Ouvre ou crée un fichier en mode écritureWriteLine: Écrit du texte dans le fichier