<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
* **`SELECT DEFAULT_DOMAIN()`**: Obter o nome do domínio atual.
* **`master.dbo.fn_varbintohexstr(SUSER_SID('DOMAIN\Administrator'))`**: Se você conhece o nome do domínio (_DOMAIN_ neste exemplo), esta função retornará o **SID do usuário Administrador** em formato hex. Isso se parecerá com `0x01050000000[...]0000f401`, note como os **últimos 4 bytes** são o número **500** em formato **big endian**, que é o **ID comum do usuário administrador**.\
Esta função permitirá que você **conheça o ID do domínio** (todos os bytes exceto os últimos 4).
* **`SUSER_SNAME(0x01050000000[...]0000e803)`** : Esta função retornará o **nome de usuário do ID indicado** (se houver), neste caso **0000e803** em big endian == **1000** (geralmente este é o ID do primeiro usuário regular criado). Então você pode imaginar que pode forçar bruta os IDs de usuários de 1000 a 2000 e provavelmente obter todos os nomes de usuários do domínio. Por exemplo, usando uma função como a seguinte:
Injeções SQL baseadas em erro tipicamente se assemelham a construções como `+AND+1=@@version--` e variantes baseadas no operador «OR». Consultas contendo tais expressões geralmente são bloqueadas por WAFs. Como uma forma de contornar, concatene uma string usando o caractere %2b com o resultado de chamadas de função específicas que desencadeiam um erro de conversão de tipo de dados na informação desejada.
O método mais comum para realizar uma chamada de rede que você encontrará usando MSSQL é o uso da Stored Procedure `xp_dirtree`, que curiosamente não é documentada pela Microsoft, o que fez com que fosse [documentada por outras pessoas na Internet](https://www.baronsoftware.com/Blog/sql-stored-procedures-get-folder-files/). Esse método foi usado em [vários exemplos](https://www.notsosecure.com/oob-exploitation-cheatsheet/) de posts sobre [Exfiltração de Dados Fora de Banda](https://gracefulsecurity.com/sql-injection-out-of-band-exploitation/) na Internet.
Assim como o `LOAD_FILE` do MySQL, você pode usar `xp_dirtree` para fazer uma solicitação de rede **apenas para a porta TCP 445**. Você não pode controlar o número da porta, mas pode ler informações de compartilhamentos de rede.
**PS:** Isso não funciona no `Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)` executado em um `Windows Server 2016 Datacenter` na configuração padrão.
Existem **outras** stored procedures \*\*\*\* [**como `master..xp_fileexist`**](https://social.technet.microsoft.com/wiki/contents/articles/40107.xp-fileexist-and-its-alternate.aspx) ou **`xp_subdirs`** que podem ser usadas para resultados semelhantes.
Obviamente, você também pode usar **`xp_cmdshell`** para **executar** algo que acione um **SSRF**. Para mais informações **leia a seção relevante** na página:
É bastante simples escrever uma **CLR UDF** (Common Language Runtime User Defined Function - código escrito com qualquer uma das linguagens **.NET** e compilado em um **DLL**) e **carregá-lo dentro do MSSQL para funções personalizadas**. Isso, no entanto, **requer acesso `dbo`** então pode não funcionar a menos que a conexão da aplicação web com o banco de dados **como `sa` ou um papel de Administrador**.
[Este repositório do Github tem o projeto do Visual Studio e as instruções de instalação](https://github.com/infiniteloopltd/SQLHttp) para carregar o binário no MSSQL como um assembly CLR e depois invocar solicitações HTTP GET de dentro do MSSQL.
Nas instruções de instalação, execute o seguinte antes da consulta `CREATE ASSEMBLY` para adicionar o hash SHA512 do assembly à lista de assemblies confiáveis no servidor (você pode ver a lista usando `select * from sys.trusted_assemblies;`)
Existem duas maneiras simples de recuperar todo o conteúdo de uma tabela em uma consulta — o uso da cláusula FOR XML ou da cláusula FOR JSON. A cláusula FOR XML requer um modo especificado, como «raw», então em termos de brevidade, FOR JSON a supera.
**Permissões:** Se o usuário tem permissão VIEW SERVER STATE no servidor, ele verá todas as sessões em execução na instância do SQL Server; caso contrário, o usuário verá apenas a sessão atual.
De acordo com [**este post do blog**](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/), é possível empilhar consultas no MSSQL sem usar ";":
<summary><strong>Aprenda AWS hacking do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**merchandising oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).