MSSQL
MSSQL - Guide Complet avec Commandes SQL Fondamentales
⚠️ Avertissement : Ce contenu est strictement destiné à un usage éducatif et éthique dans le domaine de la cybersécurité. Toute utilisation illégale ou malveillante est interdite et engage la seule responsabilité de l’utilisateur.
Introduction
Microsoft SQL Server (MSSQL) est un système de gestion de bases de données relationnelles largement utilisé dans les environnements professionnels. Lors d’un pentest, MSSQL peut être une cible intéressante pour découvrir des données sensibles, des vulnérabilités ou des configurations faibles. Ce guide fournit une méthodologie détaillée pour énumérer, interagir et exploiter MSSQL dans un cadre légal et éthique.
🚀 Étape 1 : Préparer l'Accès à MSSQL
1.1 Identifier le Port MSSQL
Par défaut, MSSQL utilise le port 1433 (TCP). Utilisez Nmap pour détecter les services MSSQL actifs :
Exemple de sortie :
Explications :
1433
: Port par défaut pour MSSQL.ms-sql-s
: Service MSSQL identifié.
1.2 Tester l’Accès avec des Identifiants
Si des identifiants sont disponibles, connectez-vous via sqlcmd (client MSSQL) ou mssqlclient.py d’Impacket.
Avec sqlcmd :
Exemple :
Avec mssqlclient.py :
Exemple :
1.3 Brute-Force des Identifiants
Si les identifiants sont inconnus, utilisez des outils comme Hydra ou Medusa pour brute-forcer les comptes.
Avec Hydra :
Avec Medusa :
🔍 Étape 2 : Énumération des Bases et Utilisateurs
2.1 Lister les Bases de Données
Après vous être connecté, utilisez cette commande pour afficher toutes les bases disponibles :
Exemple de sortie :
2.2 Explorer les Tables d’une Base
Sélectionnez une base de données et affichez ses tables :
Exemple :
2.3 Lister les Colonnes d’une Table
Pour examiner la structure d’une table, utilisez :
Exemple :
Exemple de sortie :
2.4 Lister les Utilisateurs MSSQL
Interrogez la table syslogins
pour identifier les utilisateurs :
Exemple de sortie :
2.5 Vérifier les Privilèges des Utilisateurs
Pour voir les permissions d’un utilisateur spécifique :
Exemple :
🛠️ Étape 3 : Exploitation et Recherche de Données Sensibles
3.1 Lire les Données d'une Table
Pour afficher les données contenues dans une table, utilisez :
Exemple :
3.2 Rechercher des Données Critiques
Identifiants ou mots de passe :
Emails :
3.3 Exécution de Commandes Système
Si vous disposez des privilèges sysadmin
, activez le mode xp_cmdshell pour exécuter des commandes système :
Activer
xp_cmdshell
:Exécuter une commande système :
3.4 Lire des Fichiers Locaux
Utilisez OPENROWSET
pour lire un fichier local si les permissions le permettent :
🔧 Étape 4 : Exporter et Sauvegarder les Données
4.1 Exporter une Table avec BCP
Si vous avez accès au serveur MSSQL, utilisez l’outil bcp
pour exporter des données :
Exemple :
4.2 Sauvegarder une Base
Créez une sauvegarde de la base si vous avez les permissions :
🔒 Étape 5 : Contre-Mesures et Sécurisation
5.1 Restreindre les Privilèges
Révoquez les permissions inutiles pour les utilisateurs :
5.2 Désactiver xp_cmdshell
Désactivez xp_cmdshell
pour éviter les exécutions de commandes système :
5.3 Activer un Pare-feu
Filtrez les connexions au port 1433 et limitez les accès aux IP autorisées.
5.4 Auditer et Surveiller les Activités
Activez l’audit MSSQL pour surveiller les activités suspectes :
Résumé des Commandes Clés
SELECT name FROM master.dbo.sysdatabases;
Liste toutes les bases de données.
SELECT * FROM information_schema.tables;
Liste les tables d’une base.
SELECT COLUMN_NAME, DATA_TYPE FROM ...;
Affiche les colonnes d’une table.
SELECT * FROM users LIMIT 10;
Affiche les 10 premières lignes d'une table.
EXEC xp_cmdshell '<commande>';
Exécute une commande système (si activé).
BACKUP DATABASE <database_name> ...;
Sauvegarde une base MSSQL.
Conclusion
Ce guide couvre les étapes nécessaires pour énumérer, interagir et exploiter MSSQL dans un cadre de pentest. Il inclut également des techniques pour protéger les serveurs MSSQL contre les abus. Utilisez toujours ces connaissances de manière éthique et légale pour sécuriser les systèmes et améliorer leur résilience.
Liens utiles :
Dernière mise à jour