Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Хранилище Amazon S3, хоть и содержит статические данные, может открывать большие возможности при пентесте. Неправильно выставленные разрешения позволяют хакерам выискивать в S3 чувствительные данные, которые дадут путь для дальнейшего продвижения. В этой статье мы посмотрим, как могут выглядеть мисконфиги S3 и как их эксплуатировать.
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
У бакетов есть возможность контроля доступа: объекты могут быть общедоступными либо приватными. Доступ к приватным бывает как только для чтения, так и с возможностью записи.
Как выглядит S3
Внутри S3 есть два типа данных: Bucket — контейнер для объектов и Object — сам файл. Самые частые способы взаимодействия:
List
— перечислить все хранилища S3 или файлы на S3;
Get
— получить файл;
Put
— поместить файл на S3;
Delete
— удалить файл.
Формат URL для доступа к S3 выглядит так:
http(s)://{имя бакета}.s3.{регион}.amazonaws.com
Здесь {имя}
определяется владельцем бакета, например:
https://xakeprufiles.s3.us-west-2.amazonaws.com
Бакеты S3 можно обнаружить разными способами, например найти URL в исходном коде страницы веб‑сайта, в репозиториях GitHub или даже автоматизировать процесс с помощью готовых утилит.
Для перебора можно использовать название компании, за которым следуют общие термины. Например, xakepru-assets
, xakepru-www
, xakepru-public
, xakepru-private
и так далее.
Также к бакету или объекту может быть привязана политика безопасности.
Политики бакета
С помощью политик можно указать, кто имеет доступ к ресурсу и какие действия может выполнять с ним. Есть четыре варианта:
Еще есть политики, основанные на личности, они прикрепляются к пользователю, группе или роли IAM. Позволяют определять, что объект может делать.
Начать стоит с сервиса greyhatwarfare.com. Он позволяет находить бакеты и объекты в них с помощью ключевых слов.
Обнаружение бакетов
Если толком ничего не находится, то идем на сайт компании. Здесь нам поможет Burp Suite. Просто просматривай веб‑сайт, а затем анализируй полученную карту.
При этом бакеты всегда находятся на следующих URL:
http://s3.[region].amazonaws.com/[bucket_name]/
http://[bucket_name].s3.[region].amazonaws.com/
http://s3-website-[region].amazonaws.com/[bucket_name]
http://[bucket_name].s3-website-[region].amazonaws.com
http://[bucketname].s3.dualstack.[region].amazonaws.com
http://s3.dualstack.[region].amazonaws.com/[bucketname]
Нужно ли нам подбирать правильный регион? Нет! Amazon любезно подскажет, что мы ищем где‑то не там. Поэтому нам достаточно лишь названия бакета.
Неверный регион
Но как получить это название? Чаще всего оно скрывается в записях CNAME (в них сопоставлены псевдонимы с исходными DNS-именами) домена атакуемой компании. Обнаружить их можно вот так:
dig <domain> any
Пример:
dig flaws.cloud any
Смотрим DNS
Да, может быть, CNAME и пуст, но посмотрим, что еще есть на этом IP:
nslookup <ip>
Пример:
nslookup 52.218.192.11
Обратный поиск
И получим, что к IP привязан еще и адрес s3-website-us-west-2.amazonaws.com
. Это так называемый Website Endpoint. Эндпойнты используются, когда с бакетом интегрирован простенький статический веб‑сайт.
Все бакеты S3, настроенные для веб‑хостинга, получают домен AWS, который можно использовать без собственного DNS. То есть имя бакета в данном случае совпадает с именем домена, а именно flaws.cloud
.
Конечно же, каждый домен перебирать вручную проблематично. Ускорит дело простенький скрипт на Bash:
while read p; doecho $p, curl --silent -I -i http://$p | grep AmazonS3
done < subdomains.txt
Перебор доменов
Обрати внимание, что не все домены зарегистрированы как записи CNAME. Некоторые могут не отображаться явно в процессе разрешения имен. В таком случае удобно использовать сайт dnscharts.hacklikeapornstar.com. Сюда можно загрузить список доменов, а сервис уже самостоятельно найдет записи и по возможности сопоставит их с облачными сервисами.
Визуализация всех записей
Если ты не знаешь, как находить поддомены, то рекомендую утилиту Amass в связке с новой техникой перечисления доменов.
Источник: xakep.ru