# AWS - S3 Unauthenticated Enum {{#include ../../../banners/hacktricks-training.md}} ## S3 Öffentliche Buckets Ein Bucket wird als **„öffentlich“** betrachtet, wenn **jeder Benutzer den Inhalt** des Buckets auflisten kann, und als **„privat“**, wenn der Inhalt des Buckets **nur von bestimmten Benutzern aufgelistet oder geschrieben werden kann**. Unternehmen könnten **Berechtigungen für Buckets falsch konfiguriert** haben, was entweder den Zugriff auf alles oder auf alle authentifizierten Benutzer in AWS in jedem Konto (also auf jeden) ermöglicht. Beachten Sie, dass selbst bei solchen Fehlkonfigurationen einige Aktionen möglicherweise nicht ausgeführt werden können, da Buckets ihre eigenen Zugriffskontrolllisten (ACLs) haben können. **Erfahren Sie hier mehr über AWS-S3 Fehlkonfigurationen:** [**http://flaws.cloud**](http://flaws.cloud/) **und** [**http://flaws2.cloud/**](http://flaws2.cloud) ### Finden von AWS Buckets Verschiedene Methoden, um herauszufinden, ob eine Webseite AWS zur Speicherung von Ressourcen verwendet: #### Enumeration & OSINT: - Verwendung des **wappalyzer** Browser-Plugins - Verwendung von burp (**Spidering** des Webs) oder durch manuelles Navigieren durch die Seite, alle **geladenen Ressourcen** werden im Verlauf gespeichert. - **Überprüfen Sie Ressourcen** in Domains wie: ``` http://s3.amazonaws.com/[bucket_name]/ http://[bucket_name].s3.amazonaws.com/ ``` - Überprüfen Sie auf **CNAMES**, da `resources.domain.com` den CNAME `bucket.s3.amazonaws.com` haben könnte - Überprüfen Sie [https://buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/), eine Webseite mit bereits **entdeckten offenen Buckets**. - Der **Bucket-Name** und der **Bucket-Domain-Name** müssen **identisch sein.** - **flaws.cloud** hat die **IP** 52.92.181.107 und wenn Sie dorthin gehen, werden Sie zu [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/) weitergeleitet. Auch `dig -x 52.92.181.107` gibt `s3-website-us-west-2.amazonaws.com` zurück. - Um zu überprüfen, ob es sich um einen Bucket handelt, können Sie auch **besuchen** [https://flaws.cloud.s3.amazonaws.com/](https://flaws.cloud.s3.amazonaws.com/). #### Brute-Force Sie können Buckets durch **Brute-Forcing von Namen** finden, die mit dem Unternehmen, das Sie pentesten, in Verbindung stehen: - [https://github.com/sa7mon/S3Scanner](https://github.com/sa7mon/S3Scanner) - [https://github.com/clario-tech/s3-inspector](https://github.com/clario-tech/s3-inspector) - [https://github.com/jordanpotti/AWSBucketDump](https://github.com/jordanpotti/AWSBucketDump) (enthält eine Liste mit potenziellen Bucket-Namen) - [https://github.com/fellchase/flumberboozle/tree/master/flumberbuckets](https://github.com/fellchase/flumberboozle/tree/master/flumberbuckets) - [https://github.com/smaranchand/bucky](https://github.com/smaranchand/bucky) - [https://github.com/tomdev/teh_s3_bucketeers](https://github.com/tomdev/teh_s3_bucketeers) - [https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/s3](https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/s3) - [https://github.com/Eilonh/s3crets_scanner](https://github.com/Eilonh/s3crets_scanner) - [https://github.com/belane/CloudHunter](https://github.com/belane/CloudHunter)
# Generieren Sie eine Wortliste, um Permutationen zu erstellen
curl -s https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt > /tmp/words-s3.txt.temp
curl -s https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt >>/tmp/words-s3.txt.temp
cat /tmp/words-s3.txt.temp | sort -u > /tmp/words-s3.txt
# Generieren Sie eine Wortliste basierend auf den Domains und Subdomains, die getestet werden sollen
## Schreiben Sie diese Domains und Subdomains in subdomains.txt
cat subdomains.txt > /tmp/words-hosts-s3.txt
cat subdomains.txt | tr "." "-" >> /tmp/words-hosts-s3.txt
cat subdomains.txt | tr "." "\n" | sort -u >> /tmp/words-hosts-s3.txt
# Erstellen Sie Permutationen basierend auf einer Liste mit den Domains und Subdomains, die angegriffen werden sollen
goaltdns -l /tmp/words-hosts-s3.txt -w /tmp/words-s3.txt -o /tmp/final-words-s3.txt.temp
## Das vorherige Tool ist spezialisiert auf die Erstellung von Permutationen für Subdomains, lassen Sie uns diese Liste filtern
### Entfernen Sie Zeilen, die mit "." enden
cat /tmp/final-words-s3.txt.temp | grep -Ev "\.$" > /tmp/final-words-s3.txt.temp2
### Erstellen Sie eine Liste ohne TLD
cat /tmp/final-words-s3.txt.temp2 | sed -E 's/\.[a-zA-Z0-9]+$//' > /tmp/final-words-s3.txt.temp3
### Erstellen Sie eine Liste ohne Punkte
cat /tmp/final-words-s3.txt.temp3 | tr -d "." > /tmp/final-words-s3.txt.temp4http://phantom.s3.amazonaws.com/
### Erstellen Sie eine Liste ohne Bindestriche
cat /tmp/final-words-s3.txt.temp3 | tr "." "-" > /tmp/final-words-s3.txt.temp5
## Generieren Sie die endgültige Wortliste
cat /tmp/final-words-s3.txt.temp2 /tmp/final-words-s3.txt.temp3 /tmp/final-words-s3.txt.temp4 /tmp/final-words-s3.txt.temp5 | grep -v -- "-\." | awk '{print tolower($0)}' | sort -u > /tmp/final-words-s3.txt
## Rufen Sie s3scanner auf
s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt | grep bucket_exists
#### Loot S3 Buckets
Gegebene S3 offene Buckets kann [**BucketLoot**](https://github.com/redhuntlabs/BucketLoot) automatisch **nach interessanten Informationen suchen**.
### Finde die Region
Sie können alle von AWS unterstützten Regionen in [**https://docs.aws.amazon.com/general/latest/gr/s3.html**](https://docs.aws.amazon.com/general/latest/gr/s3.html) finden.
#### Über DNS
Sie können die Region eines Buckets mit einem **`dig`** und **`nslookup`** erhalten, indem Sie eine **DNS-Anfrage der entdeckten IP** durchführen:
```bash
dig flaws.cloud
;; ANSWER SECTION:
flaws.cloud. 5 IN A 52.218.192.11
nslookup 52.218.192.11
Non-authoritative answer:
11.192.218.52.in-addr.arpa name = s3-website-us-west-2.amazonaws.com.
```
Überprüfen Sie, ob die aufgelöste Domain das Wort "website" enthält.\
Sie können auf die statische Website zugreifen, indem Sie zu: `flaws.cloud.s3-website-us-west-2.amazonaws.com` gehen\
oder Sie können auf den Bucket zugreifen, indem Sie besuchen: `flaws.cloud.s3-us-west-2.amazonaws.com`
#### Durch Ausprobieren
Wenn Sie versuchen, auf einen Bucket zuzugreifen, aber im **Domainnamen eine andere Region angeben** (zum Beispiel der Bucket ist in `bucket.s3.amazonaws.com`, aber Sie versuchen, auf `bucket.s3-website-us-west-2.amazonaws.com` zuzugreifen, dann werden Sie **auf den richtigen Standort hingewiesen**:
.png>)
### Auflisten des Buckets
Um die Offenheit des Buckets zu testen, kann ein Benutzer einfach die URL in seinen Webbrowser eingeben. Ein privater Bucket antwortet mit "Zugriff verweigert". Ein öffentlicher Bucket listet die ersten 1.000 Objekte auf, die gespeichert wurden.
Für alle zugänglich:
.png>)
Privat:
.png>)
Sie können dies auch mit der CLI überprüfen:
```bash
#Use --no-sign-request for check Everyones permissions
#Use --profile