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

This commit is contained in:
Translator 2024-06-17 09:32:01 +00:00
parent 4e3e5feaf2
commit d3624a1952

View file

@ -6,11 +6,11 @@
Outras maneiras de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
* **Compartilhe seus truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
@ -153,13 +153,13 @@ SELECT * FROM sysusers
#### Obter Permissões
1. **Securável:** Definido como os recursos gerenciados pelo SQL Server para controle de acesso. Estes são categorizados em:
* **Servidor** - Exemplos incluem bancos de dados, logins, endpoints, grupos de disponibilidade e funções do servidor.
* **Banco de Dados** - Exemplos abrangem função do banco de dados, funções de aplicação, esquema, certificados, catálogos de texto completo e usuários.
* **Esquema** - Inclui tabelas, visualizações, procedimentos, funções, sinônimos, etc.
* **Servidor** Exemplos incluem bancos de dados, logins, endpoints, grupos de disponibilidade e funções do servidor.
* **Banco de Dados** Exemplos abrangem funções de banco de dados, funções de aplicativo, esquema, certificados, catálogos de texto completo e usuários.
* **Esquema** Inclui tabelas, visualizações, procedimentos, funções, sinônimos, etc.
2. **Permissão:** Associada aos securáveis do SQL Server, permissões como ALTER, CONTROL e CREATE podem ser concedidas a um principal. A gestão de permissões ocorre em dois níveis:
* Nível do **Servidor** usando logins
* Nível do **Banco de Dados** usando usuários
3. **Principal:** Este termo refere-se à entidade que recebe permissão para um securável. Principais incluem principalmente logins e usuários de banco de dados. O controle sobre o acesso aos securáveis é exercido através da concessão ou negação de permissões ou incluindo logins e usuários em funções equipadas com direitos de acesso.
* Nível do **Servidor** usando logins
* Nível do **Banco de Dados** usando usuários
3. **Principal:** Este termo refere-se à entidade que recebe permissão para um securável. Os principais incluem principalmente logins e usuários de banco de dados. O controle sobre o acesso aos securáveis é exercido através da concessão ou negação de permissões ou incluindo logins e usuários em funções equipadas com direitos de acesso.
```sql
# Show all different securables names
SELECT distinct class_desc FROM sys.fn_builtin_permissions(DEFAULT);
@ -278,7 +278,7 @@ EXECUTE sp_OADestroy @OLE
```
### **Ler arquivo com** OPENROWSET
Por padrão, o `MSSQL` permite a **leitura de qualquer arquivo no sistema operacional ao qual a conta tenha acesso de leitura**. Podemos usar a seguinte consulta SQL:
Por padrão, o `MSSQL` permite a **leitura de arquivos em qualquer arquivo no sistema operacional ao qual a conta tenha acesso de leitura**. Podemos usar a seguinte consulta SQL:
```sql
SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents
```
@ -315,7 +315,7 @@ GO
```
### Ler Registro
O Microsoft SQL Server fornece **múltiplos procedimentos armazenados estendidos** que permitem interagir não apenas com a rede, mas também com o sistema de arquivos e até mesmo o [**Registro do Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**:**
O Microsoft SQL Server fornece **múltiplos procedimentos armazenados estendidos** que permitem interagir não apenas com a rede, mas também com o sistema de arquivos e até mesmo o [**Registro do Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server)**:**
| **Regular** | **Com Consciência de Instância** |
| ---------------------------- | -------------------------------------- |
@ -342,13 +342,13 @@ Para **mais exemplos** confira a [**fonte original**](https://blog.waynesheffiel
### RCE com Função Definida pelo Usuário MSSQL - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
É possível **carregar um arquivo .NET dentro do MSSQL com funções personalizadas**. No entanto, isso **requer acesso `dbo`**, então você precisa de uma conexão com o banco de dados **como `sa` ou com uma função de Administrador**.
É possível **carregar um arquivo .NET dentro do MSSQL com funções personalizadas**. No entanto, isso **requer acesso `dbo`**, então você precisa de uma conexão com o banco de dados **como `sa` ou uma função de Administrador**.
[**Seguindo este link**](../../pentesting-web/sql-injection/mssql-injection.md#mssql-user-defined-function-sqlhttp) para ver um exemplo.
### Outras maneiras de RCE
### Outras maneiras de obter RCE
Existem outros métodos para obter execução de comandos, como adicionar [procedimentos armazenados estendidos](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), [Jobs do Agente SQL Server](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15) e [scripts externos](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
Existem outros métodos para obter execução de comandos, como adicionar [procedimentos armazenados estendidos](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), [Trabalhos do SQL Server Agent](https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-ver15) e [scripts externos](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql).
## Escalação de Privilégios MSSQL
@ -418,7 +418,7 @@ SELECT IS_SRVROLEMEMBER('sysadmin')
{% hint style="info" %}
Se você pode se passar por um usuário, mesmo que ele não seja sysadmin, você deve verificar se o usuário tem acesso a outros bancos de dados ou servidores vinculados.
Note que uma vez que você é sysadmin, você pode se passar por qualquer outro usuário:
Observe que uma vez que você é sysadmin, você pode se passar por qualquer outro usuário:
{% endhint %}
```sql
-- Impersonate RegUser
@ -457,11 +457,11 @@ Após validar suas permissões, você precisa configurar três coisas, que são
Para automatizar essas configurações, [este repositório](https://github.com/IamLeandrooooo/SQLServerLinkedServersPasswords/) possui os scripts necessários. Além de ter um script em PowerShell para cada etapa da configuração, o repositório também possui um script completo que combina os scripts de configuração e a extração e descriptografia das senhas.
Para mais informações, consulte os seguintes links sobre esse ataque: [Descriptografando Senhas de Servidores de Banco de Dados MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
Para mais informações, consulte os seguintes links sobre esse ataque: [Descriptografando Senhas de Servidores de Links de Banco de Dados MSSQL](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
[Resolvendo problemas de Conexão de Administrador Dedicado do SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
## Escalação Local de Privilégios
## Escalação de Privilégios Local
O usuário executando o servidor MSSQL terá habilitado o token de privilégio **SeImpersonatePrivilege.**\
Provavelmente você será capaz de **escalar para Administrador** seguindo uma dessas 2 páginas:
@ -552,7 +552,7 @@ Command: msfconsole -q -x 'use auxiliary/scanner/mssql/mssql_ping; set RHOSTS {I
```
<details>
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras maneiras de apoiar o HackTricks: