diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md index 0e0c09bfd..1d612517d 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md @@ -12,12 +12,12 @@ ### Пошук AWS Бакетів -Різні методи для виявлення, коли веб-сторінка використовує AWS для зберігання деяких ресурсів: +Різні методи для визначення, коли веб-сторінка використовує AWS для зберігання деяких ресурсів: #### Перерахування та OSINT: - Використання плагіна браузера **wappalyzer** -- Використання burp (**спайдеринг** вебу) або ручна навігація по сторінці, всі **ресурси**, **завантажені** будуть збережені в Історії. +- Використання burp (**спайдеринг** вебу) або ручного навігації по сторінці, всі **ресурси**, **завантажені** будуть збережені в Історії. - **Перевірте ресурси** в доменах, таких як: ``` @@ -26,18 +26,19 @@ http://[bucket_name].s3.amazonaws.com/ ``` - Перевірте **CNAMES**, оскільки `resources.domain.com` може мати CNAME `bucket.s3.amazonaws.com` +- **[s3dns](https://github.com/olizimmermann/s3dns)** – легкий DNS-сервер, який пасивно ідентифікує бакети хмарного зберігання (S3, GCP, Azure), аналізуючи DNS-трафік. Він виявляє CNAME, слідкує за ланцюгами розв'язання та співвідносить шаблони бакетів, пропонуючи тиху альтернативу брутфорсу або відкриттю через API. Ідеально підходить для розвідки та OSINT-робочих процесів. - Перевірте [https://buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/), веб-сайт з уже **виявленими відкритими бакетами**. -- **Ім'я бакета** та **доменне ім'я бакета** повинні бути **однаковими.** -- **flaws.cloud** знаходиться за **IP** 52.92.181.107, і якщо ви туди перейдете, вас перенаправить на [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/). Також, `dig -x 52.92.181.107` дає `s3-website-us-west-2.amazonaws.com`. +- **Назва бакета** та **доменна назва бакета** повинні бути **однаковими.** +- **flaws.cloud** знаходиться в **IP** 52.92.181.107, і якщо ви туди перейдете, він перенаправить вас на [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/). Також, `dig -x 52.92.181.107` дає `s3-website-us-west-2.amazonaws.com`. - Щоб перевірити, чи це бакет, ви також можете **відвідати** [https://flaws.cloud.s3.amazonaws.com/](https://flaws.cloud.s3.amazonaws.com/). #### Брутфорс -Ви можете знайти бакети, **брутфорсуючи імена**, пов'язані з компанією, яку ви тестуєте: +Ви можете знайти бакети, **брутфорсуючи назви**, пов'язані з компанією, яку ви тестуєте: - [https://github.com/sa7mon/S3Scanner](https://github.com/sa7mon/S3Scanner) - [https://github.com/clario-tech/s3-inspector](https://github.com/clario-tech/s3-inspector) -- [https://github.com/jordanpotti/AWSBucketDump](https://github.com/jordanpotti/AWSBucketDump) (містить список потенційних імен бакетів) +- [https://github.com/jordanpotti/AWSBucketDump](https://github.com/jordanpotti/AWSBucketDump) (містить список потенційних назв бакетів) - [https://github.com/fellchase/flumberboozle/tree/master/flumberbuckets](https://github.com/fellchase/flumberboozle/tree/master/flumberbuckets) - [https://github.com/smaranchand/bucky](https://github.com/smaranchand/bucky) - [https://github.com/tomdev/teh_s3_bucketeers](https://github.com/tomdev/teh_s3_bucketeers) @@ -75,7 +76,7 @@ cat /tmp/final-words-s3.txt.temp2 /tmp/final-words-s3.txt.temp3 /tmp/final-words s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt | grep bucket_exists -#### Лут S3 Бакети +#### Здобуття S3 Бакетів Даючи відкриті S3 бакети, [**BucketLoot**](https://github.com/redhuntlabs/BucketLoot) може автоматично **шукати цікаву інформацію**. @@ -85,7 +86,7 @@ s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt | grep buck #### За DNS -Ви можете отримати регіон бакета за допомогою **`dig`** та **`nslookup`**, зробивши **DNS запит виявленої IP**: +Ви можете отримати регіон бакета за допомогою **`dig`** та **`nslookup`**, зробивши **DNS-запит на виявлену IP-адресу**: ```bash dig flaws.cloud ;; ANSWER SECTION: @@ -95,19 +96,21 @@ nslookup 52.218.192.11 Non-authoritative answer: 11.192.218.52.in-addr.arpa name = s3-website-us-west-2.amazonaws.com. ``` -Перевірте, чи має розв'язане доменне ім'я слово "website".\ +Перевірте, що в розв'язаному домені є слово "website".\ Ви можете отримати доступ до статичного веб-сайту, перейшовши за адресою: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\ або ви можете отримати доступ до бакету, відвідавши: `flaws.cloud.s3-us-west-2.amazonaws.com` + + #### Спробувавши -Якщо ви намагаєтеся отримати доступ до бакету, але в **доменному імені вказуєте інший регіон** (наприклад, бакет знаходиться в `bucket.s3.amazonaws.com`, але ви намагаєтеся отримати доступ до `bucket.s3-website-us-west-2.amazonaws.com`, тоді вам буде **вказано на правильне місце**: +Якщо ви намагаєтеся отримати доступ до бакету, але в **імені домену вказуєте інший регіон** (наприклад, бакет знаходиться в `bucket.s3.amazonaws.com`, але ви намагаєтеся отримати доступ до `bucket.s3-website-us-west-2.amazonaws.com`, тоді вам буде **вказано на правильне місце**: ![](<../../../images/image (106).png>) ### Перерахування бакету -Щоб перевірити відкритість бакету, користувач може просто ввести URL у своєму веб-браузері. Приватний бакет відповість "Access Denied". Публічний бакет відобразить перші 1,000 об'єктів, які були збережені. +Щоб перевірити відкритість бакету, користувач може просто ввести URL у своєму веб-браузері. Приватний бакет відповість "Доступ заборонено". Публічний бакет відобразить перші 1,000 об'єктів, які були збережені. Відкрито для всіх: @@ -125,16 +128,16 @@ Non-authoritative answer: #Opcionally you can select the region if you now it aws s3 ls s3://flaws.cloud/ [--no-sign-request] [--profile ] [ --recursive] [--region us-west-2] ``` -Якщо у бакета немає доменного імені, при спробі його перерахувати, **вкажіть лише ім'я бакета** і не вводьте ціле доменне ім'я AWSs3. Приклад: `s3://` +Якщо бакет не має доменного імені, при спробі його перерахувати, **вкажіть лише ім'я бакета** і не вводьте ціле доменне ім'я AWSs3. Приклад: `s3://` ### Шаблон публічного URL ``` https://{user_provided}.s3.amazonaws.com ``` -### Отримання ідентифікатора облікового запису з публічного бакету +### Отримання ID облікового запису з публічного бакету Можливо визначити обліковий запис AWS, скориставшись новим **`S3:ResourceAccount`** **ключем умови політики**. Ця умова **обмежує доступ на основі S3 бакету**, в якому знаходиться обліковий запис (інші політики, що базуються на облікових записах, обмежують доступ на основі облікового запису, в якому знаходиться запитуючий суб'єкт).\ -І оскільки політика може містити **символи підстановки**, можливо знайти номер облікового запису **лише по одному числу за раз**. +І оскільки політика може містити **шаблони**, можливо знайти номер облікового запису **лише по одному числу за раз**. Цей інструмент автоматизує процес: ```bash @@ -160,9 +163,9 @@ curl -X GET "[bucketname].amazonaws.com/" \ ``` Якщо помилка є "Доступ заборонено", це означає, що ідентифікатор облікового запису був неправильним. -### Використані електронні адреси для перерахунку облікових записів root +### Використані електронні адреси для перерахунку кореневих облікових записів -Як пояснено в [**цьому блозі**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/), можливо перевірити, чи пов'язана електронна адреса з будь-яким обліковим записом AWS, **спробувавши надати електронній адресі дозволи** на S3 бакет через ACL. Якщо це не викликає помилки, це означає, що електронна адреса є користувачем root деякого облікового запису AWS: +Як пояснено в [**цьому блозі**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/), можливо перевірити, чи пов'язана електронна адреса з будь-яким обліковим записом AWS, **спробувавши надати електронній адресі дозволи** на S3 бакет через ACL. Якщо це не викликає помилки, це означає, що електронна адреса є кореневим користувачем якогось облікового запису AWS: ```python s3_client.put_bucket_acl( Bucket=bucket_name,