Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
S3Scanner — S3 호환 API에서 잘못 구성된 S3 버킷을 스캔합니다! | Kitploit
도구/GitHubGitHub/sa7mon/s3scanner
Vulnerability ScannersInformation GatheringCloud SecurityMisconfiguration
GitHubsa7mon/s3scanner

S3Scanner

S3 호환 API에서 잘못 구성된 S3 버킷을 스캔합니다!

저장소 보기웹사이트
3.2k41441개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

S3Scanner

기능 - 사용법 - 빠른 시작 - 설치 - 토론


AWS 또는 다른 클라우드 제공업체에서 공개 S3 버킷을 찾는 도구:
  • AWS
  • DigitalOcean
  • DreamHost
  • GCP
  • Linode
  • Scaleway
  • 사용자 정의
데모

기능

  • ⚡️ 멀티스레드 스캐닝
  • 🔭 다양한 내장 S3 스토리지 제공업체 또는 사용자 정의 지원
  • 🕵️‍♀️ 모든 버킷 권한 스캔하여 잘못된 구성 탐지
  • 💾 결과를 Postgres 데이터베이스에 저장
  • 🐇 대규모 자동 스캔을 위해 RabbitMQ 연결
  • 🐳 Docker 지원

사용처

six2dez/reconftw 배너 yogeshojha/rengine 배너 pry0cc/axiom 배너 - '모두를 위한 동적 인프라 프레임워크'

사용법

root@kitploit:~
INPUT: (1 required)
  -bucket        string  확인할 버킷 이름.
  -bucket-file   string  확인할 버킷 이름 목록이 있는 파일.
  -mq                    RabbitMQ에 연결하여 버킷 가져오기. 구성 파일 키 "mq" 필요. 기본값: "false"

OUTPUT:
  -db       결과를 Postgres 데이터베이스에 저장. 구성 파일 키 "db.uri" 필요. 기본값: "false"
  -json     로그를 사람이 읽기 쉬운 형식 대신 JSON 형식으로 stdout에 출력. 기본값: "false"

OPTIONS:
  -enumerate           버킷 객체 열거 (시간이 오래 걸릴 수 있음). 기본값: "false"
  -provider    string  객체 스토리지 제공업체: aws, custom, digitalocean, dreamhost, gcp, linode, scaleway - custom은 구성 파일 필요. 기본값: "aws"
  -threads     int     스캔에 사용할 스레드 수. 기본값: "4"

DEBUG:
  -verbose     상세 로깅 활성화. 기본값: "false"
  -version     버전 출력 기본값: "false"

구성 파일이 필요한 경우 config.yml은 다음 위치에서 검색됩니다: "." "/etc/s3scanner/" "$HOME/.s3scanner/"

🚀 후원

이 도구가 유용하셨다면, 개발을 지원하기 위해 기부를 고려해 주세요. 이 저장소 페이지 측면 또는 FUNDING.yml에서 후원 옵션을 확인하실 수 있습니다.

tines님께 이 프로젝트의 지속적인 후원에 대해 큰 감사를 드립니다.

빠른 시작

파일에 나열된 버킷 이름을 AWS에서 스캔하고, 모든 객체 열거

root@kitploit:~
$ s3scanner -bucket-file names.txt -enumerate

GCP에서 버킷 스캔, 모든 객체 열거 및 데이터베이스에 결과 저장

root@kitploit:~
$ s3scanner -provider gcp -db -bucket my-bucket -enumerate

설치

플랫폼버전단계
BlackArchBlackArch 패키지pacman -S s3scanner
DockerDocker 릴리스docker run ghcr.io/sa7mon/s3scanner
GoGolanggo install -v github.com/sa7mon/s3scanner@latest
Kali LinuxKali 패키지apt install s3scanner
MacOShomebrew 버전brew install s3scanner
Parrot OSParrot 패키지apt install s3scanner
Windows - wingetwinget install s3scanner
NixOS stablenixpkgs unstable 패키지

사용

입력

s3scanner는 정확히 하나의 입력 유형이 필요합니다: -bucket, -bucket-file, 또는 -mq.

root@kitploit:~
INPUT: (1 required)
  -bucket        string  확인할 버킷 이름.
  -bucket-file   string  확인할 버킷 이름 목록이 있는 파일.
  -mq                    RabbitMQ에 연결하여 버킷 가져오기. 구성 파일 키 "mq" 필요. 기본값: "false"

-bucket

단일 버킷 스캔

root@kitploit:~
s3scanner -bucket secret_uploads

-bucket-file

파일에 나열된 모든 버킷 이름 스캔

root@kitploit:~
s3scanner -bucket-file names.txt

여기서 names.txt는 줄마다 버킷 이름 하나씩 포함

root@kitploit:~
$ cat names.txt
bucket123
assets
image-uploads

여러 번 나열된 버킷 이름은 한 번만 스캔됩니다.

-mq

RabbitMQ 서버에 연결하여 스캔할 버킷 이름이 포함된 메시지를 소비합니다.

root@kitploit:~
s3scanner -mq

메시지는 JSON 인코딩된 Bucket 객체여야 합니다. Golang 게시 예제는 mqingest를 참조하세요.

-mq는 mq.uri 및 mq.queue_name 구성 파일 키가 필요합니다. 예제는 구성 파일 섹션 참조.

출력

root@kitploit:~
OUTPUT:
  -db       결과를 Postgres 데이터베이스에 저장. 구성 파일 키 "db.uri" 필요. 기본값: "false"
  -json     로그를 사람이 읽기 쉬운 형식 대신 JSON 형식으로 stdout에 출력. 기본값: "false"

-db

모든 스캔 결과를 PostgreSQL 데이터베이스에 저장

root@kitploit:~
s3scanner -bucket images -db
  • db.uri 구성 파일 키 필요. 예제는 구성 파일 섹션 참조.
  • -db 사용 시, -json 또는 기본 사람이 읽기 쉬운 출력 모드를 사용 중이면 결과도 콘솔에 출력됩니다.
  • s3scanner는 데이터베이스에 연결할 때마다 Gorm의 자동 마이그레이션 기능을 실행합니다. 스키마에 Gorm이 예상하는 이름의 테이블이 이미 있으면 해당 테이블의 구조가 변경될 수 있습니다. s3scanner 결과 전용 Postgres 스키마를 생성하는 것이 좋습니다.

-json

스캔 결과를 콘솔에 사람이 읽기 쉬운 형식 대신 기계가 읽을 수 있는 JSON으로 출력

root@kitploit:~
s3scanner -bucket images -json

이렇게 하면 콘솔에 한 줄에 하나의 JSON 객체가 출력되며, 이를 jq 또는 JSON 입력을 받는 다른 도구로 파이프할 수 있습니다.

예제: 존재하는 모든 버킷의 이름과 리전 출력

root@kitploit:~
$ s3scanner -bucket-file names.txt -json | jq -r '. | select(.bucket.exists==1) | [.bucket.name, .bucket.region] | join(" - ")'       
10000 - eu-west-1
10000.pizza - ap-southeast-1
images_staging - us-west-2

옵션

root@kitploit:~
OPTIONS:
  -enumerate           버킷 객체 열거 (시간이 오래 걸릴 수 있음). 기본값: "false"
  -provider    string  객체 스토리지 제공업체: aws, custom, digitalocean, dreamhost, gcp, linode, scaleway - custom은 구성 파일 필요. 기본값: "aws"
  -threads     int     스캔에 사용할 스레드 수. 기본값: "4"

-enumerate

버킷에 저장된 모든 객체 열거. 기본적으로 s3scanner는 버킷의 권한만 확인합니다.

root@kitploit:~
s3scanner -bucket attachments -enumerate
  • 참고: 객체 수가 많으면 시간이 오래 걸릴 수 있습니다.
  • 열거 시 s3scanner는 1,000개 객체 단위로 "페이지"를 요청합니다. 객체 페이지가 5,000개를 초과하면 나머지는 건너뜁니다.

-provider

버킷 확인 시 사용할 스토리지 제공업체 이름

root@kitploit:~
s3scanner -bucket assets -provider gcp
  • 현재 지원되지 않거나 로컬 네트워크 스토리지 제공업체를 대상으로 할 때 "custom" 사용
  • "custom" 제공업체는 구성 파일 섹션에 나열된 providers.custom 하위 구성 파일 키 필요

-threads

스캔에 사용할 스레드 수

root@kitploit:~
s3scanner -bucket secret_docs -threads 8
  • 스레드를 늘리면 동시에 스캔되는 버킷 수가 증가하지만 객체 열거 속도는 향상되지 않습니다. 열거는 현재 버킷당 단일 스레드로 작동합니다.

디버그

root@kitploit:~
DEBUG:
  -verbose     상세 로깅 활성화. 기본값: "false"
  -version     버전 출력 기본값: "false"

-verbose

디버그 메시지의 상세 로깅 활성화. 이 옵션은 많은 로그를 생성하므로 버그 신고를 제출할 때가 아니면 사용하지 않는 것이 좋습니다.

root@kitploit:~
s3scanner -bucket spreadsheets -verbose

-version

버전 정보를 출력하고 종료

root@kitploit:~
s3scanner -version
  • 소스에서 컴파일한 경우 dev를 출력

개발

4개의 컨테이너를 생성하는 docker compose 파일이 포함되어 있습니다:

  • rabbitmq
  • postgres
  • app
  • mitm

2개의 프로필이 구성되어 있습니다:

  • dev - 표준 개발 환경
  • dev-mitm - mitmproxy와 함께 구성된 환경으로, 디버깅 또는 새 제공업체 추가 시 HTTP 트래픽을 더 쉽게 관찰할 수 있음

개발 환경을 시작하려면 make dev 또는 make dev-mitm을 실행하세요. docker exec -it -w /app app_dev sh로 app 컨테이너에 진입한 후 go run .을 실행하세요. dev-mitm 프로필을 사용하는 경우, 브라우저에서 http://127.0.0.1:8081을 열어 앱 컨테이너에서 이루어지는 HTTP 호출을 보고 조작할 수 있습니다.

구성 파일

구성 옵션이 필요한 플래그를 사용하는 경우, s3scanner는 다음 위치에서 config.yml을 검색합니다:

  • (현재 디렉터리)
  • /etc/s3scanner/
  • $HOME/.s3scanner/
root@kitploit:~
# -db에 필요
db:
  uri: "postgresql://user:[email protected]:5432/스키마_이름"

# -mq에 필요
mq:
  queue_name: "aws"
  uri: "amqp://user:pass@localhost:5672"

# `-provider custom`에 필요
#   address_style - 엔드포인트에서 사용하는 주소 스타일
#     타입: 문자열
#     값: "path" 또는 "vhost"
#   endpoint_format - 엔드포인트 URL 형식. 리전 이름을 위한 자리 표시자로 '$REGION'을 포함해야 함
#     타입: 문자열
#   insecure - SSL 오류 무시
#     타입: 부울
# regions는 최소 하나의 옵션을 포함해야 함
providers:
  custom: 
    address_style: "path"
    endpoint_format: "https://$REGION.vultrobjects.com"
    insecure: false
    regions:
      - "ewr1"

s3scanner가 구성 파일을 파싱할 때, endpoint_format을 가져와 나열된 모든 regions에 대해 $REGION을 대체하여 엔드포인트 URL 목록을 생성합니다.

S3 호환 API

참고: S3Scanner는 현재 AWS가 아닌 서비스의 익명 사용자 권한 스캔만 지원합니다.

📚 AWS 이외의 API에 대한 자세한 정보는 프로젝트 위키에서 확인할 수 있습니다.

권한

이 도구는 버킷에 대해 가능한 모든 정보를 얻으려고 시도하지만, 결과를 해석하는 것은 사용자의 몫입니다.

버킷의 가능한 권한:

  • 읽기 - 모든 파일 나열 및 보기
  • 쓰기 - 버킷에 파일 쓰기
  • ACP 읽기 - 버킷에 연결된 모든 액세스 제어 정책 읽기
  • ACP 쓰기 - 버킷에 액세스 제어 정책 쓰기
  • 전체 제어 - 위의 모든 권한

이러한 권한 중 일부 또는 전부가 2가지 주요 사용자 그룹에 설정될 수 있습니다:

  • 인증된 사용자
  • 공개 사용자 (AWS 자격 증명이 없는 사용자)
  • 개별 사용자/그룹 (이 도구의 범위 밖)

이것이 의미하는 바: 버킷이 ACL 읽기/쓰기를 허용하지 않는다고 해서 버킷에서 파일을 읽거나 쓸 수 없다는 뜻은 아닙니다. 반대로, ACL을 나열할 수 있지만 버킷에 읽기/쓰기가 불가능할 수도 있습니다.

라이선스

MIT

도구 다운로드
nix-shell -p s3scanner
NixOS unstablenixpkgs unstable 패키지nix-shell -p s3scanner
기타 - 소스에서 빌드GitHub 릴리스git clone [email protected]:sa7mon/S3Scanner.git && cd S3Scanner && go build -o s3scanner .