databaseMSSQL (Microsoft SQL Server)

📚 Introduction

Microsoft SQL Server (MSSQL) est un système de gestion de base de données relationnelles (SGBDR) développé par Microsoft. Contrairement à MySQL, MSSQL est un logiciel propriétaire initialement conçu pour fonctionner sur systèmes Windows. Il est très populaire dans les environnements d’entreprise exploitant le framework .NET. Bien qu'il existe des versions compatibles avec Linux et macOS, MSSQL est le plus souvent rencontré sur serveurs Windows.


💻 Clients MSSQL

Le client natif le plus connu est SQL Server Management Studio (SSMS). Il est utilisé pour :

  • Gérer les bases MSSQL locales ou distantes

  • Accéder aux objets de la base de données (tables, vues, procédures)

  • Configurer les bases de données et utilisateurs

Autres clients utiles :

  • mssql-cli (interface en ligne de commande)

  • PowerShell SQLServer (module PowerShell)

  • HeidiSQL, SQLPro

  • impacket-mssqlclient.py : outil très utilisé en pentest

📌 Astuce :

locate mssqlclient.py

🏗️ Bases MSSQL par défaut

MSSQL contient plusieurs bases systèmes importantes :

Base par défaut
Rôle

master

Contient les informations système de l’instance

model

Modèle pour toute nouvelle base créée

msdb

Utilisée par le SQL Server Agent pour les jobs

tempdb

Base temporaire pour les objets volatils

resource

Lecture seule, contient les objets systèmes


⚙️ Configuration par défaut

Lors d'une installation par défaut, le service SQL tourne sous le compte NT SERVICE\MSSQLSERVER. L’authentification peut se faire par :

  • Windows Authentication (via Active Directory ou SAM local)

  • SQL Authentication (login + mot de passe MSSQL)

La connexion n’est pas chiffrée par défaut, ce qui peut exposer des crédentials sur le réseau.


☠️ Paramètres à risque

Voici quelques exemples de configurations à surveiller :

Paramètre/Détail
Risque

Connexion sans chiffrement

Interception des crédentials

Certificats auto-signés

Falsifiables pour interception

Utilisation de named pipes

Attaques de type relay/spoof

Compte sa actif avec mdp faible

Accès total à l’instance


🔍 Footprinting MSSQL

Par défaut, MSSQL écoute sur le port TCP 1433.

🔎 Scan Nmap avec scripts MSSQL

Ce scan peut révéler :

  • Nom de l’instance MSSQL

  • Version du serveur

  • Pipe nommé (ex: \\<IP CIBLE>\pipe\sql\query)

  • Configuration de clustering ou non

🔧 Metasploit : mssql_ping

Retourne :

  • Nom de l’hôte MSSQL

  • Instance, port, version

  • Pipe nommé actif


🔑 Connexion avec mssqlclient.py

Si nous disposons de crédentials valides :

Une fois connecté :


🧠 Commandes utiles MSSQL (T-SQL)

Commande
Description

select name from sys.databases;

Affiche les bases existantes

use <db>;

Sélectionne une base

select * from sys.tables;

Affiche les tables

select * from <table>;

Contenu d’une table

select user_name();

Affiche l’utilisateur connecté


🛡️ Recommandations

Pour se former efficacement :

  • Installer MSSQL sur une VM Windows (ou Docker Linux)

  • Tester les connexions via Windows Auth et SQL Auth

  • Analyser les logs, pipes, ports

🔐 Bonnes pratiques :

  • Désactiver le compte sa si inutilisé

  • Imposer l’authentification chiffrée

  • Suivre les recommandations de Microsoft pour durcir l’instance


📚 Ressources utiles


Enumerate the target using the concepts taught in this section. List the hostname of MSSQL server.

Nous effectuons un scan des informations concernant notre cible :

Ce scan nous permet d'identifier le nom de notre serveur hôte qui est ILF-SQL-01.


Connect to the MSSQL instance running on the target using the account (backdoor:Password1), then list the non-default database present on the server.

Nous nous connectons au serveur cible via mssqlclient.py :

Une fois connectés, nous pouvons utiliser la commande help afin de nous permettre de bien naviguer dans les bases de données présentes sur le client :

Nous pouvons alors lister les bases de données présentes sur le serveur :

Pour rappel, voici la liste des bases de données présentes par défaut :

Base par défaut
Rôle

master

Contient les informations système de l’instance

model

Modèle pour toute nouvelle base créée

msdb

Utilisée par le SQL Server Agent pour les jobs

tempdb

Base temporaire pour les objets volatils

resource

Lecture seule, contient les objets systèmes

Nous observons alors que la base de données qui est présente qui ne fait pas partie des DB par défaut est Employees.


Last updated