AWS - S3 Unauthenticated Enum
S3 Public Buckets
Бакет вважається “публічним”, якщо будь-який користувач може переглядати вміст бакета, і “приватним”, якщо вміст бакета може переглядатися або записуватися лише певними користувачами.
Компанії можуть мати неправильно налаштовані дозволи бакетів, надаючи доступ або до всього, або до всіх автентифікованих користувачів в AWS в будь-якому акаунті (тобто до будь-кого). Зверніть увагу, що навіть з такими неправильними налаштуваннями деякі дії можуть бути недоступні, оскільки бакети можуть мати власні списки контролю доступу (ACL).
Дізнайтеся про неправильні налаштування AWS-S3 тут: http://flaws.cloud та http://flaws2.cloud/
Пошук AWS Buckets
Різні методи для виявлення, коли веб-сторінка використовує AWS для зберігання деяких ресурсів:
Перерахування та OSINT:
Використання wappalyzer плагіну для браузера
Використання burp (сканування веб-сторінки) або ручне переглядання сторінки, всі завантажені ресурси будуть збережені в Історії.
Перевірка ресурсів на доменах, таких як:
Перевірка CNAMES, оскільки
resources.domain.com
може мати CNAMEbucket.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/.
Brute-Force
Ви можете знайти бакети, брутфорсуючи імена, пов'язані з компанією, яку ви тестуєте:
https://github.com/jordanpotti/AWSBucketDump (Містить список потенційних імен бакетів)
Loot S3 Buckets
Для відкритих бакетів S3, BucketLoot може автоматично шукати цікаву інформацію.
Знайти регіон
Ви можете знайти всі підтримувані регіони AWS на https://docs.aws.amazon.com/general/latest/gr/s3.html
За допомогою DNS
Ви можете отримати регіон бакета за допомогою dig
та nslookup
, зробивши DNS-запит виявленої IP-адреси:
Перевірте, що в розв'язаному домені є слово "website".
Ви можете отримати доступ до статичного вебсайту, перейшовши за адресою: flaws.cloud.s3-website-us-west-2.amazonaws.com
або ви можете отримати доступ до bucket, відвідавши: flaws.cloud.s3-us-west-2.amazonaws.com
Спробуючи
Якщо ви намагаєтеся отримати доступ до bucket, але в імені домену вказуєте інший регіон (наприклад, bucket знаходиться в bucket.s3.amazonaws.com
, але ви намагаєтеся отримати доступ до bucket.s3-website-us-west-2.amazonaws.com
, тоді вас перенаправлять до правильного місця:
Перелічення bucket
Щоб перевірити відкритість bucket, користувач може просто ввести URL у свій веббраузер. Приватний bucket відповість "Access Denied". Публічний bucket покаже перші 1,000 об'єктів, які були збережені.
Відкритий для всіх:
Приватний:
Ви також можете перевірити це за допомогою cli:
Якщо bucket не має доменного імені, при спробі його перерахування, вказуйте тільки ім'я bucket і не весь AWSs3 домен. Приклад: s3://<BUCKETNAME>
Public URL template
Отримання ID облікового запису з публічного Bucket
Можливо визначити AWS обліковий запис, скориставшись новим S3:ResourceAccount
Policy Condition Key. Ця умова обмежує доступ на основі S3 bucket, в якому знаходиться обліковий запис (інші політики на основі облікового запису обмежують на основі облікового запису, в якому знаходиться запитуючий принципал).
І через те, що політика може містити wildcards, можливо знайти номер облікового запису по одному числу за раз.
Цей інструмент автоматизує процес:
Ця техніка також працює з API Gateway URLs, Lambda URLs, Data Exchange data sets і навіть для отримання значення тегів (якщо ви знаєте ключ тегу). Ви можете знайти більше інформації в оригінальному дослідженні та інструменті conditional-love для автоматизації цього експлойту.
Підтвердження, що bucket належить до AWS акаунту
Як пояснено в цьому блозі, якщо у вас є дозволи на перелік bucket можливо підтвердити accountID, до якого належить bucket, надіславши запит, як:
Якщо помилка "Access Denied", це означає, що ID облікового запису було неправильним.
Використання електронних листів для перерахування root-акаунтів
Як пояснено в цьому блозі, можна перевірити, чи пов'язана електронна адреса з будь-яким AWS обліковим записом, намагаючись надати електронній пошті дозволи на S3 bucket через ACLs. Якщо це не викликає помилку, це означає, що електронна адреса є root-користувачем якогось AWS облікового запису:
Посилання
Last updated