mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['src/pentesting-cloud/aws-security/aws-unauthenticated-enum-
This commit is contained in:
+30
-27
@@ -2,19 +2,19 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Publiczne Buckety S3
|
||||
## S3 Public Buckets
|
||||
|
||||
Bucket jest uważany za **„publiczny”**, jeśli **każdy użytkownik może wylistować zawartość** bucketa, a **„prywatny”**, jeśli zawartość bucketa może być **wylistowana lub zapisana tylko przez określonych użytkowników**.
|
||||
Bucket jest uważany za **„publiczny”**, jeśli **każdy użytkownik może wylistować zawartość** bucketa, a za **„prywatny”**, jeśli zawartość bucketa może być **wylistowana lub zapisana tylko przez określonych użytkowników**.
|
||||
|
||||
Firmy mogą mieć **błędnie skonfigurowane uprawnienia bucketów**, co daje dostęp albo do wszystkiego, albo do wszystkich uwierzytelnionych w AWS w dowolnym koncie (czyli do każdego). Należy pamiętać, że nawet przy takich błędnych konfiguracjach niektóre działania mogą nie być możliwe do wykonania, ponieważ buckety mogą mieć własne listy kontroli dostępu (ACL).
|
||||
Firmy mogą mieć **błędy w konfiguracji uprawnień bucketów**, dając dostęp albo do wszystkiego, albo do wszystkich uwierzytelnionych w AWS w dowolnym koncie (czyli do każdego). Należy pamiętać, że nawet przy takich błędach niektóre działania mogą nie być możliwe do wykonania, ponieważ buckety mogą mieć własne listy kontroli dostępu (ACL).
|
||||
|
||||
**Dowiedz się o błędach konfiguracji AWS-S3 tutaj:** [**http://flaws.cloud**](http://flaws.cloud/) **i** [**http://flaws2.cloud/**](http://flaws2.cloud)
|
||||
|
||||
### Znajdowanie Bucketów AWS
|
||||
### Finding AWS Buckets
|
||||
|
||||
Różne metody, aby znaleźć, kiedy strona internetowa korzysta z AWS do przechowywania niektórych zasobów:
|
||||
|
||||
#### Enumeracja i OSINT:
|
||||
#### Enumeration & OSINT:
|
||||
|
||||
- Używając wtyczki przeglądarki **wappalyzer**
|
||||
- Używając burp (**spidering** sieci) lub ręcznie nawigując po stronie, wszystkie **zasoby** **załadowane** będą zapisane w Historii.
|
||||
@@ -26,14 +26,15 @@ http://[bucket_name].s3.amazonaws.com/
|
||||
```
|
||||
|
||||
- Sprawdź **CNAMES**, ponieważ `resources.domain.com` może mieć CNAME `bucket.s3.amazonaws.com`
|
||||
- **[s3dns](https://github.com/olizimmermann/s3dns)** – Lekki serwer DNS, który pasywnie identyfikuje buckety przechowywania w chmurze (S3, GCP, Azure) analizując ruch DNS. Wykrywa CNAME, śledzi łańcuchy rozwiązań i dopasowuje wzorce bucketów, oferując cichą alternatywę dla odkrywania metodą brute-force lub opartych na API. Idealny do recon i OSINT.
|
||||
- Sprawdź [https://buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/), stronę z już **odkrytymi otwartymi bucketami**.
|
||||
- **Nazwa bucketa** i **nazwa domeny bucketa** muszą być **takie same.**
|
||||
- **flaws.cloud** jest w **IP** 52.92.181.107 i jeśli tam pójdziesz, przekierowuje cię do [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/). Również `dig -x 52.92.181.107` daje `s3-website-us-west-2.amazonaws.com`.
|
||||
- **flaws.cloud** znajduje się pod **IP** 52.92.181.107, a jeśli tam pójdziesz, przekierowuje cię do [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/). Ponadto, `dig -x 52.92.181.107` zwraca `s3-website-us-west-2.amazonaws.com`.
|
||||
- Aby sprawdzić, czy to jest bucket, możesz również **odwiedzić** [https://flaws.cloud.s3.amazonaws.com/](https://flaws.cloud.s3.amazonaws.com/).
|
||||
|
||||
#### Brute-Force
|
||||
|
||||
Możesz znaleźć buckety, **brute-forcing** nazwy związane z firmą, którą testujesz:
|
||||
Możesz znaleźć buckety, **brute-forcując nazwy** związane z firmą, którą testujesz:
|
||||
|
||||
- [https://github.com/sa7mon/S3Scanner](https://github.com/sa7mon/S3Scanner)
|
||||
- [https://github.com/clario-tech/s3-inspector](https://github.com/clario-tech/s3-inspector)
|
||||
@@ -45,47 +46,47 @@ Możesz znaleźć buckety, **brute-forcing** nazwy związane z firmą, którą t
|
||||
- [https://github.com/Eilonh/s3crets_scanner](https://github.com/Eilonh/s3crets_scanner)
|
||||
- [https://github.com/belane/CloudHunter](https://github.com/belane/CloudHunter)
|
||||
|
||||
<pre class="language-bash"><code class="lang-bash"># Generuj listę słów do tworzenia permutacji
|
||||
<pre class="language-bash"><code class="lang-bash"># Generate a wordlist to create permutations
|
||||
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
|
||||
|
||||
# Generuj listę słów na podstawie domen i subdomen do testowania
|
||||
## Zapisz te domeny i subdomeny w subdomains.txt
|
||||
# Generate a wordlist based on the domains and subdomains to test
|
||||
## Write those domains and 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
|
||||
|
||||
# Twórz permutacje na podstawie listy z domenami i subdomenami do ataku
|
||||
# Create permutations based in a list with the domains and subdomains to attack
|
||||
goaltdns -l /tmp/words-hosts-s3.txt -w /tmp/words-s3.txt -o /tmp/final-words-s3.txt.temp
|
||||
## Poprzednie narzędzie jest specjalizowane w tworzeniu permutacji dla subdomen, przefiltrujmy tę listę
|
||||
<strong>### Usuń linie kończące się na "."
|
||||
## The previous tool is specialized increating permutations for subdomains, lets filter that list
|
||||
<strong>### Remove lines ending with "."
|
||||
</strong>cat /tmp/final-words-s3.txt.temp | grep -Ev "\.$" > /tmp/final-words-s3.txt.temp2
|
||||
### Stwórz listę bez TLD
|
||||
### Create list without TLD
|
||||
cat /tmp/final-words-s3.txt.temp2 | sed -E 's/\.[a-zA-Z0-9]+$//' > /tmp/final-words-s3.txt.temp3
|
||||
### Stwórz listę bez kropek
|
||||
### Create list without dots
|
||||
cat /tmp/final-words-s3.txt.temp3 | tr -d "." > /tmp/final-words-s3.txt.temp4http://phantom.s3.amazonaws.com/
|
||||
### Stwórz listę bez myślników
|
||||
### Create list without hyphens
|
||||
cat /tmp/final-words-s3.txt.temp3 | tr "." "-" > /tmp/final-words-s3.txt.temp5
|
||||
|
||||
## Generuj ostateczną listę słów
|
||||
## Generate the final wordlist
|
||||
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
|
||||
|
||||
## Wywołaj s3scanner
|
||||
## Call s3scanner
|
||||
s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt | grep bucket_exists
|
||||
</code></pre>
|
||||
|
||||
#### Zasoby Buckety S3
|
||||
#### Loot S3 Buckets
|
||||
|
||||
Dzięki otwartym bucketom S3, [**BucketLoot**](https://github.com/redhuntlabs/BucketLoot) może automatycznie **szukać interesujących informacji**.
|
||||
Dla otwartych bucketów S3, [**BucketLoot**](https://github.com/redhuntlabs/BucketLoot) może automatycznie **szukać interesujących informacji**.
|
||||
|
||||
### Znajdź Region
|
||||
### Find the Region
|
||||
|
||||
Możesz znaleźć wszystkie obsługiwane regiony przez AWS w [**https://docs.aws.amazon.com/general/latest/gr/s3.html**](https://docs.aws.amazon.com/general/latest/gr/s3.html)
|
||||
|
||||
#### Przez DNS
|
||||
#### By DNS
|
||||
|
||||
Możesz uzyskać region bucketa za pomocą **`dig`** i **`nslookup`**, wykonując **zapytanie DNS odkrytego IP**:
|
||||
Możesz uzyskać region bucketa za pomocą **`dig`** i **`nslookup`**, wykonując **żądanie DNS odkrytego IP**:
|
||||
```bash
|
||||
dig flaws.cloud
|
||||
;; ANSWER SECTION:
|
||||
@@ -99,9 +100,11 @@ Sprawdź, czy rozwiązana domena zawiera słowo "website".\
|
||||
Możesz uzyskać dostęp do statycznej strony internetowej, przechodząc do: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\
|
||||
lub możesz uzyskać dostęp do koszyka, odwiedzając: `flaws.cloud.s3-us-west-2.amazonaws.com`
|
||||
|
||||
|
||||
|
||||
#### Próbując
|
||||
|
||||
Jeśli spróbujesz uzyskać dostęp do koszyka, ale w **nazwie domeny określisz inny region** (na przykład koszyk znajduje się w `bucket.s3.amazonaws.com`, ale próbujesz uzyskać dostęp do `bucket.s3-website-us-west-2.amazonaws.com`, wtedy zostaniesz **skierowany do poprawnej lokalizacji**:
|
||||
Jeśli spróbujesz uzyskać dostęp do koszyka, ale w **nazwie domeny wskażesz inny region** (na przykład koszyk znajduje się w `bucket.s3.amazonaws.com`, ale próbujesz uzyskać dostęp do `bucket.s3-website-us-west-2.amazonaws.com`, wtedy zostaniesz **skierowany do poprawnej lokalizacji**:
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -125,9 +128,9 @@ Możesz to również sprawdzić za pomocą cli:
|
||||
#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]
|
||||
```
|
||||
Jeśli koszyk nie ma nazwy domeny, próbując go wyenumerować, **wprowadź tylko nazwę koszyka** i nie całą domenę AWSs3. Przykład: `s3://<BUCKETNAME>`
|
||||
Jeśli koszyk nie ma nazwy domeny, próbując go enumerować, **wprowadź tylko nazwę koszyka** i nie całą domenę AWSs3. Przykład: `s3://<BUCKETNAME>`
|
||||
|
||||
### Szablon publicznego URL
|
||||
### Szablon publicznego URL-a
|
||||
```
|
||||
https://{user_provided}.s3.amazonaws.com
|
||||
```
|
||||
@@ -148,7 +151,7 @@ s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket/path/to/
|
||||
```
|
||||
Ta technika działa również z adresami URL API Gateway, adresami URL 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 [**oryginalnych badaniach**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) oraz w narzędziu [**conditional-love**](https://github.com/plerionhq/conditional-love/), aby zautomatyzować tę eksploatację.
|
||||
|
||||
### Potwierdzenie, że koszyk należy do konta AWS
|
||||
### Potwierdzanie, że koszyk należy do konta AWS
|
||||
|
||||
Jak wyjaśniono w [**tym wpisie na blogu**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/)**, jeśli masz uprawnienia do wylistowania koszyka** możliwe jest potwierdzenie accountID, do którego należy koszyk, wysyłając żądanie takie jak:
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user