AWS - S3 Unauthenticated Enum
S3 공개 버킷
**“공개”**로 간주되는 버킷은 어떤 사용자도 버킷의 내용을 목록화할 수 있고, 버킷의 내용이 특정 사용자에 의해만 목록화 또는 작성될 수 있는 경우 **“비공개”**로 간주됩니다.
회사들은 버킷 권한을 잘못 구성하여 모든 것이나 AWS에 인증된 모든 사용자(따라서 누구에게나)에게 액세스 권한을 부여할 수 있습니다. 이러한 잘못된 구성으로 인해 일부 작업을 수행할 수 없을 수도 있습니다. 왜냐하면 버킷에는 고유한 액세스 제어 목록(ACL)이 있을 수 있기 때문입니다.
AWS-S3 구성 오류에 대해 알아보세요: http://flaws.cloud 및 http://flaws2.cloud/
AWS 버킷 찾기
웹페이지가 AWS를 사용하여 일부 리소스를 저장하는지 확인하는 다양한 방법:
열거 및 OSINT:
wappalyzer 브라우저 플러그인 사용
burp를 사용하여 (웹을 스파이더링하거나 페이지를 수동으로 탐색하면 모든 로드된 리소스가 History에 저장됨)
도메인에서 리소스를 확인:
resources.domain.com
과 같은 CNAME을 가진bucket.s3.amazonaws.com
과 같은 도메인에서 확인이미 발견된 공개 버킷을 보유한 https://buckets.grayhatwarfare.com 확인
버킷 이름과 버킷 도메인 이름이 동일해야 함
flaws.cloud는 IP 52.92.181.107에 있으며 해당 위치로 이동하면 https://aws.amazon.com/s3/로 리디렉션됩니다. 또한
dig -x 52.92.181.107
를 실행하면s3-website-us-west-2.amazonaws.com
이 표시됩니다.버킷인지 확인하려면 https://flaws.cloud.s3.amazonaws.com/을 방문할 수도 있습니다.
브루트포스
회사와 관련된 이름을 브루트포스하여 버킷을 찾을 수 있습니다:
https://github.com/jordanpotti/AWSBucketDump (잠재적인 버킷 이름이 포함된 목록 포함)
s3scanner 호출
s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt | grep bucket_exists
S3 버킷 획득
S3 오픈 버킷이 주어지면 BucketLoot은 자동으로 흥미로운 정보를 탐색할 수 있습니다.
지역 찾기
AWS에서 지원하는 모든 지역을 https://docs.aws.amazon.com/general/latest/gr/s3.html에서 찾을 수 있습니다.
DNS를 통해
dig
및 **nslookup
**을 사용하여 발견된 IP의 DNS 요청으로 버킷의 지역을 얻을 수 있습니다:
확인하십시오. 해결된 도메인에 "website"라는 단어가 포함되어 있는지.
정적 웹사이트에 접근하려면 다음으로 이동하십시오: flaws.cloud.s3-website-us-west-2.amazonaws.com
또는 버킷에 접근하려면 다음을 방문하십시오: flaws.cloud.s3-us-west-2.amazonaws.com
시도해 보기
버킷에 액세스하려고 시도하지만 도메인 이름에 다른 지역을 지정하는 경우(예: 버킷이 bucket.s3.amazonaws.com
에 있지만 bucket.s3-website-us-west-2.amazonaws.com
에 액세스하려고 하는 경우), 그러면 올바른 위치로 안내받게 됩니다:
버킷 열거
버킷의 공개 여부를 테스트하려면 사용자는 웹 브라우저에서 URL을 입력할 수 있습니다. 비공개 버킷은 "액세스 거부"로 응답하고, 공개 버킷은 저장된 첫 1,000개의 객체를 나열합니다.
모두에게 열려 있음:
비공개:
또한 cli로도 이를 확인할 수 있습니다:
만약 버킷이 도메인 이름을 갖고 있지 않다면, 열거를 시도할 때 버킷 이름만 입력하고 전체 AWSs3 도메인을 입력하지 마십시오. 예: s3://<BUCKETNAME>
공개 URL 템플릿
공개 버킷에서 계정 ID 가져오기
새로운 S3:ResourceAccount
정책 조건 키를 활용하여 AWS 계정을 확인하는 것이 가능합니다. 이 조건은 계정이 속한 S3 버킷을 기반으로 액세스를 제한합니다 (다른 계정 기반 정책은 요청하는 주체가 속한 계정을 기반으로 제한합니다).
그리고 정책에 와일드카드를 포함할 수 있기 때문에 계정 번호를 한 번에 한 숫자씩 찾을 수 있습니다.
이 도구는 이 프로세스를 자동화합니다:
이 기술은 API Gateway URL, Lambda URL, Data Exchange 데이터 세트 및 심지어 태그 값(태그 키를 알고 있는 경우)을 얻는 데에도 작동합니다. 더 많은 정보는 원본 연구 및 이 취약점을 자동화하는 도구 conditional-love에서 찾을 수 있습니다.
참고 자료
最終更新