
Scanne nach fehlkonfigurierten S3-Buckets über S3-kompatible APIs!
Funktionen - Verwendung - Schnellstart - Installation - Diskutieren
EINGABE: (1 erforderlich)
-bucket string Name des zu überprüfenden Buckets.
-bucket-file string Datei mit Bucketnamen zur Überprüfung.
-mq Verbindung zu RabbitMQ herstellen, um Buckets zu erhalten. Erfordert Konfigurationsdateischlüssel "mq". Standard: "false"
AUSGABE:
-db Ergebnisse in einer Postgres-Datenbank speichern. Erfordert Konfigurationsdateischlüssel "db.uri". Standard: "false"
-json Logs im JSON-Format auf stdout ausgeben anstatt menschenlesbar. Standard: "false"
OPTIONEN:
-enumerate Bucket-Objekte enumerieren (kann zeitaufwendig sein). Standard: "false"
-provider string Objektspeicheranbieter: aws, custom, digitalocean, dreamhost, gcp, linode, scaleway – custom erfordert Konfigurationsdatei. Standard: "aws"
-threads int Anzahl der Threads zum Scannen. Standard: "4"
DEBUG:
-verbose Ausführliche Protokollierung aktivieren. Standard: "false"
-version Version anzeigen Standard: "false"
Falls eine Konfigurationsdatei erforderlich ist, wird an diesen Speicherorten nach config.yml gesucht: "." "/etc/s3scanner/" "$HOME/.s3scanner/"
Wenn Sie dieses Tool nützlich fanden, erwägen Sie bitte eine Spende zur Unterstützung seiner Entwicklung. Sie finden Sponsoring-Optionen auf der Seite dieses Repositorys oder in FUNDING.yml
Großen Dank an tines für die fortlaufende Unterstützung dieses Projekts.
Scannen Sie AWS nach in einer Datei aufgelisteten Bucket-Namen, enumerieren Sie alle Objekte
$ s3scanner -bucket-file names.txt -enumerate
Scannen Sie einen Bucket in GCP, enumerieren Sie alle Objekte und speichern Sie Ergebnisse in der Datenbank
$ s3scanner -provider gcp -db -bucket my-bucket -enumerate
s3scanner benötigt genau einen Eingabetyp: -bucket, -bucket-file oder -mq.
EINGABE: (1 erforderlich)
-bucket string Name des zu überprüfenden Buckets.
-bucket-file string Datei mit Bucketnamen zur Überprüfung.
-mq Verbindung zu RabbitMQ herstellen, um Buckets zu erhalten. Erfordert Konfigurationsdateischlüssel "mq". Standard: "false"
-bucketScannt einen einzelnen Bucket
s3scanner -bucket secret_uploads
-bucket-fileScannt jeden in einer Datei aufgelisteten Bucket-Namen
s3scanner -bucket-file names.txt
wobei names.txt einen Bucket-Namen pro Zeile enthält
$ cat names.txt
bucket123
assets
image-uploads
Mehrfach aufgeführte Bucket-Namen werden nur einmal gescannt.
-mqStellt eine Verbindung zu einem RabbitMQ-Server her und verarbeitet Nachrichten, die Bucket-Namen zum Scannen enthalten.
s3scanner -mq
Nachrichten sollten JSON-kodierte Bucket-Objekte sein – siehe mqingest für ein Golang-Veröffentlichungsbeispiel.
-mq erfordert die Konfigurationsdateischlüssel mq.uri und mq.queue_name. Siehe Abschnitt Konfigurationsdatei für ein Beispiel.
AUSGABE:
-db Ergebnisse in einer Postgres-Datenbank speichern. Erfordert Konfigurationsdateischlüssel "db.uri". Standard: "false"
-json Logs im JSON-Format auf stdout ausgeben anstatt menschenlesbar. Standard: "false"
-dbSpeichert alle Scanergebnisse in einer PostgreSQL-Datenbank
s3scanner -bucket images -db
db.uri. Siehe Abschnitt Konfigurationsdatei für ein Beispiel.-db werden Ergebnisse auch auf der Konsole ausgegeben, wenn -json oder der standardmäßige menschenlesbare Ausgabemodus verwendet wird.s3scanner führt bei jeder Verbindung zur Datenbank Gorms Auto Migration aus. Falls das Schema bereits Tabellen mit den von Gorm erwarteten Namen enthält, kann dies deren Struktur verändern. Es wird empfohlen, ein Postgres-Schema zu erstellen, das nur für s3scanner-Ergebnisse bestimmt ist.-jsonAnstatt Scanergebnisse im menschenlesbaren Format auf der Konsole auszugeben, wird maschinenlesbares JSON ausgegeben.
s3scanner -bucket images -json
Dies gibt pro Zeile ein JSON-Objekt auf der Konsole aus, das dann an jq oder andere Werkzeuge, die JSON-Eingaben akzeptieren, weitergeleitet werden kann.
Beispiel: Bucket-Name und Region für alle existierenden Buckets ausgeben
$ 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
OPTIONEN:
-enumerate Bucket-Objekte enumerieren (kann zeitaufwendig sein). Standard: "false"
-provider string Objektspeicheranbieter: aws, custom, digitalocean, dreamhost, gcp, linode, scaleway – custom erfordert Konfigurationsdatei. Standard: "aws"
-threads int Anzahl der Threads zum Scannen. Standard: "4"
-enumerateEnumeriert alle im Bucket gespeicherten Objekte. Standardmäßig überprüft s3scanner nur die Berechtigungen von Buckets.
s3scanner -bucket attachments -enumerate
s3scanner „Seiten" mit je 1.000 Objekten an. Gibt es mehr als 5.000 Seiten, wird der Rest übersprungen.-providerName des zu verwendenden Speicheranbieters beim Überprüfen von Buckets.
s3scanner -bucket assets -provider gcp
providers.custom, die im Abschnitt Konfigurationsdatei aufgeführt sind.-threadsAnzahl der Threads zum Scannen.
s3scanner -bucket secret_docs -threads 8
DEBUG:
-verbose Ausführliche Protokollierung aktivieren. Standard: "false"
-version Version anzeigen Standard: "false"
-verboseAktiviert ausführliche Protokollierung von Debug-Meldungen. Diese Option erzeugt viele Logs und wird nur bei der Meldung eines Fehlers empfohlen.
s3scanner -bucket spreadsheets -verbose
-versionVersionsinformationen anzeigen und beenden.
s3scanner -version
dev aus, wenn aus dem Quellcode kompiliert.Eine Docker-Compose-Datei ist enthalten, die 4 Container erstellt:
2 Profile sind konfiguriert:
dev – Standard-Entwicklungsumgebungdev-mitm – Umgebung mit mitmproxy konfiguriert zur einfacheren Beobachtung von HTTP-Verkehr beim Debuggen oder Hinzufügen neuer Anbieter.Um die Entwicklungsumgebung zu starten, führen Sie make dev oder make dev-mitm aus. Wechseln Sie mit docker exec -it -w /app app_dev sh in den app-Container, dann go run .
Wenn Sie das dev-mitm-Profil verwenden, öffnen Sie http://127.0.0.1:8081 in einem Browser, um HTTP-Aufrufe anzuzeigen und zu manipulieren, die vom App-Container getätigt werden.
Wenn Flags verwendet werden, die Konfigurationsoptionen erfordern, sucht s3scanner nach config.yml in:
/etc/s3scanner/$HOME/.s3scanner/# Required by -db
db:
uri: "postgresql://user:[email protected]:5432/schema_name"
# Required by -mq
mq:
queue_name: "aws"
uri: "amqp://user:pass@localhost:5672"
# providers.custom required by `-provider custom`
# address_style - Addressing style used by endpoints.
# type: string
# values: "path" or "vhost"
# endpoint_format - Format of endpoint URLs. Should contain '$REGION' as placeholder for region name
# type: string
# insecure - Ignore SSL errors
# type: boolean
# regions must contain at least one option
providers:
custom:
address_style: "path"
endpoint_format: "https://$REGION.vultrobjects.com"
insecure: false
regions:
- "ewr1"
Wenn s3scanner die Konfigurationsdatei analysiert, wird es das endpoint_format nehmen und für alle aufgeführten regions $REGION ersetzen, um eine Liste von Endpunkt-URLs zu erstellen.
Hinweis: S3Scanner unterstützt derzeit nur das Scannen nach anonymen Benutzerberechtigungen von Nicht-AWS-Diensten
📚 Weitere Informationen zu Nicht-AWS-APIs finden Sie im Projekt-Wiki.
Dieses Tool versucht, alle verfügbaren Informationen über einen Bucket zu erhalten, aber es liegt an Ihnen, die Ergebnisse zu interpretieren.
Mögliche Berechtigungen für Buckets:
Einige oder alle dieser Berechtigungen können für die 2 Hauptbenutzergruppen festgelegt werden:
Was das bedeutet: Nur weil ein Bucket das Lesen/Schreiben von ACLs nicht erlaubt, heißt das nicht, dass Sie keine Dateien im Bucket lesen/schreiben können. Umgekehrt können Sie möglicherweise ACLs auflisten, aber keine Dateien im Bucket lesen/schreiben.
MIT
| Plattform | Version | Schritte |
|---|
| BlackArch | pacman -S s3scanner | |
| Docker | docker run ghcr.io/sa7mon/s3scanner | |
| Go | go install -v github.com/sa7mon/s3scanner@latest | |
| Kali Linux | apt install s3scanner | |
| MacOS | brew install s3scanner | |
| Parrot OS | apt install s3scanner | |
| Windows - winget | winget install s3scanner | |
| NixOS stable | nix-shell -p s3scanner | |
| NixOS unstable | nix-shell -p s3scanner | |
| Andere – Aus Quellcode bauen | git clone [email protected]:sa7mon/S3Scanner.git && cd S3Scanner && go build -o s3scanner . |