Neoquest 2019: «Связь с небесами»

    Недавно закончился очередной NeoQuest.


    Под катом разбор третьего задания, относящегося к поиску web-уязвимостей и немножко фишингу. Интересно, как обмануть Telegram бота и заставить его поделиться ключом? Тогда добро пожаловать под кат.




    Текст задания содержит ссылку на Telegram бота (которого почему-то назвали каналом).



    Бот нам сообщает, что любит тусоваться на этом сайте. Поглядим, что там:


    Нужен логин и пароль. Вероятно узнав их, удастся раздобыть ключ. Вернемся к боту, попробуем с ним поболтать.
    На команды типа /start или /help бот не реагирует, на медиа (картинки, видео, аудио) тоже.
    На текстовые сообщения отвечает рандомным ответом из списка.


    Зато на ссылки всегда отвечает одинаково:



    И это подозрительно. Пробуем отправить ссылку на ОлимпИю и получаем другой интересный ответ:



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


    Изучим ОлимпИю поподробнее. Попробуем открыть какой-нибудь другой раздел, например 213.170.100.214/messages. Происходит редирект на 213.170.100.214/login?next=messages. Ага! Редирект! То что нам нужно для формирования фишинговой ссылки.


    Дальше нам понадобится какой-нибудь хостинг, на котором будет размещена наша фишинговая ОлимпИя. Такой у меня был, поэтому оставалось только сделать страницу, которая просто сохраняет все параметры запроса в файл.

    Код на php
    <?
    file_put_contents('request.txt', print_r($_REQUEST, true));
    ?>
    



    Пробуем в лоб:


    И вроде бы боту понравилось, но по факту запрос на сервер не приходит. Вероятно это из-за http в начале. Тогда не будем указывать протокол:

    Вот оно, мы продвинулись. Бот действительно посетил страницу, запись в request.txt появилась, правда пустая, потому что наша фишинговая страница ему не понравилась.

    Движемся дальше, вместо пустой страницы будем отдавать ему тот же html, что и оригинальный сайт ОлимпИи:


    Умный бот, страница без стилей ему видите ли кажется подозрительной. Ну нам не жалко, зальем файлы картинки и стиля. Теперь наш фишинговый сайт визуально идентичен ОлимпИи. Может теперь получится?

    И вроде бы бот ничего не интересного ответил, но заглянем ка в файл, сохраняющий параметры запроса, а там:
    Array
    (
        [username] => godmom
        [password] => ed_ax3kWbdn3pjje5V5
    )
    


    Остается только залогиниться в ОлимпИи и получить заветный ключ


    Поделиться публикацией

    Комментарии 3

      +1
      Т.е. бот логинится, его редиректит — а потом логинится снова? Где логика? 8)
        +1
        Я думаю логика такая, что на настоящем сайте он уже авторизован, поэтому его редиректит сразу. Поэтому, с точки зрения «пользователя», он как будто остался на настоящем сайте, на котором по каким-то причинам слетела авторизация. Соответственно он авторизуется заново. Всего один раз.
          +1
          В этом есть смысл, про сессию я не подумал.

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

      Самое читаемое