AWS - S3 Unauthenticated Enum
Publiczne Wiadra S3
Wiadro jest uważane za "publiczne" jeśli każdy użytkownik może wyświetlić zawartość wiadra, a "prywatne" jeśli zawartość wiadra może być wyświetlana lub zapisywana tylko przez określonych użytkowników.
Firmy mogą mieć źle skonfigurowane uprawnienia wiader, umożliwiając dostęp do wszystkiego lub do wszystkich uwierzytelnionych w AWS w dowolnym koncie (czyli do każdego). Należy zauważyć, że nawet przy takich błędach niektóre czynności mogą być niemożliwe do wykonania, ponieważ wiadra mogą mieć własne listy kontroli dostępu (ACL).
Dowiedz się więcej o błędach konfiguracji AWS-S3 tutaj: http://flaws.cloud i http://flaws2.cloud/
Znajdowanie Wiader AWS
Różne metody znajdowania, gdy strona internetowa używa AWS do przechowywania pewnych zasobów:
Wyliczanie & OSINT:
Korzystając z wtyczki przeglądarki wappalyzer
Korzystając z burp (przeglądanie stron internetowych) lub ręcznego nawigowania po stronie, wszystkie załadowane zasoby zostaną zapisane w Historii.
Sprawdź zasoby w domenach takich jak:
Sprawdź CNAMES, ponieważ
resources.domain.com
może mieć CNAMEbucket.s3.amazonaws.com
Sprawdź https://buckets.grayhatwarfare.com, stronę z już odkrytymi otwartymi wiadrami.
Nazwa wiadra i nazwa domeny wiadra muszą być takie same.
flaws.cloud ma IP 52.92.181.107, a jeśli tam przejdziesz, zostaniesz przekierowany do https://aws.amazon.com/s3/. Ponadto,
dig -x 52.92.181.107
dajes3-website-us-west-2.amazonaws.com
.Aby sprawdzić, czy to wiadro, możesz również odwiedzić https://flaws.cloud.s3.amazonaws.com/.
Siłowe
Możesz znaleźć wiadra, siłowo przeszukując nazwy związane z firmą, którą testujesz pod kątem penetracji:
https://github.com/jordanpotti/AWSBucketDump (Zawiera listę potencjalnych nazw wiader)
Zdobywanie danych z kubełków S3
Dla otwartych kubełków S3, BucketLoot może automatycznie szukać interesujących informacji.
Znajdź region
Możesz znaleźć wszystkie obsługiwane regiony przez AWS na stronie https://docs.aws.amazon.com/general/latest/gr/s3.html
Poprzez DNS
Możesz uzyskać region kubełka za pomocą dig
i nslookup
wykonując żądanie DNS dla odkrytego adresu IP:
Sprawdź, czy rozwiązana domena zawiera słowo "website".
Możesz uzyskać dostęp do statycznej strony internetowej przechodząc pod adres: flaws.cloud.s3-website-us-west-2.amazonaws.com
lub możesz uzyskać dostęp do kubełka odwiedzając: flaws.cloud.s3-us-west-2.amazonaws.com
Próbując
Jeśli spróbujesz uzyskać dostęp do kubełka, ale w nazwie domeny podasz inny region (na przykład kubełek znajduje się w bucket.s3.amazonaws.com
, ale próbujesz uzyskać dostęp do bucket.s3-website-us-west-2.amazonaws.com
), zostaniesz skierowany na właściwe miejsce:
Wyliczanie kubełka
Aby przetestować dostępność kubełka, użytkownik może po prostu wpisać adres URL w przeglądarce internetowej. Prywatny kubełek zwróci komunikat "Odmowa dostępu". Publiczny kubełek wyświetli pierwsze 1 000 przechowywanych obiektów.
Dostępny dla wszystkich:
Prywatny:
Możesz także sprawdzić to za pomocą wiersza poleceń:
Szablon publicznego adresu URL
Jeśli kubeł nie ma nazwy domeny, podczas próby wyliczenia go, wstaw tylko nazwę kubełka a nie całą domenę AWSs3. Przykład: s3://<NAZWAKUBEŁKA>
Uzyskaj identyfikator konta z publicznego kubełka
Możliwe jest określenie konta AWS, wykorzystując nowy S3:ResourceAccount
Klucz warunku polityki. Ten warunek ogranicza dostęp na podstawie kubełka S3, w którym znajduje się konto (inne polityki oparte na koncie ograniczają dostęp na podstawie konta, w którym znajduje się żądający podmiot).
A ponieważ polityka może zawierać znaki wieloznaczne, możliwe jest znalezienie numeru konta po jednej cyfrze.
To narzędzie automatyzuje ten proces:
Ta technika działa również z adresami URL bramy API, adresami URL funkcji Lambda, zestawami danych Data Exchange, a nawet do uzyskania wartości tagów (jeśli znasz klucz tagu). Więcej informacji można znaleźć w oryginalnym badaniu oraz w narzędziu conditional-love do zautomatyzowania tego wykorzystania.
Referencje
Last updated