diff --git a/src/pentesting-cloud/azure-security/az-services/az-storage.md b/src/pentesting-cloud/azure-security/az-services/az-storage.md index 100609b4d..e2ec25248 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-storage.md +++ b/src/pentesting-cloud/azure-security/az-services/az-storage.md @@ -4,67 +4,87 @@ ## 기본 정보 -Azure Storage Accounts는 Microsoft Azure의 기본 서비스로, 다양한 데이터 유형에 대한 확장 가능하고 안전하며 고가용성의 클라우드 **스토리지를 제공합니다**, 여기에는 blobs(바이너리 대용량 객체), 파일, 큐 및 테이블이 포함됩니다. 이들은 이러한 다양한 스토리지 서비스를 단일 네임스페이스 아래에서 쉽게 관리할 수 있도록 그룹화하는 컨테이너 역할을 합니다. +Azure Storage Accounts는 blobs (binary large objects), 파일, 큐, 테이블 등 다양한 데이터 유형에 대해 확장 가능하고 안전하며 고가용성의 클라우드 **스토리지를 제공하는** Microsoft Azure의 기본 서비스입니다. 이들은 단일 네임스페이스 아래에서 이러한 서로 다른 스토리지 서비스를 그룹화하여 관리하기 쉽게 하는 컨테이너 역할을 합니다. **주요 구성 옵션**: -- 모든 스토리지 계정은 **모든 Azure에서 유일한 이름**을 가져야 합니다. -- 모든 스토리지 계정은 **지역** 또는 Azure 확장 영역에 배포됩니다. -- 더 나은 성능을 위해 스토리지 계정의 **프리미엄** 버전을 선택할 수 있습니다. -- **랙, 드라이브 및 데이터 센터의 실패**로부터 보호하기 위해 **4가지 유형의 중복성** 중에서 선택할 수 있습니다. +- 모든 storage account는 **Azure 전체에서 유일한 이름**을 가져야 합니다. +- 각 storage account는 **리전(region)** 또는 Azure 확장 존에 배포됩니다. +- 더 나은 성능을 위해 storage account의 **premium** 버전을 선택할 수 있습니다. +- 랙, 드라이브 및 데이터센터 **장애(failures)**로부터 보호하기 위해 **4가지 중복 유형** 중에서 선택할 수 있습니다. **보안 구성 옵션**: -- **REST API 작업에 대한 보안 전송 요구**: 스토리지와의 모든 통신에서 TLS 요구 -- **개별 컨테이너에서 익명 액세스 허용**: 그렇지 않으면 향후 익명 액세스를 활성화할 수 없습니다. -- **스토리지 계정 키 액세스 활성화**: 그렇지 않으면 공유 키로의 액세스가 금지됩니다. -- **최소 TLS 버전** -- **복사 작업에 대한 허용 범위**: 모든 스토리지 계정, 동일한 Entra 테넌트의 모든 스토리지 계정 또는 동일한 가상 네트워크의 개인 엔드포인트가 있는 스토리지 계정에서 허용합니다. +- **Require secure transfer for REST API operations**: 스토리지와의 모든 통신에서 TLS를 요구합니다. +- **Allows enabling anonymous access on individual containers**: 설정되어 있지 않다면 향후 개별 컨테이너에 익명 접근을 활성화할 수 없습니다. +- **Enable storage account key access**: 비활성화하면 Shared Keys로의 접근이 금지됩니다. +- **Minimum TLS version** +- **Permitted scope for copy operations**: 모든 storage account로부터, 같은 Entra tenant의 storage account로부터, 또는 동일한 가상 네트워크의 private endpoints를 가진 storage account로부터 허용할 수 있습니다. **Blob Storage 옵션**: -- **크로스 테넌트 복제 허용** -- **액세스 계층**: 핫(자주 액세스되는 데이터), 쿨 및 콜드(드물게 액세스되는 데이터) +- **Allow cross-tenant replication** +- **Access tier**: Hot (자주 접근하는 데이터), Cool 및 Cold (드물게 접근하는 데이터) **네트워킹 옵션**: -- **네트워크 액세스**: -- 모든 네트워크에서 허용 -- 선택된 가상 네트워크 및 IP 주소에서 허용 -- 공용 액세스를 비활성화하고 개인 액세스를 사용 -- **개인 엔드포인트**: 가상 네트워크에서 스토리지 계정으로의 개인 연결을 허용합니다. +- **Network access**: + - 모든 네트워크에서 허용 + - 선택한 가상 네트워크 및 IP 주소에서 허용 + - 공개 액세스를 비활성화하고 프라이빗 액세스 사용 +- **Private endpoints**: 가상 네트워크에서 storage account로 프라이빗 연결을 허용합니다. **데이터 보호 옵션**: -- **컨테이너에 대한 시점 복원**: 컨테이너를 이전 상태로 복원할 수 있습니다. -- 버전 관리, 변경 피드 및 blob 소프트 삭제가 활성화되어야 합니다. -- **blob에 대한 소프트 삭제 활성화**: 삭제된 blob(덮어쓴 경우에도)에 대한 보존 기간을 일수로 설정합니다. -- **컨테이너에 대한 소프트 삭제 활성화**: 삭제된 컨테이너에 대한 보존 기간을 일수로 설정합니다. -- **파일 공유에 대한 소프트 삭제 활성화**: 삭제된 파일 공유에 대한 보존 기간을 일수로 설정합니다. -- **blob에 대한 버전 관리 활성화**: 이전 버전의 blob을 유지합니다. -- **blob 변경 피드 활성화**: blob에 대한 생성, 수정 및 삭제 변경 사항의 로그를 유지합니다. -- **버전 수준 불변성 지원 활성화**: 모든 blob 버전에 적용되는 시간 기반 보존 정책을 계정 수준에서 설정할 수 있습니다. -- 버전 수준 불변성 지원과 컨테이너에 대한 시점 복원은 동시에 활성화할 수 없습니다. +- **Point-in-time restore for containers**: 컨테이너를 이전 상태로 복원할 수 있습니다. +- 이 기능은 versioning, change feed, 및 blob soft delete가 활성화되어 있어야 합니다. +- **Enable soft delete for blobs**: 삭제된 blobs(덮어쓰여진 경우 포함)에 대해 일 단위 보존 기간을 설정할 수 있습니다. +- **Enable soft delete for containers**: 삭제된 컨테이너에 대해 일 단위 보존 기간을 설정할 수 있습니다. +- **Enable soft delete for file shares**: 삭제된 파일 공유에 대해 일 단위 보존 기간을 설정할 수 있습니다. +- **Enable versioning for blobs**: blob의 이전 버전을 보관합니다. +- **Enable blob change feed**: blob의 생성, 수정, 삭제 변경 사항을 로그로 보관합니다. +- **Enable version-level immutability support**: 계정 수준에서 모든 blob 버전에 적용되는 시간 기반 보존 정책을 설정할 수 있습니다. +- Version-level immutability support와 point-in-time restore for containers는 동시에 활성화할 수 없습니다. **암호화 구성 옵션**: -- **암호화 유형**: Microsoft 관리 키(MMK) 또는 고객 관리 키(CMK)를 사용할 수 있습니다. -- **인프라 암호화 활성화**: "더 많은 보안을 위해" 데이터를 이중으로 암호화할 수 있습니다. +- **Encryption type**: Microsoft-managed keys (MMK) 또는 Customer-managed keys (CMK)를 사용할 수 있습니다. +- **Enable infrastructure encryption**: 데이터를 "추가 보안"을 위해 이중 암호화할 수 있습니다. ### 스토리지 엔드포인트 -
스토리지 서비스엔드포인트
Blob storagehttps://.blob.core.windows.net

https://.blob.core.windows.net/?restype=container&comp=list
Data Lake Storagehttps://.dfs.core.windows.net
Azure Fileshttps://.file.core.windows.net
Queue storagehttps://.queue.core.windows.net
Table storagehttps://.table.core.windows.net
+
Storage ServiceEndpoint
Blob storagehttps://.blob.core.windows.net

https://.blob.core.windows.net/?restype=container&comp=list
Data Lake Storagehttps://.dfs.core.windows.net
Azure Fileshttps://.file.core.windows.net
Queue storagehttps://.queue.core.windows.net
Table storagehttps://.table.core.windows.net
### 공개 노출 -"Blob 공개 액세스 허용"이 **활성화**된 경우(기본적으로 비활성화됨), 컨테이너를 생성할 때 다음을 수행할 수 있습니다: +만약 "Allow Blob public access"가 **활성화되어 있으면**(기본적으로 비활성화됨), 컨테이너 생성 시 다음을 할 수 있습니다: -- **blob 읽기에 대한 공개 액세스 제공**(이름을 알아야 함). -- **컨테이너 blob 나열** 및 **읽기**. -- 완전히 **비공개로 만들기** +- blob을 읽을 수 있는 **공개 접근 권한 부여**(이름을 알아야 함). +- 컨테이너의 blobs를 **목록 조회**하고 **읽기**. +- 완전히 **비공개(private)**로 설정.
+#### 익명 blob 노출 감사 + +- **데이터를 노출할 수 있는 storage account 찾기**: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. 만약 `allowBlobPublicAccess`가 `false`이면 컨테이너를 공개로 전환할 수 없습니다. +- **위험한 계정 검사**: 플래그와 기타 취약한 설정을 확인: `az storage account show --name --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`. +- **플래그가 활성화된 경우 컨테이너 수준 노출 열거**: +```bash +az storage container list --account-name \ +--query '[].{name:name, access:properties.publicAccess}' +``` +- `"Blob"`: 익명 읽기 허용 **blob 이름이 알려진 경우에만** (목록 불가). +- `"Container"`: 익명으로 모든 blob에 대해 **list + read**. +- `null`: 비공개; 인증 필요. +- **접근 증명** 자격 증명 없이: +- If `publicAccess` is `Container`, 익명 목록 조회가 작동합니다: `curl "https://.blob.core.windows.net/?restype=container&comp=list"`. +- For both `Blob` and `Container`, 익명 blob 다운로드는 이름이 알려진 경우 작동합니다: +```bash +az storage blob download -c -n --account-name --file /dev/stdout +# or via raw HTTP +curl "https://.blob.core.windows.net//" +``` ### 스토리지에 연결 연결할 수 있는 **스토리지**를 찾으면 [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) 도구를 사용할 수 있습니다. @@ -73,25 +93,25 @@ Azure Storage Accounts는 Microsoft Azure의 기본 서비스로, 다양한 데 ### RBAC -Entra ID 주체와 함께 **RBAC 역할**을 사용하여 스토리지 계정에 접근할 수 있으며, 이는 권장되는 방법입니다. +Entra ID principals를 **RBAC roles**와 함께 사용해 스토리지 계정에 접근할 수 있으며, 권장되는 방법입니다. ### 액세스 키 -스토리지 계정에는 액세스할 수 있는 액세스 키가 있습니다. 이는 스토리지 계정에 대한 **전체 액세스**를 제공합니다. +스토리지 계정에는 접근에 사용할 수 있는 액세스 키가 있습니다. 이는 스토리지 계정에 대한 **완전한 액세스 권한**을 제공합니다.
-### **공유 키 및 라이트 공유 키** +### **Shared Keys & Lite Shared Keys** -특정 리소스에 대한 액세스를 승인하기 위해 액세스 키로 서명된 [**공유 키를 생성**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key)할 수 있습니다. +액세스 키로 서명된 [**generate Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key)를 생성하여 서명된 URL을 통해 특정 리소스에 대한 접근을 허가할 수 있습니다. > [!NOTE] -> `CanonicalizedResource` 부분은 스토리지 서비스 리소스(URI)를 나타냅니다. URL의 어떤 부분이 인코딩된 경우, `CanonicalizedResource` 내에서도 인코딩되어야 합니다. +> `CanonicalizedResource` 부분은 스토리지 서비스 리소스(URI)를 나타냅니다. URL의 어떤 부분이 인코딩되어 있다면, 그 부분은 `CanonicalizedResource` 내부에서도 인코딩되어야 합니다. > [!NOTE] -> 이는 **기본적으로 `az` cli**에 의해 요청을 인증하는 데 사용됩니다. Entra ID 주체 자격 증명을 사용하려면 `--auth-mode login` 매개변수를 지정하십시오. +> 이것은 요청을 인증하기 위해 **기본적으로 `az` cli에서 사용됩니다**. Entra ID principal 자격 증명을 사용하도록 하려면 `--auth-mode login` 파라미터를 지정하세요. -- 다음 정보를 서명하여 **blob, queue 및 file 서비스에 대한 공유 키를 생성**할 수 있습니다: +- 다음 정보를 서명하여 **shared key for blob, queue and file services**를 생성할 수 있습니다: ```bash StringToSign = VERB + "\n" + Content-Encoding + "\n" + @@ -108,7 +128,7 @@ Range + "\n" + CanonicalizedHeaders + CanonicalizedResource; ``` -- 다음 정보를 서명하여 **테이블 서비스용 공유 키**를 생성할 수 있습니다: +- 다음 정보를 서명하여 **shared key for table services**를 생성할 수 있습니다: ```bash StringToSign = VERB + "\n" + Content-MD5 + "\n" + @@ -116,7 +136,7 @@ Content-Type + "\n" + Date + "\n" + CanonicalizedResource; ``` -- 다음 정보를 서명하여 **blob, queue 및 file 서비스**에 대한 **lite 공유 키**를 생성할 수 있습니다: +- 다음 정보를 서명하여 **lite shared key for blob, queue and file services**를 생성할 수 있습니다: ```bash StringToSign = VERB + "\n" + Content-MD5 + "\n" + @@ -125,12 +145,12 @@ Date + "\n" + CanonicalizedHeaders + CanonicalizedResource; ``` -- 다음 정보를 서명하여 **테이블 서비스용 라이트 공유 키**를 생성할 수 있습니다: +- 다음 정보를 서명하여 **lite shared key for table services**를 생성할 수 있습니다: ```bash StringToSign = Date + "\n" CanonicalizedResource ``` -그런 다음, 키를 사용하려면 다음 구문에 따라 Authorization 헤더에 추가할 수 있습니다: +그런 다음 키를 사용하려면 다음 형식으로 Authorization 헤더에 지정하면 됩니다: ```bash Authorization="[SharedKey|SharedKeyLite] :" #e.g. @@ -142,75 +162,78 @@ x-ms-date: Fri, 26 Jun 2015 23:39:12 GMT Authorization: SharedKey myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08= Content-Length: 0 ``` -### **공유 액세스 서명** (SAS) +### **Shared Access Signature** (SAS) -공유 액세스 서명(SAS)은 Azure Storage 계정의 리소스에 대한 특정 권한을 부여하는 안전하고 시간 제한된 URL로, 계정의 액세스 키를 노출하지 않습니다. 액세스 키는 모든 리소스에 대한 전체 관리 액세스를 제공하는 반면, SAS는 권한(읽기 또는 쓰기와 같은)을 지정하고 만료 시간을 정의하여 세분화된 제어를 허용합니다. +Shared Access Signatures (SAS)는 계정의 액세스 키를 노출하지 않고 Azure Storage 계정 내 리소스에 접근할 수 있는 **리소스에 대한 특정 권한을 부여**하는 보안·시간제한 URL입니다. 액세스 키는 모든 리소스에 대한 전체 관리자 권한을 제공하는 반면, SAS는 권한(예: 읽기 또는 쓰기)을 지정하고 만료 시간을 정의해 세분화된 제어를 제공합니다. -#### SAS 유형 +#### SAS Types -- **사용자 위임 SAS**: 이는 **Entra ID 주체**에서 생성되며, SAS를 서명하고 사용자로부터 SAS로 권한을 위임합니다. **blob 및 데이터 레이크 스토리지**와 함께 사용될 수 있습니다 ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). 생성된 모든 사용자 위임 SAS를 **취소**할 수 있습니다. -- 사용자가 가진 것보다 "더 많은" 권한으로 위임 SAS를 생성하는 것이 가능하지만, 주체가 해당 권한을 가지지 않으면 작동하지 않습니다(권한 상승 없음). -- **서비스 SAS**: 이는 스토리지 계정의 **액세스 키** 중 하나를 사용하여 서명됩니다. 단일 스토리지 서비스의 특정 리소스에 대한 액세스를 부여하는 데 사용할 수 있습니다. 키가 갱신되면 SAS는 작동을 중지합니다. -- **계정 SAS**: 이것도 스토리지 계정의 **액세스 키** 중 하나로 서명됩니다. 스토리지 계정 서비스(Blob, Queue, Table, File) 전반에 걸쳐 리소스에 대한 액세스를 부여하며 서비스 수준 작업을 포함할 수 있습니다. +- **User delegation SAS**: 이는 **Entra ID principal**에서 생성되며 해당 principal이 SAS에 서명하고 사용자로부터 권한을 SAS로 위임합니다. **blob and data lake storage**에서만 사용할 수 있습니다 ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). 생성된 모든 사용자 위임 SAS를 **해지**할 수 있습니다. +- 사용자가 가진 권한보다 "더 많은" 권한으로 delegation SAS를 생성하는 것이 가능하더라도, principal이 해당 권한을 가지고 있지 않으면 작동하지 않습니다(권한 상승 불가, no privesc). +- **Service SAS**: 이는 storage account의 **access keys** 중 하나로 서명됩니다. 단일 storage service의 특정 리소스에 대한 접근을 부여하는 데 사용할 수 있습니다. 키가 갱신되면 SAS는 작동을 멈춥니다. +- **Account SAS**: 마찬가지로 storage account의 **access keys** 중 하나로 서명됩니다. Blob, Queue, Table, File 등 스토리지 계정의 서비스 전반에 걸쳐 리소스 접근을 부여하며 서비스 수준의 작업을 포함할 수 있습니다. -액세스 키로 서명된 SAS URL은 다음과 같습니다: +A SAS URL signed by an **access key** looks like this: - `https://.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D` -사용자 위임으로 서명된 SAS URL은 다음과 같습니다: +A SAS URL signed as a **user delegation** looks like this: - `https://.blob.core.windows.net/testing-container?sp=r&st=2024-11-22T15:07:40Z&se=2024-11-22T23:07:40Z&skoid=d77c71a1-96e7-483d-bd51-bd753aa66e62&sktid=fdd066e1-ee37-49bc-b08f-d0e152119b04&skt=2024-11-22T15:07:40Z&ske=2024-11-22T23:07:40Z&sks=b&skv=2022-11-02&spr=https&sv=2022-11-02&sr=c&sig=7s5dJyeE6klUNRulUj9TNL0tMj2K7mtxyRc97xbYDqs%3D` -일부 **http 매개변수**를 주목하십시오: +Note some **http params**: -- **`se`** 매개변수는 SAS의 **만료 날짜**를 나타냅니다. -- **`sp`** 매개변수는 SAS의 **권한**을 나타냅니다. -- **`sig`**는 SAS를 검증하는 **서명**입니다. +- The **`se`** param indicates the **만료 날짜** of the SAS +- The **`sp`** param indicates the **권한** of the SAS +- The **`sig`** is the **서명** validating the SAS -#### SAS 권한 +#### SAS permissions -SAS를 생성할 때 부여해야 할 권한을 지정해야 합니다. SAS가 생성되는 객체에 따라 포함될 수 있는 다양한 권한이 있습니다. 예를 들어: +SAS를 생성할 때 부여할 권한을 명시해야 합니다. 어떤 객체에 대해 SAS를 생성하느냐에 따라 포함될 수 있는 권한이 달라집니다. 예를 들어: - (a)dd, (c)reate, (d)elete, (e)xecute, (f)ilter_by_tags, (i)set_immutability_policy, (l)ist, (m)ove, (r)ead, (t)ag, (w)rite, (x)delete_previous_version, (y)permanent_delete -## Azure Blob Storage에 대한 SFTP 지원 +## SFTP Support for Azure Blob Storage -Azure Blob Storage는 이제 SSH 파일 전송 프로토콜(SFTP)을 지원하여 사용자 정의 솔루션이나 타사 제품 없이 Blob Storage에 직접 안전한 파일 전송 및 관리를 가능하게 합니다. +Azure Blob Storage는 이제 SSH File Transfer Protocol (SFTP)을 지원하여, 맞춤형 솔루션이나 타사 제품 없이도 Blob Storage로 직접 안전한 파일 전송 및 관리를 할 수 있습니다. -### 주요 기능 +### Key Features -- 프로토콜 지원: SFTP는 계층적 네임스페이스(HNS)로 구성된 Blob Storage 계정과 함께 작동합니다. 이는 블롭을 디렉터리 및 하위 디렉터리로 구성하여 탐색을 용이하게 합니다. -- 보안: SFTP는 인증을 위해 로컬 사용자 신원을 사용하며 RBAC 또는 ABAC와 통합되지 않습니다. 각 로컬 사용자는 다음을 통해 인증할 수 있습니다: +- Protocol Support: SFTP는 hierarchical namespace (HNS)로 구성된 Blob Storage 계정에서 작동합니다. 이는 blob을 디렉터리와 하위 디렉터리로 구성하여 탐색을 용이하게 합니다. +- Security: SFTP는 로컬 사용자 ID를 인증에 사용하며 RBAC 또는 ABAC와 통합되지 않습니다. 각 로컬 사용자는 다음 방법으로 인증할 수 있습니다: - Azure에서 생성된 비밀번호 - 공개-개인 SSH 키 쌍 -- 세분화된 권한: 읽기, 쓰기, 삭제 및 목록과 같은 권한을 최대 100개의 컨테이너에 대해 로컬 사용자에게 부여할 수 있습니다. -- 네트워킹 고려 사항: SFTP 연결은 포트 22를 통해 이루어집니다. Azure는 SFTP 트래픽을 보호하기 위해 방화벽, 개인 엔드포인트 또는 가상 네트워크와 같은 네트워크 구성을 지원합니다. +- Granular Permissions: Read, Write, Delete, List와 같은 권한을 로컬 사용자에게 최대 100개의 컨테이너에 대해 할당할 수 있습니다. +- Networking Considerations: SFTP 연결은 포트 22를 통해 이루어집니다. Azure는 방화벽, private endpoints 또는 virtual networks와 같은 네트워크 구성을 지원하여 SFTP 트래픽을 보호합니다. -### 설정 요구 사항 +### Setup Requirements -- 계층적 네임스페이스: 스토리지 계정을 생성할 때 HNS가 활성화되어야 합니다. -- 지원되는 암호화: Microsoft 보안 개발 수명 주기(SDL)에서 승인된 암호화 알고리즘(예: rsa-sha2-256, ecdsa-sha2-nistp256)이 필요합니다. -- SFTP 구성: -- 스토리지 계정에서 SFTP를 활성화합니다. -- 적절한 권한을 가진 로컬 사용자 신원을 생성합니다. -- 사용자의 시작 위치를 정의하기 위해 사용자에 대한 홈 디렉터리를 구성합니다. +- Hierarchical Namespace: HNS는 storage account 생성 시 활성화되어야 합니다. +- Supported Encryption: Microsoft Security Development Lifecycle (SDL)에서 승인한 암호화 알고리즘(예: rsa-sha2-256, ecdsa-sha2-nistp256)을 요구합니다. +- SFTP Configuration: +- Enable SFTP on the storage account. +- Create local user identities with appropriate permissions. +- Configure home directories for users to define their starting location within the container. -### 권한 +### Permissions -| 권한 | 기호 | 설명 | -| ---------------------- | ------ | ------------------------------------ | -| **읽기** | `r` | 파일 내용을 읽습니다. | -| **쓰기** | `w` | 파일을 업로드하고 디렉터리를 생성합니다. | -| **목록** | `l` | 디렉터리의 내용을 나열합니다. | -| **삭제** | `d` | 파일 또는 디렉터리를 삭제합니다. | -| **생성** | `c` | 파일 또는 디렉터리를 생성합니다. | -| **소유권 수정** | `o` | 소유 사용자 또는 그룹을 변경합니다. | -| **권한 수정** | `p` | 파일 또는 디렉터리의 ACL을 변경합니다. | +| 권한 | 기호 | 설명 | +| ---------------------- | ------ | ------------------------------------- | +| **읽기 (Read)** | `r` | 파일 내용을 읽습니다. | +| **쓰기 (Write)** | `w` | 파일 업로드 및 디렉터리 생성. | +| **목록 (List)** | `l` | 디렉터리 내용 나열. | +| **삭제 (Delete)** | `d` | 파일 또는 디렉터리 삭제. | +| **생성 (Create)** | `c` | 파일 또는 디렉터리 생성. | +| **소유권 변경 (Modify Ownership)** | `o` | 소유 사용자 또는 그룹 변경. | +| **권한 변경 (Modify Permissions)** | `p` | 파일 또는 디렉터리의 ACL 변경. | -## 열거 +## Enumeration {{#tabs }} {{#tab name="az cli" }} + +
+az cli 열거 ```bash # Get storage accounts az storage account list #Get the account name from here @@ -327,10 +350,15 @@ az storage account local-user list \ --account-name \ --resource-group ``` +
+ {{#endtab }} {{#tab name="Az PowerShell" }} -```bash + +
+Az PowerShell 열거 +```powershell # Get storage accounts Get-AzStorageAccount | fl # Get rules to access the storage account @@ -387,6 +415,8 @@ New-AzStorageBlobSASToken ` -Permission racwdl ` -ExpiryTime (Get-Date "2024-12-31T23:59:00Z") ``` +
+ {{#endtab }} {{#endtabs }} @@ -402,7 +432,7 @@ az-file-shares.md ../az-privilege-escalation/az-storage-privesc.md {{#endref}} -## 포스트 익스플로잇 +## 사후 악용 {{#ref}} ../az-post-exploitation/az-blob-storage-post-exploitation.md @@ -414,10 +444,14 @@ az-file-shares.md ../az-persistence/az-storage-persistence.md {{#endref}} -## 참고자료 +## 참조 - [https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction) - [https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview) - [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) +- [Holiday Hack Challenge 2025: Blob Storage (Storage Secrets)](https://0xdf.gitlab.io/holidayhack2025/act1/blob-storage) +- [https://learn.microsoft.com/en-us/cli/azure/storage/account](https://learn.microsoft.com/en-us/cli/azure/storage/account) +- [https://learn.microsoft.com/en-us/cli/azure/storage/container](https://learn.microsoft.com/en-us/cli/azure/storage/container) +- [https://learn.microsoft.com/en-us/cli/azure/storage/blob](https://learn.microsoft.com/en-us/cli/azure/storage/blob) {{#include ../../../banners/hacktricks-training.md}}