<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* 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ígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **`SELECT DEFAULT_DOMAIN()`**: Obtén el nombre del dominio actual.
* **`master.dbo.fn_varbintohexstr(SUSER_SID('DOMAIN\Administrator'))`**: Si conoces el nombre del dominio (_DOMAIN_ en este ejemplo), esta función devolverá el **SID del usuario Administrador** en formato hexadecimal. Esto se verá como `0x01050000000[...]0000f401`, nota cómo los **últimos 4 bytes** son el número **500** en formato **big endian**, que es el **ID común del usuario administrador**.\
* **`SUSER_SNAME(0x01050000000[...]0000e803)`** : Esta función devolverá el **nombre de usuario del ID indicado** (si existe), en este caso **0000e803** en big endian == **1000** (usualmente este es el ID del primer ID de usuario regular creado). Entonces puedes imaginar que puedes forzar bruscamente los IDs de usuario desde 1000 hasta 2000 y probablemente obtener todos los nombres de usuario de los usuarios del dominio. Por ejemplo, utilizando una función como la siguiente:
Las inyecciones SQL basadas en errores suelen parecerse a construcciones como `+AND+1=@@version--` y variantes basadas en el operador «OR». Las consultas que contienen tales expresiones generalmente son bloqueadas por los WAFs. Como método de evasión, concatena una cadena utilizando el carácter %2b con el resultado de llamadas a funciones específicas que desencadenan un error de conversión de tipo de datos en los datos buscados.
El método más común para realizar una llamada de red que encontrará utilizando MSSQL es el uso del Procedimiento Almacenado `xp_dirtree`, que curiosamente no está documentado por Microsoft, lo que provocó que fuera [documentado por otras personas en Internet](https://www.baronsoftware.com/Blog/sql-stored-procedures-get-folder-files/). Este método se ha utilizado en [múltiples ejemplos](https://www.notsosecure.com/oob-exploitation-cheatsheet/) de publicaciones sobre [Exfiltración de Datos Fuera de Banda](https://gracefulsecurity.com/sql-injection-out-of-band-exploitation/) en Internet.
Al igual que `LOAD_FILE` de MySQL, puedes usar `xp_dirtree` para hacer una solicitud de red **solo al puerto TCP 445**. No puedes controlar el número de puerto, pero puedes leer información de recursos compartidos de red.
**PS:** Esto no funciona en `Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)` ejecutándose en un `Windows Server 2016 Datacenter` en la configuración predeterminada.
Hay **otros** procedimientos almacenados \*\*\*\* [**como `master..xp_fileexist`**](https://social.technet.microsoft.com/wiki/contents/articles/40107.xp-fileexist-and-its-alternate.aspx) o **`xp_subdirs`** que se pueden usar para obtener resultados similares.
Obviamente, también podrías usar **`xp_cmdshell`** para **ejecutar** algo que desencadene un **SSRF**. Para más información **lee la sección relevante** en la página:
Es bastante sencillo escribir una **CLR UDF** (Función Definida por el Usuario del Common Language Runtime - código escrito con cualquiera de los lenguajes **.NET** y compilado en un **DLL**) y **cargarla dentro de MSSQL para funciones personalizadas**. Sin embargo, **requiere acceso `dbo`** por lo que puede no funcionar a menos que la conexión de la aplicación web a la base de datos **sea como `sa` o con un rol de Administrador**.
[Este repositorio de Github tiene el proyecto de Visual Studio y las instrucciones de instalación](https://github.com/infiniteloopltd/SQLHttp) para cargar el binario en MSSQL como un ensamblado CLR y luego invocar solicitudes HTTP GET desde dentro de MSSQL.
En las instrucciones de instalación, ejecute lo siguiente antes de la consulta `CREATE ASSEMBLY` para agregar el hash SHA512 del ensamblado a la lista de ensamblados confiables en el servidor (puede ver la lista utilizando `select * from sys.trusted_assemblies;`)
Existen dos maneras sencillas de recuperar el contenido completo de una tabla en una consulta — el uso de la cláusula FOR XML o la cláusula FOR JSON. La cláusula FOR XML requiere un modo especificado como «raw», por lo que en términos de brevedad FOR JSON la supera.
**Permisos:** Si el usuario tiene permiso VIEW SERVER STATE en el servidor, el usuario verá todas las sesiones en ejecución en la instancia de SQL Server; de lo contrario, el usuario solo verá la sesión actual.
Según [**este artículo de blog**](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/) es posible apilar consultas en MSSQL sin usar ";":
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* 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ígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).