В этой статье мы исследуем ошибки реализации CAPTCHA и CSRF-токенов, в результате чего научимся рассылать SMS в любом количестве через гейт Vodafone.

WARNING

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

 

Обзор онлайн SMS-сервиса Vodafone

Наш сегодняшний подопытный, портал http://mts.ua, раньше принадлежал «МТС Украина». Эту контору выкупил Vodafone. Есть на этом сайте и форма отправки SMS.

Защищена она цифровой CAPTCHA из четырех символов. Стоит отметить, что форма позволяет отправлять SMS только клиентам Vodafone с префиксами номеров:

+38050
+38066
+38095
+38099

Теперь посмотрим на саму CAPTCHA. Как видишь, цифры вполне различимы. Они имеют красный цвет, но их верх обрезан, и расположены они очень близко друг к другу.

А теперь приглядимся более внимательно к той части скрипта, которая отображает CAPTCHA. Если мы сформируем ссылку

http://www.mts.ua/?r=site/captcha&v=5981aff096f17&widgetId=messager&width=115&height=42&backColor=0xffffff&foreColor=0xff0000

то увидим CAPTCHA с высотой 42 пикселя и 115 пикселей шириной. Изменив значения на 242 и 315, мы получим удивительный результат: обрезанный верх цифр уйдет и расстояние между символами увеличится.

При отправке SMS скрипту http://www.mts.ua/ru/online-services/send-sms/ через метод POST передаются следующие параметры:

  • YII_CSRF_TOKEN — это CSRF-токен, который нужно прочитать из HTML один раз при подготовке рассылки;
  • widgetId:'messager' — это стандартное значение, оно не меняется;
  • MessageForm[network]:'38050' — из значения ясно, что это мобильная сеть;
  • MessageForm[phone]:'123-45-67' — номер телефона, куда отправляем SMS;
  • MessageForm[encoding]:'cyrilic' — кодировка сообщения, можно менять;
  • MessageForm[is_translit]:'0' — транслитерация (0 — выключена, 1 — включена);
  • MessageForm[message]:'Привет 123' — сам текст сообщения;
  • MessageForm[verifyCode]:'4444' — распознанная CAPTCHA.

Также не стоит забывать, что нужно хранить cookies! В дальнейшем мы к этому вернемся.

 

Разработка SMS-бомбера

Попробуем разработать SMS-бомбер — скрипт, который будет рассылать через гейт множество однотипных SMS-сообщений. Разрабатывать будем на Python 2.x, также нам понадобятся модули requests, pytesseract, Image.

Скрипт мы будем разрабатывать под Windows, с чем и связаны особенности установки Tesseract и настройки путей.

В самом начале мы получаем CSRF-токен:

def get_csrf():

    xhtml=get_url("http://www.mts.ua/ru/online-services/send-sms/",1)
    xs=xhtml.find("var csrfToken = '")
    xl=len("var csrfToken = '")
    csrf_=xhtml[xs+xl:xs+xl+40]

    return csrf_

Функция очевидная — обычный поиск текста. CSRF-токен получаем всего один раз за всю рассылку.

Теперь нужно получить CAPTCHA и распознать ее. Для этого мы будем использовать Tesseract. Вначале нужно установить саму программу и модуль Python к ней. Полный исходный код функции можно посмотреть в скрипте, который я приведу в конце статьи.

Продолжение статьи доступно только подписчикам

Cтатьи из последних выпусков журнала можно покупать отдельно только через два месяца после публикации. Чтобы читать эту статью, необходимо купить подписку.

Подпишись на журнал «Хакер» по выгодной цене!

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

8 комментариев

  1. baragoz

    20.12.2017 at 13:09

    Да начнется укросрач!

  2. Antek

    20.12.2017 at 15:57

    Добавлю ещё, что необходимо наличие пакета tesseract. В функции send_sms() переменную r надо сдвинуть на 4 пробела вправо.
    И для Ubuntu pytesseract.pytesseract.tesseract_cmd = ‘/usr/bin/tesseract’
    tessdata_dir_config = ‘—tessdata-dir «/usr/share/tesseract-ocr/tessdata»‘

  3. juwilie

    20.12.2017 at 18:59

    Познавательно, спасибо

  4. Antony

    23.12.2017 at 14:32

    По-больше бы таких статей, так держать !

  5. foozzi

    23.12.2017 at 21:40

    собственно уже прикрыли, не робит

  6. foozzi

    23.12.2017 at 21:44

    а не робит потому что, поставили гуглокапчу

  7. main93event

    24.12.2017 at 11:51

    Го статью о обходе гугклокапчи)

Оставить мнение

Check Also

Компания OnePlus подтвердила утечку данных банковских карт 40 000 пользователей

Неизвестные атакующие похитили информацию о банковских картах более чем 40 000 клиентов ин…