* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* 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)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
As recompensas do HackenProof são lançadas apenas quando os clientes depositam o orçamento de recompensa. Você receberá a recompensa após a verificação do bug.
**Microsoft SQL Server** é um sistema de gerenciamento de banco de dados relacional desenvolvido pela Microsoft. Como um servidor de banco de dados, é um produto de software com a função principal de armazenar e recuperar dados conforme solicitado por outras aplicações de software - que podem ser executadas no mesmo computador ou em outro computador em uma rede (incluindo a Internet).\
* **Banco de Dados model**: É usado como modelo para todos os bancos de dados criados na instância do SQL Server. Modificações feitas no banco de dados model, como tamanho do banco de dados, collation, modelo de recuperação e outras opções de banco de dados, são aplicadas a todos os bancos de dados criados posteriormente.
* **Banco de Dados Resource**: É um banco de dados somente leitura que contém objetos do sistema incluídos no SQL Server. Os objetos do sistema são fisicamente armazenados no banco de dados Resource, mas aparecem logicamente no esquema sys de todos os bancos de dados.
* **Banco de Dados tempdb**: É um espaço de trabalho para armazenar objetos temporários ou conjuntos de resultados intermediários.
Se você **não tem****credenciais**, você pode tentar adivinhá-las. Você pode usar o nmap ou o metasploit. Tenha cuidado, você pode **bloquear contas** se falhar ao fazer login várias vezes usando um nome de usuário existente.
When performing a penetration test on a Microsoft SQL Server (MSSQL), it is important to conduct a thorough enumeration of the target system. Enumeration is the process of gathering information about the target system, such as the version of MSSQL being used, the databases present, and the user accounts configured.
Durante a realização de um teste de penetração em um servidor Microsoft SQL (MSSQL), é importante realizar uma enumeração completa do sistema alvo. A enumeração é o processo de coletar informações sobre o sistema alvo, como a versão do MSSQL sendo usada, os bancos de dados presentes e as contas de usuário configuradas.
The following are some common enumeration techniques that can be used during a MSSQL penetration test:
A seguir estão algumas técnicas comuns de enumeração que podem ser usadas durante um teste de penetração MSSQL:
##### 1. Banner Grabbing
Banner grabbing involves connecting to the MSSQL server and capturing the initial response from the server. This response often contains valuable information such as the version of MSSQL being used.
##### 1. Banner Grabbing
O banner grabbing envolve conectar-se ao servidor MSSQL e capturar a resposta inicial do servidor. Essa resposta geralmente contém informações valiosas, como a versão do MSSQL sendo usada.
##### 2. Service and Port Scanning
Performing a service and port scan can help identify open ports and services running on the MSSQL server. Tools like Nmap can be used to scan for open ports and determine the services associated with those ports.
##### 2. Varredura de Serviço e Porta
Realizar uma varredura de serviço e porta pode ajudar a identificar portas abertas e serviços em execução no servidor MSSQL. Ferramentas como o Nmap podem ser usadas para varrer portas abertas e determinar os serviços associados a essas portas.
##### 3. SQL Server Discovery
Using tools like SQLPing, SQLPing2, or SQLPing3, it is possible to discover SQL servers on the network. These tools send specific SQL queries to the network and analyze the responses to identify SQL servers.
##### 3. Descoberta do SQL Server
Usando ferramentas como SQLPing, SQLPing2 ou SQLPing3, é possível descobrir servidores SQL na rede. Essas ferramentas enviam consultas SQL específicas para a rede e analisam as respostas para identificar servidores SQL.
##### 4. SQL Server Browser Service Enumeration
The SQL Server Browser service is responsible for providing information about SQL Server instances on the network. Enumerating this service can provide valuable information about the SQL Server instances running on the target system.
##### 4. Enumeração do Serviço SQL Server Browser
O serviço SQL Server Browser é responsável por fornecer informações sobre as instâncias do SQL Server na rede. Enumerar este serviço pode fornecer informações valiosas sobre as instâncias do SQL Server em execução no sistema alvo.
##### 5. User Enumeration
Enumerating the user accounts configured on the MSSQL server can help identify potential targets for further exploitation. Tools like Metasploit can be used to enumerate users and their associated privileges.
##### 5. Enumeração de Usuários
Enumerar as contas de usuário configuradas no servidor MSSQL pode ajudar a identificar possíveis alvos para exploração adicional. Ferramentas como o Metasploit podem ser usadas para enumerar usuários e seus privilégios associados.
By performing these common enumeration techniques, a penetration tester can gather valuable information about the MSSQL server and its configuration. This information can then be used to identify potential vulnerabilities and plan further exploitation.
Ao realizar essas técnicas comuns de enumeração, um testador de penetração pode coletar informações valiosas sobre o servidor MSSQL e sua configuração. Essas informações podem ser usadas para identificar possíveis vulnerabilidades e planejar uma exploração adicional.
SELECT * FROM <databaseName>.INFORMATION_SCHEMA.TABLES;
#List Linked Servers
EXEC sp_linkedservers
SELECT * FROM sys.servers;
#List users
select sp.name as login, sp.type_desc as login_type, sl.password_hash, sp.create_date, sp.modify_date, case when sp.is_disabled = 1 then 'Disabled' else 'Enabled' end as status from sys.server_principals sp left join sys.sql_logins sl on sp.principal_id = sl.principal_id where sp.type not in ('G', 'R') order by sp.name;
#Create user with sysadmin privs
CREATE LOGIN hacker WITH PASSWORD = 'P@ssword123!'
1.**Securável:** Estes são os recursos aos quais o sistema de autorização do SQL Server Database Engine controla o acesso. Existem três categorias mais amplas nas quais um securável pode ser diferenciado:
* Servidor - Por exemplo, bancos de dados, logins, endpoints, grupos de disponibilidade e funções do servidor
* Banco de dados - Por exemplo, função do banco de dados, funções de aplicativo, esquema, certificado, catálogo de texto completo, usuário
* Esquema - Por exemplo, tabela, visualização, procedimento, função, sinônimo
2.**Permissão:** Todo securável do SQL Server possui permissões associadas, como ALTERAR, CONTROLAR, CRIAR, que podem ser concedidas a um principal. As permissões são gerenciadas no nível do servidor usando logins e no nível do banco de dados usando usuários.
3.**Principal:** A entidade que recebe permissão para um securável é chamada de principal. Os principais mais comuns são logins e usuários de banco de dados. O acesso a um securável é controlado concedendo ou negando permissões ou adicionando logins e usuários a funções que têm acesso.
Note que, para ser capaz de executar comandos, não é apenas necessário ter o **`xp_cmdshell`** **habilitado**, mas também ter a **permissão EXECUTE na stored procedure `xp_cmdshell`**. Você pode verificar quem (exceto sysadmins) pode usar o **`xp_cmdshell`** com:
[**Leia este post**](../../windows-hardening/active-directory-methodology/abusing-ad-mssql.md) **para obter mais informações sobre como abusar dessa funcionalidade:**
Para escrever arquivos usando `MSSQL`, nós **precisamos habilitar** [**Procedimentos de Automação Ole**](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/ole-automation-procedures-server-configuration-option), o que requer privilégios de administrador, e então executar algumas stored procedures para criar o arquivo:
Por padrão, o `MSSQL` permite a leitura de arquivos em qualquer sistema operacional para o qual a conta tenha acesso de leitura. Podemos usar a seguinte consulta SQL:
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTER BULK OPERATIONS' OR permission_name='ADMINISTER DATABASE BULK OPERATIONS';
SELECT * FROM table WHERE column = 'value' AND 1=convert(int,(select top 1 column from table2)))
```
This error-based vector for SQL injection is used to exploit vulnerabilities in Microsoft SQL Server (MSSQL). It leverages the `convert` function to force an error and extract information from the database.
To use this vector, replace `table` with the target table name, `column` with the target column name, and `value` with the desired value. The subquery `(select top 1 column from table2)` retrieves the value from the specified column in `table2`.
If the injection is successful, the query will generate an error, revealing information about the database structure or returning data from the injected query.
O MSSQL pode permitir que você execute **scripts em Python e/ou R**. Esses códigos serão executados por um **usuário diferente** daquele que usa **xp\_cmdshell** para executar comandos.
O Microsoft SQL Server fornece **várias stored procedures estendidas** que permitem interagir não apenas com a rede, mas também com o sistema de arquivos e até mesmo com o [**Registro do Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**:**
EXECUTE master.sys.xp_instance_regwrite 'HKEY_LOCAL_MACHINE', 'Software\Microsoft\MSSQLSERVER\SQLServerAgent\MyNewKey', 'MyNewValue', 'REG_SZ', 'Now you see me!';
É 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**.
Existem outros métodos para obter a 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 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).
As recompensas do HackenProof são lançadas apenas quando os clientes depositam o orçamento de recompensa. Você receberá a recompensa após a verificação do bug.
Se um **usuário regular** recebe a função **`db_owner`** sobre o **banco de dados de propriedade de um usuário administrador** (como **`sa`**) e esse banco de dados está configurado como **`trustworthy`**, esse usuário pode abusar desses privilégios para **elevar privilégios** porque procedimentos armazenados criados lá podem ser **executados** como o proprietário (**administrador**).
O SQL Server possui uma permissão especial, chamada **`IMPERSONATE`**, que **permite que o usuário em execução assuma as permissões de outro usuário** ou login até que o contexto seja redefinido ou a sessão termine.
Se você puder 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.
**HackenProof é o lar de todas as recompensas por bugs de criptografia.**
**Seja recompensado sem atrasos**\
As recompensas do HackenProof são lançadas apenas quando seus clientes depositam o orçamento de recompensa. Você receberá a recompensa após a verificação do bug.
Microsoft SQL Server is a relational database management system developed by Microsoft. As a database server, it is a software product with the primary function of storing and retrieving data as requested by other software applications—which may run either on the same computer or on another computer across a network (including the Internet).
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* 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)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).