Disclaimer. Все события происходили в 2017 году. Обо всех указанных в статье уязвимостях было сообщено представителям компаний в кратчайшие сроки с момента их обнаружения. Некоторые ресурсы, на 2019 год, были полностью обновлены (frontend и backend).
Статья носит сугубо информационно-образовательный характер.
Пробегая по старым папкам, наткнулся на сохраненные скриншоты, которые делал для представителей пары небезызвестных компаний на нашем финансово-IT рынке.
Все началось с того, что я решил сменить профиль работы и попробовать себя в QA или смежной профессии, только уже не самоучкой-одиночкой, а заняться этим в штате какой-нибудь крупной организации, чтобы было у кого перенять опыт, поработать в команде…
После размещения резюме, со мной пересекались Сбербанк-Технологии, Банк Открытие о которых и пойдет небольшое повествование.
После приглашения пообщаться, я решил посмотреть, что же живет на доменах компаний, на предмет интересных уязвимостей. Всегда приятно иметь козырь в рукаве на переговорах.
Сбербанк
Сбербанк в первую очередь ассоциируется с Россией, но у него есть филиалы и в других странах. Поэтому, я решил пойти по «простому» пути. Практически через пару попыток было найдено две пассивные XSS уязвимости в веб-интерфейсе Белорусского Сбербанка.
Первая детская ошибка – не проверять входящие данные со стороны пользователя. Как результат – межсайтовый скриптинг в поле поиска и формы входа в Сбербанк Онлайн.
Отдельный момент по форме входа Сбербанк Онлайн – хоть форма и передавала значения через POST, но скрипты на веб-сервере успешно обрабатывали и мой GET запрос.
Так же решил глянуть домен, с которого мне написала HR Сбербанка. Им оказался портал «Сбербанк Таланты».
Помучив разные формы и скрытые поля, ничего путного не получил, кроме того, что портал крутится на ASP.NET.
Просмотрев в очередной раз исходник главной HTML страницы, обратил внимание на то, что все JS и CSS файлы отдаются через скрипт, который объединяет и сжимает файлы, указанные в GET запросе.
Вторая детская ошибка – не ограничивать белым списком перечень файлов/каталогов, которые можно выгружать с сервера.
В итоге я получил доступ к файлу конфигурации веб-сервера. А также, более интересному файлу с логами, где были указаны как пароли от SQL и других сервисов, так и актуальные токены API для публикации в социальных сетях.
Открытие
Здесь я так же решил не тратить время на основной портал, а сразу просмотреть на какие свои веб ресурсы ссылается банк. Подопытным, по случайной аналогии со Сбербанком, стал «Карьерный портал банка «Открытие»».
Оказалось, что портал работает на CMS Bitrix. Как правило, крупные коммерческие движки или движки с открытым исходным кодом не содержат детских ошибок, но…
Окей гугл, как получить доступ в админку Битрикса?
Третья детская ошибка – не закрывать листинг директорий на сервере.
В принципе все и так понятно – Apache был настроен так, что директории без index файлов показывали свое содержимое. Это не сильно критичная проблема, если бы не роковое стечение обстоятельств. На карьерном портале можно загрузить свои контактные данные и файл своего резюме. Пару минут и я уже смотрю на листинг директории с данными соискателей.
Это все интересно, но не админка. Поэтому листаем все папки в надежде что-то найти.
Не детская ошибка – человеческий фактор. Я не знаю «как» и главное «зачем», но в одном из каталогов с PDF/RTF/DOC файлами лежал файл без расширения, который представлял собой PHP скрипт.
Благодаря этому файлу был получен новый вектор поиска – папка /estaff/, где лежали логи добавления/удаления вакансий с логин/пароль парой, скрипты модуля, а так же в одном из файлов засветились реквизиты, которые подходили к админ-панели Битрикса.
Теперь, Шарик, ты еще полдня за ним будешь бегать — фотографии отдавать...
К сожалению, для меня эта история закончилась без счастливого финала. Во-первых, пришлось долго искать реального представителя банка, связанного с IT. Первая линия поддержки банков (как и сами HR) в принципе не понимали проблемы, что ожидаемо, но и передать эти данные выше коллегам из нужных отделов не могли.
Решением стал LinkedIn и рассылка личных сообщений по руководителям различных отделов, хоть как-то связанных с IT инфраструктурой.
Во-вторых, у обоих банков отсутствует программа Bug Bounty, как следствие, все ограничилось лаконичным «Спасибо».
А в-третьих, HR обоих банков не стали рассматривать мое резюме, сославшись на отсутствие опыта.
Автор: Александр Красов