Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
MSSQLand — Outil de post-exploitation C# ciblé pour Microsoft SQL Server (MS SQL / MSSQL) parcourant des chaînes de serveurs liés de toute profondeur avec usurpation d'identité de connexion en cascade à chaque saut. | Kitploit
Outils/GitHubGitHub/n3rada/mssqland
Escalade de PrivilègesOutils d'ImpersonationMouvement LatéralAudit de ConfigurationCollecte d'InformationsPost-ExploitationTests d'IntrusionRed TeamingSécurité des Bases de Données
GitHubn3rada/mssqland

MSSQLand

Outil de post-exploitation C# ciblé pour Microsoft SQL Server (MS SQL / MSSQL) parcourant des chaînes de serveurs liés de toute profondeur avec usurpation d'identité de connexion en cascade à chaque saut.

7591il y a 26 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt

✈️ MSSQLand

Atterrissez en toute élégance sur votre Microsoft SQL Server (MS SQL) SGBD cible, comme si vous arriviez en voyage d'affaires avec une coupe de champagne à la main. 🥂

Capacités de chaînage de MSSQLand

MSSQLand est un outil de post-exploitation C# pour Microsoft SQL Server (MSSQL / MS SQL) conçu pour les opérateurs red team. Conçu pour s'exécuter directement dans l'environnement cible via vos beacons (par exemple, en utilisant execute-assembly dans Cobalt Strike ou Havoc, ou toute commande dotnet), il vous permet de traverser des chaînes de serveurs liés, d'usurper l'identité de toute connexion rencontrée en cours de route, et d'émerger du dernier saut avec l'action souhaitée. Le tout avec une empreinte OPSEC minimale et aucune dépendance externe.

  • Traversée de serveurs liés : encapsulation automatique via OPENQUERY / EXEC AT sur des chaînes de profondeur arbitraire
  • Usurpation d'identité : EXECUTE AS LOGIN à chaque saut avec usurpation en cascade multi-utilisateur
  • Authentification : jeton Windows courant, pass-the-hash via usurpation de jeton du beacon, Kerberos
  • Découverte : SQL Browser (UDP 1434), énumération des SPN Active Directory via LDAP, broadcast, scan de ports TDS
  • ConfigMgr / SCCM / MECM : actions dédiées cm-* pour la reconnaissance et l'exploitation des bases de données Microsoft Configuration Manager
  • Sortie : tableaux compatibles Markdown avec horodatages, export CSV pour des livrables de test d'intrusion propres

[!TIP] MSSQLand est construit avec .NET Framework 4.8, en pensant à une exécution en assembly, utilisant le contexte courant. Si vous devez vous connecter en utilisant des hashs NT/LM ou un ticket Kerberos, consultez la section Pass-the-Hash.

[!NOTE] N'oubliez pas les bases. Lors d'une évaluation de sécurité, il est parfois plus simple d'utiliser SQL Server Management Studio (SSMS).

🧸 Utilisation

root@kitploit:~
MSSQLand.exe [options] <host> [options] <action> [action-options]
MSSQLand.exe <host> --probe

Les flags globaux (-c, -l, --debug, etc.) sont acceptés à n'importe quelle position, y compris après le nom de l'action ; les tokens non reconnus après l'action sont passés tels quels à l'action.

[!NOTE] Omettre <action> effectue uniquement un test de connexion. Il s'authentifie et se termine sans exécuter de requêtes. Idéal pour valider des identifiants avec une empreinte OPSEC minimale.

[!TIP] Évitez de saisir manuellement tous les appels RPC Out ou OPENQUERY. Laissez l'outil gérer toute chaîne de serveurs liés avec l'argument -l, afin de pouvoir vous concentrer sur la vue d'ensemble.

Format : server:port/user@database ou toute combinaison server/user@database:port.

  • server (obligatoire) - Le nom d'hôte ou l'IP du serveur SQL
  • :port (optionnel) - Numéro de port (par défaut : 1433, également courant : 1434, 14333, 2433)
  • /user (optionnel) - Utilisateur à usurper sur ce serveur ("execute as login")
    • Prend en charge l'usurpation en cascade : /user1/user2/user3 exécute EXECUTE AS LOGIN = 'user1'; EXECUTE AS LOGIN = 'user2'; EXECUTE AS LOGIN = 'user3';
    • Chaque /user ajoute un nouveau contexte d'usurpation sur la pile de sécurité
  • @database (optionnel) - Contexte de base de données
root@kitploit:~
# Sonde de connectivité : vérifie si le serveur est actif sans s'authentifier
MSSQLand.exe localhost --probe

# Test de connexion uniquement (aucune action exécutée, s'authentifie et quitte)
MSSQLand.exe localhost -c token

# Exécute une action spécifique
MSSQLand.exe localhost -c token info
MSSQLand.exe localhost:1434@db03 -c token info
MSSQLand.exe LAB-SQL01@AdventureWorks -c token tables -n Customer

🔗 Chaîne de serveurs liés

Enchaînez plusieurs serveurs SQL à l'aide du flag -l avec le point-virgule (;) comme séparateur :

root@kitploit:~
-l SQL01;SQL02/user;SQL03@database

Syntaxe :

  • Point-virgule (;) - Sépare les serveurs dans la chaîne
  • Barre oblique (/) - Spécifie l'utilisateur à usurper ("execute as login")
    • Prend en charge l'usurpation en cascade : /user1/user2 exécute des usurpations séquentielles
  • Arobase (@) - Spécifie le contexte de base de données
  • Crochets ([...]) - Utilisés pour protéger le nom du serveur d'une division par nos délimiteurs

Exemples :

root@kitploit:~
# Chaîne simple
-l SQL01;SQL02;SQL03

# Avec usurpation et bases de données
-l SQL01/admin;SQL02;SQL03/manager@clients

# Usurpation en cascade (usurper user1, puis user2 sur SQL01)
-l SQL01/user1/user2;SQL02;SQL03

# Cascade mixte (SQL01 : user1→user2, SQL03 : user3→user4→user5)
-l SQL01/user1/user2;SQL02;SQL03/user3/user4/user5@database

# Les noms de serveurs peuvent contenir des tirets, des points (pas besoin de crochets)
-l SQL-01;SERVER.001;HOST.DOMAIN.COM

# Les crochets ne sont nécessaires que si le nom du serveur contient des caractères délimiteurs
-l [SERVER;PROD];SQL02;[SQL03@clients]@clientdb

[!NOTE] La spécification de port (:port) s'applique uniquement à la connexion initiale à l'hôte. Les chaînes de serveurs liés (-l) utilisent les noms de serveurs liés tels que configurés dans sys.servers, et non les combinaisons hôte:port.

🔍 Découverte

Ces modes ne nécessitent aucune authentification et fonctionnent avant d'avoir des identifiants.

📡 Service de navigation

Le service SQL Server Browser écoute sur UDP 1434 et répond aux requêtes de découverte avec la liste des instances SQL Server en cours d'exécution sur un hôte, y compris leurs noms, versions et ports TCP. Utile lorsque la cible exécute des instances nommées sur des ports dynamiques, sans avoir à deviner ou scanner.

root@kitploit:~
# Interroge le service SQL Browser sur un hôte spécifique (UDP 1434)
MSSQLand.exe LAB-SQL03 --browse

📂 Requêtes LDAP

Active Directory expose les enregistrements SQL Server via des Service Principal Names (SPNs) stockés sur les comptes d'ordinateur et de service. MSSQLand interroge AD via LDAP pour les SPNs MSSQLSvc/* afin d'énumérer les instances SQL Server dans le domaine, ou dans toute la forêt via le Global Catalog.

root@kitploit:~
# Trouve les serveurs SQL dans Active Directory via LDAP (domaine courant)
MSSQLand.exe --findsql

# Cible un domaine spécifique
MSSQLand.exe --findsql pgd.lab

# Recherche dans toute la forêt via le Global Catalog (port 3268)
MSSQLand.exe --findsql pgd.lab --gc

La découverte est multicouche. Voir FindSqlServers.cs pour plus de détails.

📢 Broadcast

Le service SQL Server Browser répond également aux paquets UDP broadcast sur UDP 1434, permettant de découvrir toutes les instances SQL Server s'annonçant sur le sous-réseau local.

root@kitploit:~
# Découverte par broadcast sur le réseau local (UDP 1434)
MSSQLand.exe --broadcast
MSSQLand.exe --broadcast --timeout 5

[!TIP] Cela est particulièrement utile lorsqu'un SQL Server s'exécute sur une machine qui n'est pas jointe au domaine et n'apparaîtra donc dans aucune requête LDAP ou SPN. Pensez aux serveurs autonomes, aux machines de développeur ou aux instances non autorisées déployées sur un VLAN interne.

🔌 Scan de ports

Valide les ports ouverts par rapport aux instances SQL Server actives en utilisant les poignées de main du protocole TDS (pas seulement TCP SYN). Un port n'est signalé que s'il répond à un paquet de pré-connexion TDS.

root@kitploit:~
MSSQLand.exe LAB-SQL03 --portscan
MSSQLand.exe LAB-SQL03 --portscan --all           # Trouve toutes les instances (plage éphémère complète)
MSSQLand.exe LAB-SQL03 --portscan 65184           # Port unique
MSSQLand.exe LAB-SQL03 --portscan 65180-65190     # Plage de ports
MSSQLand.exe LAB-SQL03 --portscan 1433,5000,65184 # Liste séparée par des virgules

🔑 Pass-the-Hash

MSSQLand s'exécute en tant qu'assembly .NET dans un beacon et s'authentifie toujours en utilisant le contexte d'exécution courant (-c token). Lorsque vous disposez d'un hash, la bonne approche consiste d'abord à forger un token au niveau du beacon, puis à exécuter MSSQLand normalement. System.Data.SqlClient hérite de ce token de manière transparente, et aucune implémentation TDS personnalisée n'est requise.

Implémenter NTLMv2 à partir de zéro dans MSSQLand signifierait :

  • Remplacer System.Data.SqlClient par une pile TDS 7.x faite main (trop de lignes de code socket, TLS et NTLM).
  • Maintenir cette implémentation face aux particularités des versions de SQL Server, aux changements de politique TLS et aux cas limites des flux de tokens.
  • N'offrir aucun avantage fonctionnel par rapport à l'approche par token dans la grande majorité des engagements.

Si vous devez vous authentifier avec un ticket Kerberos ou des hashs NT/LM depuis une position externe, mssqlclient-ng est l'outil approprié. Il s'agit d'un client Python 3 conçu pour un accès côté Unix, facilement associé à un proxy SOCKS5 établi depuis votre beacon.

🌉 Redirection de ports avec Linux

Si vous exécutez MSSQLand sur votre hôte Windows mais devez accéder à une cible SQL Server via un environnement Linux (VM Hyper-V, VMware ou WSL), vous pouvez facilement rediriger la connexion à l'aide de socat :

root@kitploit:~
sudo socat TCP4-LISTEN:1433,fork,reuseaddr TCP:10.10.11.90:1433

Cette commande écoute sur le port 1433 de votre machine Linux et redirige tout le trafic vers le serveur SQL cible à 10.10.11.90:1433. Vous pouvez ensuite connecter MSSQLand à l'IP de votre VM Linux depuis votre hôte Windows.

❓ Aide

  • -h ou --help - Affiche toutes les actions disponibles
  • -h search_term - Filtre les actions (par exemple, -h adsi affiche toutes les actions liées à ADSI)
  • localhost -c token createuser -h - Affiche l'aide détaillée pour une action spécifique

🔧 Prise en charge de Configuration Manager (ConfigMgr)

MSSQLand inclut une prise en charge complète pour l'exploitation et la reconnaissance de Microsoft Configuration Manager (anciennement SCCM / MECM). Lorsque vous avez accès à un serveur de base de données ConfigMgr, vous pouvez utiliser des actions spécialisées pour le renseignement sur les périphériques (par exemple, cm-devices) ou la cartographie de l'infrastructure.

Toutes les actions ConfigMgr utilisent le préfixe cm- (par exemple, cm-scripts, cm-package) pour s'aligner sur la convention de nommage des cmdlets PowerShell officiels de Microsoft (Get-CM*, Set-CM*, etc.).

📸 Sortie propre pour des rapports soignés

La sortie de l'outil, enrichie d'horodatages et d'informations contextuelles précieuses, est conçue pour produire des résultats visuellement attrayants et professionnels, ce qui la rend idéale pour capturer des captures d'écran de haute qualité pour tous vos rapports (par exemple, livrables clients, rapports internes, évaluations red team).

Tous les tableaux de sortie sont compatibles Markdown et peuvent être copiés-collés directement dans vos notes sans aucune difficulté de formatage.

[!TIP] Vous pouvez également obtenir une sortie compatible .csv en utilisant l'option --format csv : MSSQLand.exe localhost -c token --format csv --silent procedures > procedures.csv

🤝 Contribuer

Les contributions sont les bienvenues et appréciées ! Que ce soit pour corriger des bugs, ajouter de nouvelles fonctionnalités, améliorer la documentation ou partager des retours, vos efforts sont valorisés et font la différence. L'open source prospère grâce à la collaboration et à la reconnaissance. Les contributions, grandes ou petites, aident à améliorer l'outil et sa communauté. Votre temps et vos efforts sont vraiment appréciés.

Ici, personne ne sera effacé de l'historique Git. Pas de crainte à avoir ici. Personne ne copiera-collera votre code sans respecter l'éthique collaborative de l'open source.

Veuillez consulter CONTRIBUTING.md pour des directives détaillées sur la façon de commencer.

🥚 Origine

Si vous vous demandez pourquoi cela existe et non comme contribution à d'autres projets SQL Server, voir ORIGIN.md.

⚠️ Avertissement

Cet outil est fourni strictement à des fins de recherche en sécurité défensive, d'éducation et de tests d'intrusion autorisés. Vous devez disposer d'une autorisation écrite explicite avant d'exécuter ce logiciel sur tout système dont vous n'êtes pas propriétaire.

Cet outil est conçu à des fins éducatives uniquement et vise à aider les professionnels de la sécurité à comprendre et tester la sécurité des environnements SQL Server dans le cadre d'engagements autorisés.

Les environnements acceptables incluent :

  • Les environnements de laboratoire privés que vous contrôlez (VM locales, réseaux isolés).
  • Les plateformes d'apprentissage autorisées (CTF, Hack The Box, scénarios d'examen OffSec).
  • Les tests d'intrusion formels ou les engagements red team avec un consentement client documenté.

Toute utilisation abusive de ce projet peut entraîner des poursuites judiciaires.

⚖️ Avis légal

Toute utilisation non autorisée de cet outil dans des environnements réels ou contre des systèmes sans autorisation explicite du propriétaire du système est strictement interdite et peut violer les normes légales et éthiques. Les créateurs et contributeurs de cet outil ne sont pas responsables de toute utilisation abusive ou des dommages causés.

Utilisez-le de manière responsable et éthique. Respectez toujours la loi et obtenez les autorisations appropriées.

Télécharger l’outil