* Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
**Microsoft SQL Server** est un système de gestion de base de données relationnelle développé par Microsoft. En tant que serveur de base de données, c'est un produit logiciel ayant pour fonction principale de stocker et de récupérer des données à la demande d'autres applications logicielles - qui peuvent s'exécuter soit sur le même ordinateur, soit sur un autre ordinateur via un réseau (y compris Internet).\
Depuis [wikipedia](https://en.wikipedia.org/wiki/Microsoft\_SQL\_Server).
* **Base de données master**: Enregistre toutes les informations de niveau système pour une instance de SQL Server.
* **Base de données msdb**: Est utilisée par SQL Server Agent pour planifier des alertes et des tâches.
* **Base de données model**: Est utilisée comme modèle pour toutes les bases de données créées sur l'instance de SQL Server. Les modifications apportées à la base de données modèle, telles que la taille de la base de données, la collation, le modèle de récupération et d'autres options de base de données, sont appliquées à toutes les bases de données créées par la suite.
* **Base de données Resource**: Est une base de données en lecture seule qui contient des objets système inclus avec SQL Server. Les objets système sont physiquement persistés dans la base de données Resource, mais ils apparaissent logiquement dans le schéma sys de chaque base de données.
* **Base de données tempdb**: Est un espace de travail pour contenir des objets temporaires ou des ensembles de résultats intermédiaires.
Si vous **n'avez pas** de **justificatifs d'identité**, vous pouvez essayer de les deviner. Vous pouvez utiliser nmap ou metasploit. Soyez prudent, vous pouvez **bloquer les comptes** si vous échouez à vous connecter plusieurs fois en utilisant un nom d'utilisateur existant.
SELECT * FROM <databaseName>.INFORMATION_SCHEMA.TABLES;
#List Linked Servers
EXEC sp_linkedservers
SELECT * FROM sys.servers;
#List users
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;
#Create user with sysadmin privs
CREATE LOGIN hacker WITH PASSWORD = 'P@ssword123!'
1.**Sécurisable :** Ce sont les ressources auxquelles le système d'autorisation du moteur de base de données SQL Server contrôle l'accès. Il existe trois catégories plus larges sous lesquelles un sécuable peut être différencié :
* Serveur - Par exemple, les bases de données, les connexions, les points de terminaison, les groupes de disponibilité et les rôles serveur
* Base de données - Par exemple, le rôle de base de données, les rôles d'application, le schéma, le certificat, le catalogue de texte intégral, l'utilisateur
* Schéma - Par exemple, table, vue, procédure, fonction, synonyme
2.**Autorisation :** Chaque sécuable SQL Server a des autorisations associées comme ALTER, CONTROL, CREATE qui peuvent être accordées à un principal. Les autorisations sont gérées au niveau du serveur à l'aide de connexions et au niveau de la base de données à l'aide d'utilisateurs.
3.**Principal :** L'entité qui reçoit une autorisation pour un sécuable est appelée un principal. Les principaux les plus courants sont les connexions et les utilisateurs de base de données. L'accès à un sécuable est contrôlé en accordant ou en refusant des autorisations ou en ajoutant des connexions et des utilisateurs à des rôles qui ont accès.
Notez que pour pouvoir exécuter des commandes, il est non seulement nécessaire d'avoir **`xp_cmdshell`** **activé**, mais également d'avoir la **permission EXECUTE sur la procédure stockée `xp_cmdshell`**. Vous pouvez savoir qui (sauf les sysadmins) peut utiliser **`xp_cmdshell`** avec:
[**Lisez cet article**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **pour trouver plus d'informations sur la façon d'abuser de cette fonctionnalité:**
Pour écrire des fichiers en utilisant `MSSQL`, nous **devons activer** [**les procédures d'automatisation Ole**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option), qui nécessite des privilèges d'administrateur, puis exécuter certaines procédures stockées pour créer le fichier:
Par défaut, `MSSQL` permet la **lecture de fichiers sur n'importe quel fichier du système d'exploitation auquel le compte a accès en lecture**. Nous pouvons utiliser la requête SQL suivante:
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTER BULK OPERATIONS' OR permission_name='ADMINISTER DATABASE BULK OPERATIONS';
MSSQL peut vous permettre d'exécuter des **scripts en Python et/ou R**. Ces codes seront exécutés par un **utilisateur différent** de celui utilisant **xp\_cmdshell** pour exécuter des commandes.
Microsoft SQL Server fournit **plusieurs procédures stockées étendues** qui vous permettent d'interagir non seulement avec le réseau, mais aussi avec le système de fichiers et même le [**Registre Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**:**
EXECUTE master.sys.xp_instance_regwrite 'HKEY_LOCAL_MACHINE', 'Software\Microsoft\MSSQLSERVER\SQLServerAgent\MyNewKey', 'MyNewValue', 'REG_SZ', 'Now you see me!';
### RCE avec la fonction définie par l'utilisateur MSSQL - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
Il est possible de **charger un fichier .NET dans MSSQL avec des fonctions personnalisées**. Cependant, cela **nécessite un accès `dbo`** donc vous avez besoin d'une connexion avec la base de données **en tant que `sa` ou un rôle d'administrateur**.
Il existe d'autres méthodes pour obtenir l'exécution de commandes, telles que l'ajout de [procédures stockées étendues](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [assemblages CLR](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [tâches de l'Agent SQL Server](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15), et [scripts externes](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
Si un **utilisateur régulier** se voit attribuer le rôle de **`db_owner`** sur la **base de données appartenant à un utilisateur administrateur** (tel que **`sa`**) et que cette base de données est configurée comme **`trustworthy`**, cet utilisateur peut abuser de ces privilèges pour **élever ses privilèges** car les **procédures stockées** créées dans cette base de données peuvent s'exécuter en tant que propriétaire (**administrateur**).
SQL Server dispose d'une permission spéciale, nommée **`IMPERSONATE`**, qui **permet à l'utilisateur en cours d'exécution de prendre les permissions d'un autre utilisateur** ou de se connecter jusqu'à ce que le contexte soit réinitialisé ou que la session se termine.
Si vous pouvez vous faire passer pour un utilisateur, même s'il n'est pas sysadmin, vous devriez vérifier **si l'utilisateur a accès** à d'autres **bases de données** ou serveurs liés.
Microsoft SQL Server is a relational database management system developed by Microsoft. As a database server, it is a software product with the primary function of storing and retrieving data as requested by other software applications—which may run either on the same computer or on another computer across a network (including the Internet).
* Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).