Недавно закончился очередной NeoQuest.
Под катом разбор третьего задания, относящегося к поиску web-уязвимостей и немножко фишингу. Интересно, как обмануть Telegram бота и заставить его поделиться ключом? Тогда добро пожаловать под кат.
![](https://habrastorage.org/webt/pz/d9/sb/pzd9sbnlr5gtzzhxt5-dr0luotq.png)
Текст задания содержит ссылку на Telegram бота (которого почему-то назвали каналом).
![](https://habrastorage.org/webt/sl/zm/do/slzmdoylb24h0qhdjbi8_lyfioy.png)
Бот нам сообщает, что любит тусоваться на этом сайте. Поглядим, что там:
![](https://habrastorage.org/webt/g-/vn/gm/g-vngmylxjh1ga98qnedt0zzama.png)
Нужен логин и пароль. Вероятно узнав их, удастся раздобыть ключ. Вернемся к боту, попробуем с ним поболтать.
На команды типа /start или /help бот не реагирует, на медиа (картинки, видео, аудио) тоже.
На текстовые сообщения отвечает рандомным ответом из списка.
![](https://habrastorage.org/webt/mp/ok/co/mpokcoaf8zb6vimrjfa1i-tt16o.jpeg)
Зато на ссылки всегда отвечает одинаково:
![](https://habrastorage.org/webt/vq/f3/di/vqf3di4tsqzndynr0ajvre6f2jk.jpeg)
И это подозрительно. Пробуем отправить ссылку на ОлимпИю и получаем другой интересный ответ:
![](https://habrastorage.org/webt/45/gd/43/45gd43ey9f9wkgkz8afzmnssrji.jpeg)
Задержка во времени между первым и вторым ответом наводит на мысль, что бот пытается по этой ссылке сходить. Значит все что нам надо — попытаться заставить сходить бота по нашей ссылке так, чтобы он считал что это ссылка на ОлимпИю.
Изучим ОлимпИю поподробнее. Попробуем открыть какой-нибудь другой раздел, например 213.170.100.214/messages. Происходит редирект на 213.170.100.214/login?next=messages. Ага! Редирект! То что нам нужно для формирования фишинговой ссылки.
Дальше нам понадобится какой-нибудь хостинг, на котором будет размещена наша фишинговая ОлимпИя. Такой у меня был, поэтому оставалось только сделать страницу, которая просто сохраняет все параметры запроса в файл.
<?
file_put_contents('request.txt', print_r($_REQUEST, true));
?>
Пробуем в лоб:
![](https://habrastorage.org/webt/hd/qb/3t/hdqb3t_yw2p_chapl1lqozp9xk0.png)
И вроде бы боту понравилось, но по факту запрос на сервер не приходит. Вероятно это из-за http в начале. Тогда не будем указывать протокол:
![](https://habrastorage.org/webt/h_/mq/5f/h_mq5f8llkntwkg7d5facsjplda.png)
Вот оно, мы продвинулись. Бот действительно посетил страницу, запись в request.txt появилась, правда пустая, потому что наша фишинговая страница ему не понравилась.
Движемся дальше, вместо пустой страницы будем отдавать ему тот же html, что и оригинальный сайт ОлимпИи:
![](https://habrastorage.org/webt/13/_6/ej/13_6ejyus5sziet4ijsd-nf_vvy.png)
Умный бот, страница без стилей ему видите ли кажется подозрительной. Ну нам не жалко, зальем файлы картинки и стиля. Теперь наш фишинговый сайт визуально идентичен ОлимпИи. Может теперь получится?
![](https://habrastorage.org/webt/88/mu/4d/88mu4dn9_qrquqe-aoq8lmhx6ic.png)
И вроде бы бот ничего не интересного ответил, но заглянем ка в файл, сохраняющий параметры запроса, а там:
Array
(
[username] => godmom
[password] => ed_ax3kWbdn3pjje5V5
)
Остается только залогиниться в ОлимпИи и получить заветный ключ
![](https://habrastorage.org/webt/v_/_o/f6/v__of6tmm321zbc6bwpfrqfamsg.png)