Сайт интим-услуг изнутри, история одного взлома +83


Информационная безопасность — мое хобби, днем я обычная девушка, а по ночам исследовательница сети в поисках не хороших людей. Вечер пятницы проходил как обычно, серфинг сети с целью поймать что-то интересное, и этот вечер превзошел все мои ожидания.
Небольшая история о большой глупости.

Проникновение


Изучая сайты с анкетами девушек легкого поведения — заметила одну особенность, как правило они представляют десятки сайтов с доменом в формате: dosug-%CITYNAME%.(org|com|etc), и личным кабинетом для публикации анкет.

Что первым делом делает исследователь? Собирает как можно больше информации, что я и сделала, изучила связанные домены, код сайта, ссылки, и перешла к регистрации, десятки сайтов ссылались на один домен amurmedia.ru, при регистрации необходимо было указать номер телефона, и на него придет смс, воспользовавшись номером виртуальной сим-карты стала ждать счастливой смс-ки для дальнейшего изучения.

Ждать пришлось недолго, смс конечно и пришла, но вход был произведен автоматически, и в голове сразу что-то щелкнуло, неужели верификация не так уж и важна на сайте?
Создала анкету, увидела множество полей которые нужно заполнить, и отправила в каждое из них полезную нагрузку в виде кода для XSS, и моему счастью не было предела, страница после отправки формы начала грузить код почти из каждого поля, но это всего-лишь self-XSS.

Загрузила фотографию к анкете, исследовала ссылку на фотографию, она была в виде domain.com/img/%ID%/1.jpg, попробовала подставить чужой ID и конечно же увидела фотографию другого человека. В личном кабинете есть еще функция для загрузки проверочной фотографии, для подтверждения что на этом фото ты, нужно сфотографироваться с листком бумаги на котором написан ID анкеты, и после этого девушка получает статус «проверенной». Как-же может называться проверочная фотография в папке? Перебирая возможные комбинации наткнулась на check1.jpg, и увидела проверочную фотографию которую загрузила, подставила чужок ID и увидела девушку с листком в руках.

Погружение


На почте новое письмо кто-то запустил мой скриптик, вам знакомо то чувство когда появляется небольшая дрожь в руках, от осознания что на твой payload кто-то клюнул? То чувство с которым ты изучаешь лог, а после приходишь с ключом, и дверка открывается?

Ключ оказался слишком простым, в печеньках пароль от админки был лежал на блюдечке, не зашифрованным, одиноко лежащим.

Двери открываются, и вижу полноценную сеть из сотни доменов в списке, их сроки окончания, тысячи анкет, десятки городов, баланс кабинета (сумма шестизначная).

Десятки пунктов меню, множество интересных вещей, но этого мало, и последний пункт — Cloud.
Страница со списком всех используемых серверов, и барабаная дробь — пароли. Да, вот так, администратор для удобства решил хранить все пароли на одной страничке, и не только от серверов, но и от почты, хостинга и т.д.

Вхожу в сервер с базой данных, делаем дампы, изучаем. Пользователей на сайте больше пяти тысяч, анкет еще больше, пароли пользователей все в открытом виде, и кульминация — хэши паролей в таблице с открытыми паролями.

Смотрим папки на сервере с админкой, бэкапы, исходники и прочее. А как-же наши милые девушки с листочками? Пишу: find ./ -name check*.jpg > check более 1000 фотографий.

Изучаем почтовый сервер на Squirel, к домену подключен catch-all, видим что администратор сайта любит сайты знакомств, регистрируется на них с помощью %anything%@domain.com, регистрирует домены на такие адреса, получает письма в которых его хостинг блокируют, отвечает на письма что не будет высылать копии своих документов, и даже изучает судебные дела в которых его сайт блокируют, ведь никто не знает кто он, но все же определенное волнение имеется.

Оповещение для администратора


Меняем пароли рута, блокируем порты с помощью ufw, и хостинг цепляем на свою почту. Запасаемся попкорном, и ждем.

День первый: К вечеру получено письмо от хостера что адрес снова изменен, идем в панель администратора — еще открыт доступ по тому паролю.

День второй: Администратор сменил похищенный пароль, но доступен вход по другим паролям, регистрация закрыта, вход в личный кабинет работает.

День третий: Регистрация и вход не работает, все пароли изменены. Прямой доступ к файлам закрыт.

День четвертый: Все системы работают в штатном режиме.

Изучив исходники на PHP обнаружила пару мест для SQL инъекций, но т.к. доступа к личному кабинету теперь нет, решила дальше не идти.

Администратору написала на все его возможные адреса, с целью поговорить, прояснить некоторые моменты в работе сайта, взять интервью, но не срослось.

Кто вы мистер Джо?


Вычислить кто на самом деле скрывается за целой сетью сайтов интим-услуг оказалось не сложно, парень из Челябинска, который по моему скромному мнению релоцировался в Москву. Данные на него были и в базе данных в числе самых первых зарегистрированных анкет, пользователей, данные были и в почте, парень видно пытался скрыть свою личность, но увы, не вышло.
Можете провести самостоятельное расследование, уверена, будет увлекательно: это некто serwolfer

Выводы


Никому не доверяйте свои данные, особенно если занимаетесь оказанием интим-услуг, спрос на такие данные будет всегда.

Почему так произошло? Все уязвимости были из TOP-10 OWASP, это и межсайтовый скриптинг, и поломанная аутентификация, и раскрытие чувствительных данных. Разработчику было лень фильтровать данные, настраивать доступы к медиа-файлам, бережно относится к регистрации, хэшировать пароли, не желание использовать менеджеры паролей. Это путь меньшего сопротивления, люди часто выбирают его.

Обычным людям, дам совет — не регистрируйтесь на сомнительных сайтах, а если и пришлось, то используйте виртуальные сим-карты, десятиминутные почтовые ящики, и совершенно случайные пароли.

Дампы по запросу отдам в одни хорошие руки, если опишите свою цель: JanePaddington@protonmail.com




К сожалению, не доступен сервер mySQL