TL;DR: случайно нашёл простой способ купить платный сервис за 1 рубль вместо полной суммы. Сообщил об этом администраторам ресурса, в итоге получил год подписки бесплатно. Для прожжёных багхантеров – ничего интересного.

Давно хотел научиться уже наконец смотреть фильмы на английском в оригинале. С техническими вещами (лекции, курсы, семинары и т. п.) особых проблем у меня нет – но вот с художественными фильмами и даже играми беда-печаль.

А между тем качество перевода на русский зачастую оставляет желать лучшего. Вот, к примеру, несколько кадров из русской локализации Dead Space 3:

«Вроде понятно.»
(выглядывая из-за угла в поисках противника) Looks clear.


«Покинуть мост!»
Clear the bridge!


«Руку!»
Give me a hand!


Я – очень обязательный и целеустремлённый человек, поэтому минимум раз в год обещаю себе подтянуть английский. Правда, постоянно как-то так в жизни получается, что возникает огромное количество более срочных дел – родные, друзья, Skyrim — поэтому на английский времени не остаётся. Прямо заговор какой-то.

Не так давно у меня случилось очередное обострение, и я стал шерстить Сеть в поисках какого-нибудь подходящего сайта, обучающего английскому. Перебрал несколько вариантов; в итоге остановился на одном, который привлёк внимание интерфейсом и некоторыми заявленными возможностями. На одном из разделов сайта оказались сериалы на английском с весьма, на мой взгляд, удобно сделанными субтитрами — ну и прочими вкусными плюшками типа словаря и комментариев к сложным и тонким деталям языка.

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

Страница как страница, ничего особенного
Слева выбираем продукты, справа появляется посчитанная цена. Потом нажимаем на «Оплатить картой», появляется окошко оплаты, оплачиваем. Всё стандартно.



И тут меня почему-то потянуло открыть Fiddler. Я много слышал про то, что умные люди с его помощью умеют встраивать XSS, списывать с мобильника деньги, красть учётки от контакта и взламывать Пентагон. У меня самого так никогда не получалось, но ведь рассказывают же!

Итак, я запустил Fiddler, нажал на кнопку «Оплатить» — и увидел вот такую картину:



Выделенный POST-запрос имел следующий вид:



Я с удивлением обнаружил, что там содержится до боли знакомая мне сумма моего заказа, которая приходит в ответе от сервера.

Известно, что Fiddler может перехватывать не только исходящие, но и входящие запросы. Я перевёл его в этот режим.

Разумеется, все знают, где находится эта кнопка. Для остальных я на всякий случай сделал скриншот:


После этого я попробовал оплатить заказ ещё раз — и, когда сервер вернул мне ответ «1580 рублей», я ничтоже сумняшеся переменил его на несколько меньшую цену в 80 рублей:



Открывшееся окошко платёжной системы подтвердило, что заплатить нужно именно столько:



Насторожившись, я ввёл данные карты и скрестил пальцы…

Через несколько секунд окошко сообщило, что оплата успешно прошла.

А ещё через пару секунд зажужжал телефон – это пришла SMS с подтверждением из банка.


Тем временем на почту поступили письмо от платёжной системы с подтверждением оплаты и письма от ресурса, поздравляющие с приобретением системы.



А в личном кабинете на сайте появились новые возможности, честно приобретённые мной со скидкой в 94.9%.


«Ого!?», — подумал я и пошёл писать письмо администраторам ресурса. Отдельных способов связи для такого рода сообщений я не нашёл, поэтому просто написал в техподдержку.

Оповещение об уязвимости (кликабельно)


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

Переписка с техподдержкой (кликабельно)

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

Теперь-то уж наверняка буду смотреть.

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

P.S.
Когда попробовал проверить уязвимость после фикса – получил ошибку «Неверная операция» или что-то типа того. Но, видимо, я сделал слишком много запросов, потому что сейчас при подобных попытках (причём даже с разных IP-адресов) я уже пятый день вижу одно и то же сообщение «Повторите попытку позже».



Похоже, платёжная система меня таки забанила на некоторое время. :D

P.P.S.
Особо въедливые читатели могли заметить, что на скриншотах была указана сумма в 1580 рублей, а в заголовке статьи фигурирует 790.

Разгадка проста: изначально я планировал купить две услуги, но потом рассудил, что мне и одних сериалов за глаза хватит.

Ведь я – очень обязательный и целеустремлённый человек.


?Здесь приводится официальная версия (сокращённая и отцензурированная).
Нарушили ли приведённые в статье действия правила посещения сайта (в частности, пункт 3.2: «Использование Сайта иными способами, в том числе путем использования размещенного на Сайте контента, а также входящих в состав Сайта элементов дизайна, программ для ЭВМ и баз данных, их декомпиляции и модификации, строго запрещено. Использование Вами Сайта не должно нарушать имущественных и/или личных неимущественных прав третьих лиц, а равно запретов и ограничений, установленных применимым правом, включая без ограничения: авторские и смежные права, права на товарные знаки, знаки обслуживания и наименования мест происхождения товаров, права на промышленные образцы и т.д.»)?

Проголосовало 116 человек. Воздержалось 113 человек.

Какую ответственность можно понести за подобные действия? Если выбрали первый пункт – поделитесь, пожалуйста, объяснением в комментариях

Проголосовало 124 человека. Воздержалось 114 человек.

Я теперь считаюсь багхантером?)

Проголосовал 161 человек. Воздержался 101 человек.

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

Поделиться с друзьями
-->

Комментарии (12)


  1. mazahakajay
    06.03.2017 09:39

    Отличная статья. Стимулирует к работе над своими способностями в багхантинге )
    Представляю сколько в сети еще крутится таких ресурсов!
    Багхантиг — это просто! Багхантинг в массы!


  1. Landgraph
    06.03.2017 10:03
    +4

    Ещё в очень бородатые годы я писал статью, если не ошибаюсь в районе 2007 года, «Скрытая угроза: „неизменяемые“ поля» про аналогичную ситуацию тогда ещё просто с формами. Технологии идут вперёд, а ошибки идут всё те же… =(


    1. lostpassword
      06.03.2017 13:00

      Справедливости ради должен заметить, что в данном случае дело было, как мне видится, несколько в другом.)
      Ответ от сервера с суммой заказа возвращается и сейчас; его всё так же можно подменить и попытаться оплатить меньшую сумму. Однако при попытке оплаты платёжная система возвращает ошибку.
      Я сам никогда не работал с платёжными системами и не представляю, как обычно организован этот процесс. Документация на CloudPayment есть здесь https://cloudpayments.ru/Docs/Integration. Я особо не вникал, но похоже, что перед оплатой система отправляет данные на сервер магазина и требует подтвердить оплату со стороны магазина. Возможно, для идентификации заказа используется orderID, который анализируется сервером, и по результатам анализа выдаётся разрешение на оплату. Раньше, соответственно, эта проверка почему-то всегда выдавала true.


      1. Pakos
        07.03.2017 10:30
        +1

        У каких-то платёжных систем передавалась контрольная сумма из нескольких полей (формировалась строка в т.ч. и из суммы, параметров заказа, соли и прочего), по ней считалась контрольная сумма (точный алгоритм не помню, возможно, она сначала шифровалась известными только магазину и платёжной системе ключами) и по ней платёжная система определяла корректность переданных данных.


  1. GreyCat
    06.03.2017 11:20
    +5

    Про ответственность — если бы сотрудники и владельцы ресурса оказались несколько менее вменяемыми — легко можно было бы иметь как минимум 159.6 УК РФ или 146, если не 272. Для следователя все вообще шикарно — состав преступления налицо — и человек все сам в письме написал и подтвердил (признает, извиняется и раскаивается), и в платежной системе все прошло, и личные координаты все видны из-за используемой карточки > банк выдаст моментально.


    1. lostpassword
      06.03.2017 20:25

      Грустно…


  1. dartraiden
    06.03.2017 12:41
    +2

    В 2011 году точно таким же образом покупали лицензионный Minecraft.

    Я так однажды пробовал купить корпоративную версию утилиты OfficeTab. Там оказалась ручная премодерация заказов, так что ключ я получил лишь на следующий день… на фейковую почту в письме с благодарностью за указание «дыры» и просьбой «please don't make fraud orders» :D

    На многих ресурсах при покупке передаётся не сумма, а ID товара, можно пытаться купить дорогой товар по полной цене дешевого.


  1. dartraiden
    06.03.2017 12:52
    +1

    Какую ответственность можно понести за подобные действия?
    Ответы юриста: как избежать ответственности за поиск уязвимостей


    1. lostpassword
      06.03.2017 13:15

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


      1. sens_boston
        06.03.2017 17:06

        Ну разве что вариант оплатить чуть больше положенного

        Думаю, что даже в этом случае, при желании, можно было-бы «припаять» статью («был бы человек, а статья найдется!») за незаконное исследование трафика (согласно приведенной вверху ссылке).


        1. hdfan2
          06.03.2017 18:25

          Разве может быть незаконным исследование своего собственного трафика? Он же его не перехватил у другого пользователя.


          1. sens_boston
            07.03.2017 06:57

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

            Привожу абзац из ссылки выше (если вам настолько лениво кликать):

            Есть ли вообще какая-то ответственность за исследование и взлом чужой программы, сервиса, сети?

            Если говорить про действующие российские законы, то да, есть. Когда исследователь тестирует чужой продукт на предмет уязвимостей или проникает в чужую сеть без ведома и согласия владельца, его действия могут быть расценены как неправомерные. И последствием таких действий может стать наступление ответственности различного рода: гражданско-правовой, административной и уголовной.