AWS - S3 Unauthenticated Enum

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Публічні відрахунки S3

Відро вважається "публічним", якщо будь-який користувач може переглядати вміст відра, і "приватним", якщо вміст відра може переглядати або записувати лише певні користувачі.

Компанії можуть мати неправильно налаштовані дозволи відра, надаючи доступ або до всього, або до всіх аутентифікованих користувачів AWS в будь-якому обліковому записі (таким чином, до будь-кого). Зверніть увагу, що навіть з такими неправильностями деякі дії можуть бути неможливі, оскільки відра можуть мати власні списки керування доступом (ACL).

Дізнайтеся про неправильну конфігурацію AWS-S3 тут: http://flaws.cloud і http://flaws2.cloud/

Пошук відра AWS

Різні методи для виявлення, коли веб-сторінка використовує AWS для зберігання деяких ресурсів:

Перелік та OSINT:

  • Використання додатка браузера wappalyzer

  • Використання burp (павукинг веб-сторінки) або шляхом ручного переходу по сторінці всі ресурси, завантажені будуть збережені в Історії.

  • Перевірте ресурси на доменах, подібних:

http://s3.amazonaws.com/[bucket_name]/
http://[bucket_name].s3.amazonaws.com/
  • Перевірте CNAMES, оскільки resources.domain.com може мати CNAME bucket.s3.amazonaws.com

  • Перевірте https://buckets.grayhatwarfare.com, веб-сайт з вже виявленими відкритими відрах.

  • Ім'я відра та доменне ім'я відра повинні бути однаковими.

  • flaws.cloud має IP 52.92.181.107 і якщо ви перейдете туди, вас перенаправить на https://aws.amazon.com/s3/. Також, dig -x 52.92.181.107 дає s3-website-us-west-2.amazonaws.com.

  • Щоб перевірити, що це відро, ви також можете відвідати https://flaws.cloud.s3.amazonaws.com/.

Брутфорс

Ви можете знайти відра, брутфорсячи імена, пов'язані з компанією, яку ви тестуєте на проникнення:

# Створення словника для створення перестановок
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

# Створення словника на основі доменів та піддоменів для тестування
## Запишіть ці домени та піддомени в 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

# Створення перестановок на основі списку доменів та піддоменів для атаки
goaltdns -l /tmp/words-hosts-s3.txt -w /tmp/words-s3.txt -o /tmp/final-words-s3.txt.temp
## Попередній інструмент спеціалізований на створенні перестановок для піддоменів, давайте відфільтруємо цей список
### Видалити рядки, що закінчуються на "."
cat /tmp/final-words-s3.txt.temp | grep -Ev "\.$" > /tmp/final-words-s3.txt.temp2
### Створити список без TLD
cat /tmp/final-words-s3.txt.temp2 | sed -E 's/\.[a-zA-Z0-9]+$//' > /tmp/final-words-s3.txt.temp3
### Створити список без крапок
cat /tmp/final-words-s3.txt.temp3 | tr -d "." > /tmp/final-words-s3.txt.temp4http://phantom.s3.amazonaws.com/
### Створити список без дефісів
cat /tmp/final-words-s3.txt.temp3 | tr "." "-" > /tmp/final-words-s3.txt.temp5

## Створення кінцевого словника
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
s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt  | grep bucket_exists

Здійснюйте облік S3-ведер

З урахуванням відкритих ведер S3, BucketLoot може автоматично шукати цікаву інформацію.

Знайдіть регіон

Ви можете знайти всі підтримувані регіони AWS за посиланням https://docs.aws.amazon.com/general/latest/gr/s3.html

За допомогою DNS

Ви можете отримати регіон відра за допомогою dig та nslookup, виконавши DNS-запит виявленої IP-адреси:

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.

Перевірте, що вирішений домен містить слово "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), то вас спрямують до правильного місця:

Перелік кошика

Для перевірки відкритості кошика користувач може просто ввести URL-адресу у свій веб-переглядач. Приватний кошик відповість "Доступ заборонено". Громадський кошик перерахує перші 1 000 об'єктів, які були збережені.

Відкритий для всіх:

Приватний:

Ви також можете перевірити це за допомогою cli:

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

Якщо у відра немає доменного імені, при спробі переліку його лише вкажіть назву відра, а не весь домен AWSs3. Приклад: s3://<BUCKETNAME>

Шаблон публічного URL

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

Отримання ідентифікатора облікового запису з публічного Bucket

Можливо визначити обліковий запис AWS, скориставшись новим S3:ResourceAccount Policy Condition Key. Ця умова обмежує доступ на основі Bucket S3, в якому знаходиться обліковий запис (інші політики, що базуються на обліковому записі запитуючого принципала). І через те, що політика може містити шаблони, можливо знайти номер облікового запису лише по одному номеру за раз.

Цей інструмент автоматизує процес:

# 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

Ця техніка також працює з URL-адресами API Gateway, URL-адресами Lambda, наборами даних Data Exchange та навіть для отримання значення тегів (якщо ви знаєте ключ тегу). Ви можете знайти більше інформації у оригінальному дослідженні та у інструменті conditional-love для автоматизації цієї експлуатації.

References

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated