Leaky Bucket: Yandex Cloud의 공개 S3 호환 버킷에 대한 전체 공격 체인
Source: Dev.to

🛑 Disclosure: A lightweight proof‑of‑concept (PoC) tool was developed by hackteam.red for internal red‑team and authorized penetration testing. The PoC will not be released publicly, but it is actively used to assess Yandex Cloud Object Storage configurations for clients who explicitly permit such testing.
개요
Yandex Cloud는 고객이 다음과 같은 공개 엔드포인트를 통해 정적 웹사이트를 호스팅할 수 있는 S3 호환 Object Storage 서비스를 제공합니다.
http://<bucket>.website.yandexcloud.net
편리하지만, 잘못된 설정으로 인해 민감한 문서, 내부 아키텍처 상세 정보, 소스 코드 또는 구성 파일이 의도치 않게 공개될 수 있습니다. AWS S3 버킷과 달리 Yandex Cloud 버킷은 자동 스캔이 상대적으로 적게 이루어져 정찰 및 악용에 매력적입니다.
전체 공격 흐름
1. Google Dork를 통한 초기 탐색
간단한 Google 검색으로 공개 버킷을 찾을 수 있습니다.
allinurl:.website.yandexcloud.net
발견된 예시
1cgencode.website.yandexcloud.net– “1C 개발자 도구”devops-pilot-competencies.website.yandexcloud.net– Yandex Cloud 교육 자료b3-website.website.yandexcloud.net– 폐기물 관리 SaaS 플랫폼transrussia.ru.website.yandexcloud.net– TRANSeuropa 물류 전시회
이 결과는 버킷 존재를 확인하고 비즈니스 컨텍스트를 제공합니다.
2. httpx를 이용한 자동 열거
HTTP 200 응답을 보이는 이름만 필터링합니다.
cat buckets.txt | httpx -silent -status-code -mc 200 -o live-buckets.txt
실제로 공개된 버킷만을 추후 테스트에 사용합니다.
3. 워드리스트 확장 및 ffuf로 브루트포싱
다음 항목을 결합해 컨텍스트에 맞는 워드리스트를 만듭니다.
- 주요 러시아 기업 (
sberbank,ozon,1c,bitrix24) - DevOps 용어 (
prod,staging,backup,tfstate,config) - 관찰된 패턴 (
mitt,karta,safelist)
대상 브루트포스 스캔을 실행합니다.
ffuf -w expanded-wordlist.txt \
-u "http://FUZZ.website.yandexcloud.net" \
-mc 200 -t 10 -p 0.8
이를 통해 Google에 색인되지 않은 추가 버킷을 발견할 수 있습니다.
4. 민감 경로 퍼징
확인된 각 버킷에 대해 다음과 같은 고위험 경로를 퍼징합니다.
/.git/HEAD
/.env
/backup.zip
/terraform.tfstate
/config.js
/id_rsa
/aws-keys.txt
/yc-keys.txt
/robots.txt
/sitemap.xml
ffuf 혹은 레이트 리밋을 적용한 커스텀 스크립트를 사용해 IP 차단을 방지합니다. 200 OK 응답은 데이터 노출 가능성을 의미합니다.
예시: robots.txt가 내부 경로를 유출할 수 있습니다.
Disallow: /ru/exhibit/conference-zal/
Disallow: /ru/media/news/.../registraciya-posetitelej-otkryta-transrussia
이는 숨겨진 기능 및 이벤트 구조를 드러냅니다.
5. JS/HTML 비밀 탐색
공개된 JavaScript 및 HTML 파일에서 비밀 정보를 검색합니다.
curl -s http://bucket.website.yandexcloud.net/ | \
grep -E "(yc|aws|key|token|secret|accessId)"
우리 스캔에서는 실시간 비밀이 발견되지 않았지만, 하드코딩된 엔드포인트와 내부 서비스 명이 자주 나타나 타깃 맵을 풍부하게 만들었습니다.
6. 악용 시나리오
| 발견 항목 | 영향 |
|---|---|
.git/HEAD | git-dumper를 이용한 전체 소스 코드 복구 |
terraform.tfstate | IAM 키를 포함한 전체 인프라 상태 |
yc-keys.txt | Yandex Cloud API 직접 접근 |
backup.zip | 과거 스냅샷, 자격 증명, 개인 식별 정보 |
robots.txt에 있는 내부 경로 | 공격 표면 확대 |
비밀이 직접 존재하지 않더라도 수집된 인텔리전스로 다음을 수행할 수 있습니다.
- 표적 피싱 유인책 제작
- 내부 아키텍처 매핑
- 클라우드 환경 내 측면 이동 계획
권장 사항
Yandex Cloud 사용자에게
.git,terraform.tfstate,.env, 백업 파일을 공개 버킷에 절대 업로드하지 마세요.- 빌드 아티팩트와 로그는 별도의 비공개 버킷에 보관하세요.
- 정적 웹사이트 호스팅을 활성화하기 전 모든 파일을 검토하세요.
- 필수적이지 않은 경로를 모두 차단하는 제한적인
robots.txt를 고려하세요.
Yandex Cloud 플랫폼에게
- 민감 패턴(키,
.git,tfstate등)을 자동으로 스캔하도록 Object Storage 버킷에 대한 자동 검사를 활성화하세요. - 버킷에 “Static Website”가 활성화될 때 경고를 표시하도록 구현하세요.
- AWS와 유사하게 계정 수준에서 “Public Access 차단”을 강제하세요.
- 공개 버킷에 알려진 민감 파일(예:
.git) 업로드를 차단하도록 정책을 적용하세요.
DSPM(Data Security Posture Management)은 강력한 도구입니다—공개 버킷에도 반드시 적용하십시오.
결론
Yandex Cloud의 Object Storage는 견고하고 개발자 친화적이지만, 보안은 공동 책임입니다. 저비용 정찰 및 목표 퍼징만으로도 조직에 대한 귀중한 정보를 얻을 수 있으며, 잘못 구성된 환경에서는 전체 시스템 침해까지 이어질 수 있습니다. 이 연구는 권한이 부여된 침투 테스트 범위 내에서만 수행되었습니다. 내부 leaky-bucket 스캐너는 폐쇄형이며 명시적인 고객 허가가 있을 때만 사용됩니다.
참고 자료
- Yandex Cloud Object Storage
- DSPM (Data Security Posture Management)
- ProjectDiscovery httpx
- ffuf — fast web fuzzer
📢 주의: Yandex Cloud 고객이 버킷 노출 여부를 테스트하고 싶다면 인증된 침투 테스트 제공업체에 문의하세요 — 허가 없이 스캔하지 마십시오.