Az - PostgreSQL Privesc

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

PostgreSQL Privesc

SQL Veritabanı hakkında daha fazla bilgi için kontrol edin:

Az - PostgreSQL

Microsoft.DBforPostgreSQL/flexibleServers/read && Microsoft.DBforPostgreSQL/flexibleServers/write

Bu izinle, Azure’da PostgreSQL Flexible Server örnekleri oluşturabilir, güncelleyebilir veya silebilirsiniz. Bu, yeni sunucuların sağlanmasını, mevcut sunucu yapılandırmalarının değiştirilmesini veya sunucuların devre dışı bırakılmasını içerir.

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>

Örneğin, bu izinler PostgreSQL şifresini değiştirmeye olanak tanır, bu elbette PostgreSQL kimlik doğrulaması etkinse faydalıdır.

az postgres flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>

Ayrıca, izinlerle atanmış kimliği etkinleştirebilir ve sunucuya bağlı yönetilen kimlikle işlem yapabilirsiniz. Azure PostgreSQL esnek sunucusunun desteklediği tüm uzantıları burada bulabilirsiniz https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions. Bu uzantıları kullanabilmek için bazı sunucu parametrelerinin (azure.extensions) değiştirilmesi gerekir. Örneğin, Azure Storage’a erişebilen bir yönetilen kimlikle burada:

Öncelikle parametreleri değiştiriyoruz ve atanmış kimliğin etkin olduğundan emin oluyoruz:

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;

Ayrıca, özel bir uç noktadan erişmek istemiyorsanız, genel erişimin etkinleştirilmesi gereklidir, bunu etkinleştirmek için:

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

Bu izinlerle, bir sunucuyu yedekten geri yükleyebilirsiniz:

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

Bu izinle, bir PostgreSQL Flexible Server için Azure Active Directory (AD) yöneticilerini yapılandırabilirsiniz. Bu, kendinizi veya başka bir hesabı AD yöneticisi olarak ayarlayarak PostgreSQL sunucusu üzerinde tam yönetim kontrolü sağlamak için istismar edilebilir. Mevcut bir ilkenin güncellenmesi henüz desteklenmiyor, bu nedenle bir tane oluşturulmuşsa önce silmeniz gerekir.

Flexible-server’ın kullanmak için atanmış yönetilen kimliklere sahip olması önemlidir.

az postgres flexible-server ad-admin create \
--resource-group <ResourceGroupName> \
--server-name <ServerName> \
--display-name <ADAdminDisplayName> \
--identity <IdentityNameOrID> \
--object-id <ObjectID>

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin