AWS - S3 Unauthenticated Enum

Sıfırdan kahraman olana kadar AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

S3 Genel Kovaları

Bir kova "genel" olarak kabul edilir eğer herhangi bir kullanıcı kovanın içeriğini listeleyebilirse, ve "özel" ise kova içeriği yalnızca belirli kullanıcılar tarafından listelenebilir veya yazılabilirse.

Şirketler, kova izinlerini yanlış yapılandırarak her şeye veya AWS'de herhangi bir hesapta kimliği doğrulanmış herkese erişim sağlayabilirler. Unutmayın, bu tür yanlış yapılandırmalarla bazı işlemlerin gerçekleştirilemeyebileceğini, çünkü kovaların kendi erişim kontrol listelerine (ACL'ler) sahip olabileceğini unutmayın.

AWS-S3 yanlış yapılandırması hakkında bilgi edinin: http://flaws.cloud ve http://flaws2.cloud/

AWS Kovalarını Bulma

Bir web sayfasının AWS'yi kullanıp kullanmadığını bulmanın farklı yöntemleri:

Numaralandırma ve OSINT:

  • wappalyzer tarayıcı eklentisini kullanarak

  • Burp'u kullanarak (web tarayarak) veya sayfada manuel olarak gezinerek tüm yüklenen kaynaklar Geçmiş'te kaydedilecektir.

  • Alanlar için kaynakları kontrol edin:

http://s3.amazonaws.com/[bucket_name]/
http://[bucket_name].s3.amazonaws.com/
  • resources.domain.com gibi CNAMES için kontrol edin, bucket.s3.amazonaws.com CNAME'ye sahip olabilir.

  • https://buckets.grayhatwarfare.com adresine bakın, zaten açık kovalar keşfedilmiş bir web sitesi.

  • Kova adı ve kova alan adının aynı olması gerekir.

  • flaws.cloud IP 52.92.181.107'de ve oraya gittiğinizde sizi https://aws.amazon.com/s3/ adresine yönlendirir. Ayrıca, dig -x 52.92.181.107 s3-website-us-west-2.amazonaws.com verir.

  • Bir kova olduğunu kontrol etmek için https://flaws.cloud.s3.amazonaws.com/ adresini de ziyaret edebilirsiniz.

Kaba Kuvvet

Pentest yaptığınız şirketle ilgili kova adlarını kaba kuvvetle bulabilirsiniz:

# Permütasyon oluşturmak için bir kelime listesi oluşturun
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

# Test etmek için alan adları ve alt alan adlarına dayalı bir kelime listesi oluşturun
## Bu alan adlarını ve alt alan adlarını subdomains.txt dosyasına yazın
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

# Saldırmak için bir listeyle permütasyonlar oluşturun
goaltdns -l /tmp/words-hosts-s3.txt -w /tmp/words-s3.txt -o /tmp/final-words-s3.txt.temp
## Önceki araç, alt alanlar için permütasyonlar oluşturmaya özeldir, bu listeyi filtreleyelim
### ". ile biten satırları kaldır
cat /tmp/final-words-s3.txt.temp | grep -Ev "\.$" > /tmp/final-words-s3.txt.temp2
### TLD olmadan liste oluştur
cat /tmp/final-words-s3.txt.temp2 | sed -E 's/\.[a-zA-Z0-9]+$//' > /tmp/final-words-s3.txt.temp3
### Noktalı olmayan liste oluştur
cat /tmp/final-words-s3.txt.temp3 | tr -d "." > /tmp/final-words-s3.txt.temp4http://phantom.s3.amazonaws.com/
### Tire olmayan liste oluştur
cat /tmp/final-words-s3.txt.temp3 | tr "." "-" > /tmp/final-words-s3.txt.temp5

## Son kelime listesini oluştur
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
## s3scanner'i Çağırın
s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt  | grep bucket_exists

S3 Kovalarını Yağma

Açık S3 kovaları verildiğinde, BucketLoot otomatik olarak ilginç bilgileri arayabilir.

Bölgeyi Bulma

AWS tarafından desteklenen tüm bölgeleri https://docs.aws.amazon.com/general/latest/gr/s3.html adresinde bulabilirsiniz.

DNS ile

Bir kova bölgesini keşfedilen IP'nin DNS isteği yaparak dig ve nslookup ile alabilirsiniz:

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.

Denetleme

Çözümlenen alan adında "website" kelimesinin bulunduğundan emin olun. Statik web sitesine şu adresten erişebilirsiniz: flaws.cloud.s3-website-us-west-2.amazonaws.com veya kovaya şu adresten erişebilirsiniz: flaws.cloud.s3-us-west-2.amazonaws.com

Deneyerek

Bir kovaya erişmeyi denediğinizde, ancak belirttiğiniz alan adında başka bir bölge olduğunda (örneğin kova bucket.s3.amazonaws.com içindeyken bucket.s3-website-us-west-2.amazonaws.com'a erişmeye çalışırsanız, doğru konuma yönlendirileceksiniz:

Kovayı Numaralandırma

Bir kullanıcının kovanın açıklığını test etmek için sadece URL'yi web tarayıcısına girmesi yeterlidir. Özel bir kova "Erişim Reddedildi" yanıtı verecektir. Genel bir kova ise depolanan ilk 1.000 nesneyi listeleyecektir.

Herkese açık:

Özel:

Ayrıca bunu cli ile de kontrol edebilirsiniz:

#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]

Eğer kovada bir alan adı yoksa, numaralandırmaya çalışırken yalnızca kova adını ve tüm AWSs3 alan adını değil. Örnek: s3://<BUCKETNAME>

Genel URL şablonu

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

Genel Kova'dan Hesap Kimliği Al

Yeni S3:ResourceAccount Politika Koşulu Anahtarı'ndan faydalanarak bir AWS hesabını belirlemek mümkündür. Bu koşul, erişimi S3 kovasına göre kısıtlar (diğer hesap tabanlı politikalar, istekte bulunan ana hesaba göre kısıtlar). Ve çünkü politika yer tutucuları içerebilir, hesap numarasını sadece bir numara ile birlikte bulmak mümkündür.

Bu araç süreci otomatikleştirir:

# 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

Bu teknik aynı zamanda API Gateway URL'leri, Lambda URL'leri, Veri Değişim veri setleri ve hatta etiket değerlerini almak için de çalışır (eğer etiket anahtarını biliyorsanız). Daha fazla bilgiyi orijinal araştırmada ve bu saldırıyı otomatikleştirmek için conditional-love aracında bulabilirsiniz.

Referanslar

AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Red Team Expert) ile!

HackTricks'ı desteklemenin diğer yolları:

Last updated