Skip to content

Commit c716f0a

Browse files
authored
Merge pull request #240 from HackTricks-wiki/update_Holiday_Hack_Challenge_2025__Act_1__-_Spare_Key_20260106_124916
Holiday Hack Challenge 2025 (Act 1) - Spare Key
2 parents 1bae0f1 + 7f7f8b3 commit c716f0a

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

src/pentesting-cloud/azure-security/az-services/az-storage.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,24 @@ If "Allow Blob public access" is **enabled** (disabled by default), when creatin
6565

6666
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUfoetUnYBPWQpRrWNnnlbqWpl8Rdoaeg5uBrCVlvcNDlnKwQHjZe8nUb2SfPspBgbu-lCZLmUei-hFi_Jl2eKbaxUtBGTjdUSDmkrcwr90VZkmuMjk9tyh92p75btfyzGiUTa0-=s2048?key=m8TV59TrCFPlkiNnmhYx3aZt" alt=""><figcaption></figcaption></figure>
6767

68-
#### Auditing anonymous blob exposure
68+
### Static website (`$web`) exposure & leaked secrets
69+
70+
- **Static websites** are served from the special `$web` container over a region-specific endpoint such as `https://<account>.z13.web.core.windows.net/`.
71+
- The `$web` container may report `publicAccess: null` via the blob API, but files are still reachable through the static site endpoint, so dropping config/IaC artifacts there can leak secrets.
72+
- Quick audit workflow:
73+
74+
```bash
75+
# Identify storage accounts with static website hosting enabled
76+
az storage blob service-properties show --account-name <acc-name> --auth-mode login
77+
# Enumerate containers (including $web) and their public flags
78+
az storage container list --account-name <acc-name> --auth-mode login
79+
# List files served by the static site even when publicAccess is null
80+
az storage blob list --container-name '$web' --account-name <acc-name> --auth-mode login
81+
# Pull suspicious files directly (e.g., IaC tfvars containing secrets/SAS)
82+
az storage blob download -c '$web' --name iac/terraform.tfvars --file /dev/stdout --account-name <acc-name> --auth-mode login
83+
```
84+
85+
### Auditing anonymous blob exposure
6986

7087
- **Locate storage accounts** that can expose data: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. If `allowBlobPublicAccess` is `false` you cannot turn containers public.
7188
- **Inspect risky accounts** to confirm the flag and other weak settings: `az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
@@ -467,6 +484,7 @@ az-file-shares.md
467484
- [https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction)
468485
- [https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview)
469486
- [https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support](https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support)
487+
- [Holiday Hack Challenge 2025 – Spare Key (Azure static website SAS leak)](https://0xdf.gitlab.io/holidayhack2025/act1/spare-key)
470488
- [Holiday Hack Challenge 2025: Blob Storage (Storage Secrets)](https://0xdf.gitlab.io/holidayhack2025/act1/blob-storage)
471489
- [https://learn.microsoft.com/en-us/cli/azure/storage/account](https://learn.microsoft.com/en-us/cli/azure/storage/account)
472490
- [https://learn.microsoft.com/en-us/cli/azure/storage/container](https://learn.microsoft.com/en-us/cli/azure/storage/container)

0 commit comments

Comments
 (0)