5.8 KiB
Az - SQL Database Privesc
{{#include ../../../banners/hacktricks-training.md}}
SQL Database Privesc
SQL Databaseに関する詳細情報は、以下を確認してください:
{{#ref}} ../az-services/az-sql.md {{#endref}}
"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_password>
また、プライベートエンドポイント以外からアクセスする場合は、パブリックアクセスを有効にする必要があります。有効にするには:
az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--enable-public-network true
"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>
{{#include ../../../banners/hacktricks-training.md}}