AWS - S3 Unauthenticated Enum

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Javni S3 Bucketi

Bucket se smatra "javni" ako bilo koji korisnik može da vidi sadržaj bucketa, i "privatni" ako sadržaj bucketa može videti ili pisati samo određeni korisnici.

Kompanije mogu imati nespravno konfigurisane dozvole za buckete dajući pristup ili svemu ili svakome ko je autentifikovan u AWS-u u bilo kojem nalogu (tako da svako može pristupiti). Imajte na umu da čak i sa takvim nespravnim konfiguracijama neke radnje možda neće moći da se izvrše jer bucketi mogu imati svoje liste kontrola pristupa (ACL).

Saznajte više o AWS-S3 nespravnoj konfiguraciji ovde: http://flaws.cloud i http://flaws2.cloud/

Pronalaženje AWS Bucket-a

Različite metode za pronalaženje kada veb stranica koristi AWS za skladištenje nekih resursa:

Enumeracija & OSINT:

  • Korišćenjem wappalyzer dodatka za pregledač

  • Korišćenjem burp-a (spidering weba) ili ručnim navigiranjem kroz stranicu svi resursi učitani će biti sačuvani u Istoriji.

  • Proverite resurse na domenima kao:

http://s3.amazonaws.com/[bucket_name]/
http://[bucket_name].s3.amazonaws.com/
  • Proverite CNAMES jer resources.domain.com može imati CNAME bucket.s3.amazonaws.com

  • Proverite https://buckets.grayhatwarfare.com, veb sa već otkrivenim otvorenim bucketima.

  • Ime bucketa i domen bucketa moraju biti isti.

  • flaws.cloud je na IP 52.92.181.107 i ako odete tamo preusmerava vas na https://aws.amazon.com/s3/. Takođe, dig -x 52.92.181.107 daje s3-website-us-west-2.amazonaws.com.

  • Da biste proverili da li je u pitanju bucket možete takođe posetiti https://flaws.cloud.s3.amazonaws.com/.

Brute-Force

Možete pronaći buckete brute-forcing-om imena povezanih sa kompanijom koju pentestirate:

# Generišite listu reči za kreiranje permutacija
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

# Generišite listu reči na osnovu domena i poddomena za testiranje
## Upisujte te domene i poddomene u 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

# Kreirajte permutacije na osnovu liste domena i poddomena za napad
goaltdns -l /tmp-words-hosts-s3.txt -w /tmp-words-s3.txt -o /tmp-final-words-s3.txt.temp
## Prethodni alat je specijalizovan za kreiranje permutacija za poddomene, filtrirajmo tu listu
### Uklonite linije koje se završavaju sa "."
cat /tmp-final-words-s3.txt.temp | grep -Ev "\.$" > /tmp-final-words-s3.txt.temp2
### Kreirajte listu bez TLD
cat /tmp-final-words-s3.txt.temp2 | sed -E 's/\.[a-zA-Z0-9]+$//' > /tmp-final-words-s3.txt.temp3
### Kreirajte listu bez tačaka
cat /tmp-final-words-s3.txt.temp3 | tr -d "." > /tmp-final-words-s3.txt.temp4http://phantom.s3.amazonaws.com/
### Kreirajte listu bez crtica
cat /tmp-final-words-s3.txt.temp3 | tr "." "-" > /tmp-final-words-s3.txt.temp5

## Generišite konačnu listu reči
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
## Pozovi s3scanner
s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt  | grep bucket_exists

Pljačka S3 kanti

Dajući otvorene S3 kante, BucketLoot može automatski tražiti zanimljive informacije.

Pronađi region

Sve podržane regione od strane AWS možete pronaći na https://docs.aws.amazon.com/general/latest/gr/s3.html

Preko DNS-a

Možete dobiti region kante pomoću dig i nslookup izvršavajući DNS zahtev otkrivenoj IP adresi:

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.

Proverite da li rešena domena sadrži reč "website". Možete pristupiti statičkom veb-sajtu odlaskom na: flaws.cloud.s3-website-us-west-2.amazonaws.com ili možete pristupiti kanti posetom: flaws.cloud.s3-us-west-2.amazonaws.com

Pokušajem

Ako pokušate da pristupite kanti, ali u imeni domena navedete drugu regiju (na primer, kanta je u bucket.s3.amazonaws.com ali pokušavate da pristupite bucket.s3-website-us-west-2.amazonaws.com), bićete upućeni na ispravnu lokaciju:

Enumeracija kante

Da biste testirali otvorenost kante, korisnik jednostavno može uneti URL u svoj veb pregledač. Privatna kanta će odgovoriti sa "Pristup odbijen". Javna kanta će izlistati prvih 1.000 objekata koji su sačuvani.

Otvoreno za sve:

Privatno:

Takođe možete proveriti ovo pomoću komandne linije:

#Use --no-sign-request for check Everyones permissions
#Use --profile <PROFILE_NAME> to indicate the AWS profile(keys) that youwant to use: Check for "Any Authenticated AWS User" permissions
#--recursive if you want list recursivelyls
#Opcionally you can select the region if you now it
aws s3 ls s3://flaws.cloud/ [--no-sign-request] [--profile <PROFILE_NAME>] [ --recursive] [--region us-west-2]

Šablon javnog URL-a

Ako kanta nema ime domena, prilikom pokušaja enumeracije, samo stavite ime kante a ne ceo AWSs3 domen. Primer: s3://<IMEKANTE>

https://{user_provided}.s3.amazonaws.com

Dobijanje ID naloga iz javnog Bucket-a

Moguće je odrediti AWS nalog iskorišćavanjem nove S3:ResourceAccount Policy Condition Key. Ova uslov ograničava pristup na osnovu S3 bucket-a u kojem se nalazi nalog (ostale politike zasnovane na nalozima ograničavaju se na osnovu naloga u kojem se nalazi zahtevajući princip). I pošto politika može sadržati zvezdice, moguće je pronaći broj naloga samo po jedan broj u isto vreme.

Ovaj alat automatizuje proces:

# Installation
pipx install s3-account-search
pip install s3-account-search
# With a bucket
s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket
# With an object
s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket/path/to/object.ext

Ova tehnika takođe radi sa URL-ovima API Gateway-a, Lambda URL-ovima, Data Exchange data setovima čak i za dobijanje vrednosti tagova (ako znate ključ taga). Više informacija možete pronaći u originalnom istraživanju i alatu conditional-love za automatizaciju ovog iskorišćavanja.

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated