Возьмите кофе и запустите Aquatone. Эта утилита может обнаружить поддомены в заданном домене используя открытые источники и метод грубой силы со словарём.
Aquatone имеет четыре различные команды:
- Aquatone-discover — ищет различные поддомены
- Aquatone-scan — сканирует результат п.1. на открытые порты
- Aquatone-gather — создаёт скриншоты каждого сабдомена, собирая все результаты в html-отчёт
- Aquatone-takeover — пытается найти неактивные поддомены, которые хостятся внешними хостерами. Нашёл один? Иди регистрируй и получай свою награду!
Report output of Aquatone
Сидим, ждём, мечтаем.
Обычно нужно несколько минут на поиск, скан и сбор.
А на Apple.com? Это заняло 30 минут, 84 отчёта, 18к уникальных хостов.
Мы первые кто использует aquatone для скана apple.com? Определённо нет. Читали ли другие люди все 84 страницы? Определённо нет.
Так что начнём со страницы 50 и прочтём лишь последние 34 страницы.
Поиск аномалий в шаблонах
После 50 минут чтения отчётов замечен шаблон. Один из них в том, что apple.com иногда использует AWS S3 для хранения файлов, используемых их поддоменами. Так что, если можно получить доступ на запись на один из S3 — можно обеспечить доступ на один из поддоменов apple.com.
Чтение всех 84х отчётов — скука. Все отчёты содержат http-заголовки, отправляемые сервером. S3 — всегда отправляет заголовок X-Amz-Bucket-Region. Поиск этого заголовка в отчётах:
Теперь каждый вручную нужно прокликать, чтобы увидеть, что будет, если открыть урлу. Почти все поддомены отдают Access denied.
Кроме одного: live-promotions.apple.com
S3 response, containing the bucket name and directory contents.
Итак, теперь есть имя S3 бакета. Это позволяет напрямую коннектиться к нему
Как получить доступ, смотрите здесь.
Нужно установить Command Line Interface of AWS и можно пробовать открыть этот бакет используя имя из ответа выше
После этого можно пытаться загрузить фейковую страницу входа и открывать её в браузере.
aws s3 cp login.html s3://$bucketName --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
алерт кук
Заключение
Был получен полный доступ на чтение/запись на S3 бакет Apple, который доступен на одном из их поддоменов. Достаточно для залития фишингового сайта или воровства кук.
Решение
Никогда не предоставлять анонимам права на чтение/запись
К счастью защита S3 довольно проста и настроена по дефолту
см. доку: docs.aws.amazon.com/AmazonS3/latest/dev/access-control-overview.html
Что это было:
— Загружена фишинговая страница на live-promotions.apple.com
— Можно было красть кукисы посетителей
— Можно было стянуть конфиденциальные файлы из бакета (он содержал проекты на xcode)
Зал славы
Спустя 4 часа я получил ответ от Apple, подтверждающий баг. В тот же день он был исправлен и теперь он упомянут в зале славы
Timeline
19–06–2018 Discovered and reported bug
19–06–2018 Apple confirmed the bug
19–06–2018 Apple fixed the bug
22–06–2018 Apple mentioned me in the Hall of Fame
22–06–2018 Published this blog
Комментарии (13)
Revertis
24.06.2018 20:22Кто-то на Хабре уже писал об открытых инстансах S3: «когда тебе надо настроить S3, но у тебя лапки».
SanSYS Автор
24.06.2018 21:0021-й век — нужно не переполнение стека искать, а в открытую лежащие доступы или даже целые репозитории (http://somesite.com/.git/ — только в этом году уже несколько раз встречал)
Тем эта заметка и приглянулась — aquatone, новая для меня утилита автоматизирующая некоторые рутинные действия, но божечки, нода, нпм… под виндой не завелось с лёту даже. Благо на кали по дефолту было (хотя для скринов пришлось доставить ещё)lasc
25.06.2018 02:45gem жеж, на руби.
SanSYS Автор
25.06.2018 08:14как ни странно, aquatone-gather не завёлся из-за того, что Nightmare.js автоматом таки не поставился, потому что xvfb/электрон также пришлось доставлять вручную
Сорри, могу ошибаться тут, т.к. в части ноды и никсов я не оч опытен, но справился и поигрался уже)
pansa
25.06.2018 21:39Вот, чем меня удивляет всеобщая любовь к kali: ведь по большому счету это помойка, куда свалено 100500 инструментов, дублирующих друг-друга и часто либо не запускающихся, либо падающих от мелкого чиха. С другой стороны, альтернативы вроде особо и нет. Для себя стараюсь найти утилитки на golang, благо с зависимостями хотя бы проблемы снимаются.
SanSYS Автор
25.06.2018 22:12Я заюзал вот почему, https://github.com/michenriksen/aquatone/blob/master/README.md: I will not provide support or bug fixing for other systems than Kali Linux.
А так да, годная помойка: nmap, aquatone, metasploit)
pansa
25.06.2018 23:08Сугубое имхо — здесь лучше использовать отдельный тул под каждую задачу. Для доменов и страниц мне нравится gobuster или opendoors (причем со словарями из seclists), сканить порты конечно нмапом, скриншоты… ну вот тут не знаю, наверное, какой-нибудь phantomjs. Все они отлично делают своё дело.
sbh
25.06.2018 06:14В чем тогда смысл бесплатно искать уязвимости? Желание попасть на их доску почета?
SanSYS Автор
25.06.2018 08:10Спортивный интерес и портфолио, как ни как
habr.com/post/353504 — вот тут я приколу ради искал, да и вообще случайно вышел на них
В почте дал понять, что не прочь получить вознаграждение, но чуваки просто прикрыли всё и молчание. Ну хоть бы в hall of fame где нить указали — и то приятней вышло бы )
w9w
Размышления от меня и Jobert Abma (создатель площадки HackerOne) на эту тему здесь https://twitter.com/qiecew9w/status/1010280716813459457?s=21