Небольшой сказ о маленькой погрешности, с помощью которой был получен доступ ко всем платным курсам и домашним заданиям на ресурсах. А так же немного о других найденных уязвимостях.
Предыстория
Вечерами, в перерывах между чтением школьной литературы на лето, я участвовал в bug bounty программе от Mail.ru Group.
Я искал новые поддомены и сервисы которыми владеют Mail.ru, на них довольно часто встречаются разного рода уязвимости.
На тот момент я уже знал об образовательном IT проекте GeekBrains, не думал что смогу выцепить там что-то интересное, но я ошибался.
API
Углубившись в тестирование личного кабинета пользователя, я сразу наткнулся на API сервиса.
С помощью DIRB я вышел на метод projects, перебирая id проектов я выпал на любопытный URL.
Это открытый Amazon S3 bucket. На нём в «свободном доступе» лежат материалы и учебная литература практически ко всем курсам ресурса.
Вот например презентация к курсу «Информационная Безопасность»
Или вот, домашняя работа ученика курса «Java developer»
Здесь так же присутствует большое количество приватной информации на каждого участника курса.
Идём дальше
Рассуждая логически, если у них есть один S3 бакет значит, возможно, есть и другие!
На этом этапе воспользовался lazys3. Довольно удобный инструмент для поиска S3 бакетов.
После перебора я обнаружил еще один бакет, это был geekbrains-uploads.s3.amazonaws.com
К сожалению прямой просмотр файлов недоступен, но есть возможность загрузить свой.
С помощью стандартной AWS утилиты заливаем на сервер TXT файл.
aws s3 mv xalerafera.txt s3://geekbrains-uploads
Сюда можно залить исполняемый файл или другую гадость.
На этом моменте я зарепортил уязвимости, а спустя несколько дней я получил за них выплаты.
Помимо этих двух дыр, я обнаружил еще XSS в личных сообщениях.
Есть еще одна уязвимость, о которой хотелось бы рассказать, но она всё ещё Triaged.
Итоги
Закрывайте ваши S3 бакеты, это может привести к серьезным потерям.
Хочу поблагодарить AlexShmel, за помощь в написании статьи.
Автор: Богдан Бодиштяну