AWS - S3 Unauthenticated Enum
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Ekip Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Ekip Uzmanı (GRTE)
Bir havuz, herhangi bir kullanıcının havuzun içeriğini listeleyebilmesi durumunda “genel” olarak kabul edilir ve sadece belirli kullanıcılar tarafından havuzun içeriğinin listeleyebileceği veya yazılabileceği durumlarda “özel” olarak kabul edilir.
Şirketlerin havuz izinleri yanlış yapılandırılmış olabilir, bu da her şeye veya AWS'de herhangi bir hesapta kimliği doğrulanmış herkesin erişimine izin verebilir (yani herkes için). Bu tür yanlış yapılandırmalarda bazı eylemlerin gerçekleştirilemeyeceğini unutmayın, çünkü havuzların kendi erişim kontrol listeleri (ACL'ler) olabilir.
AWS-S3 yanlış yapılandırması hakkında burada bilgi edinin: http://flaws.cloud ve http://flaws2.cloud/
Bir web sayfasının bazı kaynakları depolamak için AWS kullanıp kullanmadığını bulmanın farklı yöntemleri:
wappalyzer tarayıcı eklentisini kullanma
burp kullanarak (web'i tarama) veya sayfada manuel olarak gezinerek tüm yüklenen kaynaklar Geçmiş'e kaydedilecektir.
Kaynakları kontrol et şu alanlarda:
CNAMES kontrol edin, çünkü resources.domain.com
CNAME bucket.s3.amazonaws.com
olabilir
https://buckets.grayhatwarfare.com'i kontrol edin, zaten keşfedilmiş açık havuzlar ile bir web.
havuz adı ve havuz alan adı aynı olmalıdır.
flaws.cloud IP 52.92.181.107'dir ve oraya giderseniz 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 havuz olup olmadığını kontrol etmek için şu adresi ziyaret edebilirsiniz: https://flaws.cloud.s3.amazonaws.com/.
Hedef aldığınız şirketle ilgili isimleri kaba kuvvetle deneyerek havuzları bulabilirsiniz:
https://github.com/jordanpotti/AWSBucketDump (Potansiyel havuz adları içeren bir liste içerir)
Açık S3 havuzları verildiğinde, BucketLoot otomatik olarak ilginç bilgileri arayabilir.
AWS tarafından desteklenen tüm bölgeleri https://docs.aws.amazon.com/general/latest/gr/s3.html adresinde bulabilirsiniz.
Bir havuzun bölgesini dig
ve nslookup
kullanarak keşfedilen IP'nin DNS isteğini yaparak alabilirsiniz:
Kontrol edin ki çözümlenen alan adında "website" kelimesi var.
Statik web sitesine erişmek için: flaws.cloud.s3-website-us-west-2.amazonaws.com
adresine gidebilirsiniz
veya kovaya erişmek için: flaws.cloud.s3-us-west-2.amazonaws.com
adresini ziyaret edebilirsiniz.
Bir kovaya erişmeye çalıştığınızda, ancak belirttiğiniz alan adında başka bir bölge varsa (örneğin, kova bucket.s3.amazonaws.com
içindeyse ama siz bucket.s3-website-us-west-2.amazonaws.com
adresine erişmeye çalışıyorsanız, o zaman doğru konuma yönlendirileceksiniz:
Kovanın açıklığını test etmek için bir kullanıcı sadece URL'yi web tarayıcısına girebilir. Özel bir kova "Erişim Reddedildi" yanıtı verir. Kamuya açık bir kova, depolanan ilk 1.000 nesneyi listeleyecektir.
Herkese açık:
Özel:
Bunu cli ile de kontrol edebilirsiniz:
Eğer bucket'ın bir alan adı yoksa, onu listelemeye çalışırken sadece bucket adını yazın ve tüm AWSs3 alan adını değil. Örnek: s3://<BUCKETNAME>
Yeni S3:ResourceAccount
Politika Koşul Anahtarı'ndan yararlanarak bir AWS hesabını belirlemek mümkündür. Bu koşul, bir hesabın bulunduğu S3 bucket'a dayalı olarak erişimi kısıtlar (diğer hesap tabanlı politikalar, talep eden ilkenin bulunduğu hesaba dayalı olarak kısıtlar).
Ve politika joker karakterler içerebildiğinden, hesap numarasını sadece bir rakamda bulmak mümkündür.
Bu araç süreci otomatikleştirir:
Bu teknik, API Gateway URL'leri, Lambda URL'leri, Data Exchange veri setleri ile çalışır ve hatta etiketlerin değerini almak için (etiket anahtarını biliyorsanız) kullanılabilir. Daha fazla bilgi için orijinal araştırmaya ve bu istismarı otomatikleştirmek için conditional-love aracına bakabilirsiniz.
bu blog yazısında açıklandığı gibi, bir bucket'ı listeleme izinleriniz varsa bir isteği göndererek bucket'ın ait olduğu accountID'yi doğrulamak mümkündür:
Eğer hata “Erişim Reddedildi” ise, bu hesap kimliğinin yanlış olduğu anlamına gelir.
bu blog yazısında açıklandığı gibi, bir e-posta adresinin herhangi bir AWS hesabıyla ilişkili olup olmadığını bir e-postaya S3 bucket üzerinde ACL'ler aracılığıyla izin vermeyi deneyerek kontrol etmek mümkündür. Eğer bu bir hata tetiklemiyorsa, bu e-posta bazı AWS hesaplarının root kullanıcısıdır:
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)