Как Я Взломал Starbucks И Получил Безлимитный Кофе

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

Итак, не так давно мне пришла в голову идея купить 3 карты Starbucks по 5 долларов каждая.



Как я взломал Starbucks и получил безлимитный кофе

У Starbucks.com есть личный кабинет, где вы можете добавлять эти карты, просматривать свой баланс и даже переводить деньги между картами.

Есть такой малоизвестный класс уязвимостей «состояние гонки» .

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

Это также происходит в веб-приложениях, обычно в функциях, связанных с переводом денег/баллов/фантиков/ваучеров.

Обо всех тонкостях работы расскажу в другой раз, а пока вернемся к переводу между картами в Старбаксе.

Перевод был построен на основе нескольких запросов с сохранением состояния.

Схематично, первый запрос POST /step1Эamount=1&from=wallet1&to=wallet2 помещал все эти значения в сессию на сервере, и только второй POST/step2Эconfirm передавал уже хранящиеся в сессии данные и очищал их.

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

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

Это может сработать один раз из миллиона, а может и не сработать вообще.

Но для такой «полузащиты» всегда есть обходной путь — вы можете войти в одну и ту же учетную запись из двух разных браузеров/сессий.

Тогда операция выглядит примерно так: #установить параметры перевода в обоих сеансах curl starbucks/step1 -H "Cookie: session=session1" --data "amount=1&from=wallet1&to=wallet2" curl starbucks/step1 -H "Cookie: session=session2" --data "amount=1&from=wallet1&to=wallet2" #одновременное одобрение перевода 1 доллара США с карты 1 на карту 2. curl starbucks/step2Эconfirm -H "Cookie: session=session1" & curl starbucks/step2Эconfirm -H "Cookie: session=session2" & После 5 попыток ничего интересного не произошло и я уже собирался сдаться.

Особенность состояния гонки в том, что попытаться найти его можно только сторонним злоумышленником, поскольку неизвестно, какие средства защиты имеются (количество запросов по IP? запросов на аккаунт? запросов на действие?) и Единственный способ проверить, уязвимы ли вы, — это тщательно проверить исходный код на наличие в базе данных правильных пессимистических блокировок.

На 6-м запросе произошло чудо - перевод был осуществлен дважды и у меня оказалось две карты на 15 и 5 долларов, всего 20. Если считать это доказательством концепции, остается только убедиться, что магазин примет эти карты.

Зашёл в ближайший работающий Старбакс на рынке ул.

— Дайте мне что-нибудь на 16 долларов.

— О_о.

- Ну, а что у тебя самое ценное? - Вот эти сэндвичи.



Как я взломал Starbucks и получил безлимитный кофе

Вышло 16,70 долларов.



Как я взломал Starbucks и получил безлимитный кофе

Итак, в нашу небольшую операцию Y было вложено 15 долларов, а покупки были совершены по цене 16,70. Зная отношение самого гуманного суда США к хакерам, я, вернувшись домой, сразу же зачислил со своей кредитки на карту Starbucks еще 10 долларов, чтобы не быть должен корпорации целых 1,70 доллара, мало ли.

Далее наступает самое сложное — процесс отчетности.

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

Написал на [email protected] 23 марта, тишина (кстати, ответили еще 29 апреля).

Пришлось через друзей и знакомых найти неравнодушных людей, и только через 10 дней уязвимость была устранена.

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

Что я мог сделать? Я мог бы завести ферму из поддельных подарочных карт, купленных в разных магазинах по всему миру, заработать на них много денег и продавать их на специальных промо-площадках с 50-процентной скидкой (чтобы не вызывать подозрений) за биткойны.

Итак, проработав год-два, вы сможете высосать пару миллионов долларов из этой дружелюбной компании по производству сладкого кофе.

Теги: #Starbucks #состояние гонки #информационная безопасность #разработка сайтов

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.