Это история о том, как я нашел способ нагенерить неограниченное число денег на подарочные карты старбакса, тем самым обеспечить себе пожизненный бесплатный кофе, ну или украсть у них пару миллионов другими способами.
Итак, не так давно мне в голову пришла идея купить 3 карты Старбакса по $5 каждая.
На сайте starbucks.com есть личный кабинет, где можно добавить эти карты, смотреть баланс и даже переводить деньги между картами.
Есть такой малоизвестный класс уязвимостей «race condition» . Могу с уверенностью заявить, что большинство приложений, которые могут быть уязвимы, к этой атаке скорее всего уязвимы, ведь далеко не каждый программист при проектировке программ учитывает такие факторы, как параллельность выполнения кода и его последствия.
В веб-приложениях он тоже встречается, обычно в функциях связанных с переводом денег/очков/фантиков/ваучеров. Обо всех тонкостях эксплуатации я расскажу в другой раз, а пока вернемся к переводу между картами в Старбаксе.
Перевод строился из нескольких stateful запросов. Схематично - первый запрос 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 в сумме. Чтобы считать это за proof of concept, осталось убедиться, что магазин примет эти карты.
Я пошел в ближайший работающий Cтарбакс на market st.
Дайте мне чего-нибудь на $16.
- O_o.
- Ну что у вас самое дорогое?
- Вон те сэндвичи.
Вышло $16.70.
Итак, в нашу маленькую операцию Ы было инвестировано 15 долларов, а закупок сделано на 16.70. Зная отношение самого гуманного суда США к хакерам, я вернувшись домой, сразу зачислил еще $10 с кредитки на карту Старбакса, чтобы не быть должным корпорации целых $1.70, мало ли.
Дальше самое сложное - процесс репорта. Саппорт честно ответил, что не может связать меня с технической командой, ну вообще никак, и им очень жаль, что я feel this way. Написал на [email protected] 23 марта, тишина (ответили, кстати, аж 29 апреля). Пришлось через знакомых знакомых находить людей, которым не все равно и лишь через 10 дней уязвимость была исправлена.
Спасибо никто не сказал, зато был сделан не двусмысленный намек, что я совершил «fraud» и «malicious actions» и что они еще подумают, что со мной сделать.
А что мог сделать я? Я мог запустить ферму из фейковых гифт-карт, купленных в разных магазинах мира, нагенерить на них кучу денег и продавать на специальных промо сайтах с 50 процентной скидкой (чтобы не вызывать подозрения) за биткоины. Так, проработав год-другой, можно было бы высосать пару миллионов долларов из этой дружелюбной фирмы со сладким кофе.
Наличие Карты Старбакс – настоящий орден ценителя кофе. Отличительный знак, который, к тому же, делает жизнь лучше. Компания Старбакс создала свою внутреннюю валюту Stars (Звезды), получая и накапливая которые Участники Программы могут обменять их на бонусы в кофейнях Старбакс.
Для того чтобы стать частью Бонусной программы, достаточно перейти на официальный сайт starbuckscard.ru и зарегистрировать карту. Там же вы найдете список заведений, которые участвуют в акции.
Получить карту в физическом виде вы можете в любом кафе сети, самостоятельно выбрав понравившийся дизайн и сразу пополнив баланс на сумму от 500 до 10 000 рублей для совершения дальнейших покупок. Также можно купить онлайн карту СтарбаксeGifts на сайте http://starbuckscoffee.ru/ru/.
Как зарегистрировать карту Старбакс?
Регистрация карты Старбакс превращает ее из просто удобного платежного средства в генератор подарков и бонусов.
Для получения доступа к ним вы можете воспользоваться одним из способов:
Шаг 1. Перейти на сайт http://starbuckscoffee.ru/ru/
Шаг 2.
Создать личный аккаунт, следуя подробным инструкциям
Шаг 3.
Зарегистрировать Карту Старбакс или СтарбаксeGifts на сайте.
- Скачать мобильное Приложение Старбакс.
- Создать аккаунт.
- Зарегистрировать Карту Старбакс или СтарбаксeGifts в Приложении.
Уровни карты Старбакс
Количество подарков и бонусов от Старбакс полностью зависит от активности Участника Программы и его любви к кофейным напиткам. После каждой совершенной покупки карте присваивается одна Звезда (Stars).
Чем больше Звезд, тем выше статус карты.
Зеленый уровень
Зеленый уровень карты присваивается участнику сразу после приобретения карты и для его поддержания необходимо совершать хотя бы одну покупку в течение года после регистрации карты на starbuckscoffeeru. Если за это время баланс карты не пополнялся звездами, привилегии Зеленого уровня замораживаются.
Золотой уровень
На Золотой уровень можно перейти с Зеленого уровня после получения 30 звезд за год.
Особенности карты Старбакс
Баланс Карты надежно защищен от воровства и подлежит восстановлению в случае потери. Такая Карта может стать отличным подарком с узнаваемым дизайном «Бумажные сердца» или «Лето».
Также зарегистрировать карту Starbucks означает получить доступ ко всем транзакциям, проверке баланса прямо с мобильного устройства, отслеживание бонусной активности и привилегий.
Привилегии Зеленого уровня
Привилегии Золотого уровня
- Возможность получать за каждые новые 12 звезд любой напиток или одно блюдо, за исключением целых тортов.
- Любой напиток или блюдо, за исключением целых тортов в качестве подарка на ваш День рождения.
- Обновленный дизайн в золотом цвете.
- Участие в специальных предложениях, которые распространяются через смс или e-mail рассылку.
Как пользоваться мобильным приложением Starbucks?
Мобильное приложение Starbucks подходит для всех устройств. Благодаря нему можно просматривать ближайшие кофейни, проводить операции с балансом и автопополнением, совершать операции между картами и быть в курсе специальных акций и предложений.
Бонусная программа Starbucks делает своих клиентов еще ближе к кофе, позволяет выгодно путешествовать по ассортименту кофейных зерен не только с выгодой для организма и души, но и с разумным пополнением и экономией бюджета.
Кофейни Starbucks - это популярное место отдыха и встреч любителей качественного кофе и непринужденной атмосферы. Когда-то компания начинала с продажи зерен фирменной обжарки, а теперь открывает заведения, где каждый посетитель может не только отведать вкусный кофейный напиток, но и позавтракать или перекусить, а также приобрести профессиональную аппаратуру для варки кофе и брендовые аксессуары для сервировки. Представители компании в России заботится о своих клиентах и предлагают участие в программе «Мои награды Старбакс».
Как получить карту
Любой клиент сети кофеен старше 14-ти лет имеет право бесплатно получить бонусную карту. Ее нужно пополнять денежными средствами и оплачивать все товары на территории кафе Старбакс. За каждую покупку клиент получает 1 звезду. 12 собранных звезд дают право получить «награду» в виде бесплатного кофе, чая или блюда, кроме целых пирогов и тортов.
Так карта наград выглядит.
Пластиковый носитель можно оформить в любой торговой точке Starbucks на кассе или же создать виртуальный эквивалент онлайн в мобильном приложении Starbucks Russia. Карта активируется после регистрации на сайте www.starbuckscard.ru и первого пополнения.
Особенности использования
Карта Старбакс позволяет владельцу получать приятные бонусы, однако нужно знать, как правильно ее применять:
- После регистрации в программе «Мои награды Старбакс» необходимо обязательно активировать карту на сайте www.starbuckscard.ru и внести минимальную сумму в размере 500 рублей. Активация происходит в течение суток.
- Для зачисления бонусов нужно оплачивать товар только картой Старбакс.
- Награда действует 30 дней с момента назначения, по избежанию этого срока бонус обнуляется.
- Просматривать баланс, историю списания и начисления бонусов, а также пополнять счет можно через личный кабинет на сайте www.starbuckscard.ru или через мобильное приложение. Использование последнего также дает возможность оплачивать заказ прямо с экрана телефона (при регистрации виртуальной карты).
- На сайте компании есть возможность настроить автоматическое и разовое пополнение счета пластикового или виртуального носителя. Для этого надо подключить платежную банковскую карту в личном профиле и осуществить разовый платеж или настроить постоянное пополнение. Доступные сценарии: начисление денег будет происходить при достижении минимального баланса, в определенный день каждой недели или число месяца.
Уровни программы
При регистрации в системе бонусных накоплений покупатель получает карту Зеленого уровня . Чтобы собранные звезды не обнулялись, нужно совершать по крайней мере 1 покупку в течение 12 месяцев подряд. В ином случае можно потерять все накопленные звезды. Зеленый уровень дает возможность обменять 12 звезд на кофейный напиток или блюдо.
Золотой уровень присваивается при условии накопления 30 и больше звезд на протяжении года. Привилегии:
- Бонусный бесплатный заказ любого товара из ассортимента напитков или продуктов питания в обмен на 12 накопленных звезд;
- Поздравительная акция на День рождения - возможность получить бесплатный кофе или блюдо в честь праздника;
- Золотой дизайн карты;
- Эксклюзивные акции, которые могут быть составлены с учетом персональных предпочтений при выборе товаров или способа оплаты. Также можно получить скидку на блюда или напитки.
Создание личного кабинета позволяет проводить полезные манипуляции с картой. В их числе: активация, проверка баланса и наград, единовременное или периодичное автопополнение, просмотр истории транзакций.
Чтобы зарегистрировать аккаунт, перейдите на сайт www.starbuckscard.ru и выберите вкладку «Регистрация».
Затем укажите своей номер телефона и нажмите на кнопку «Получить код».
В открывшемся окне введите полученный код.
Далее станут доступны поля для указания номера и пин-кода (он находится на оборотной стороне пластикового носителя под скретч-панелью рядом с 12-ти значным номером) полученной в кафе карты и личных данных. Также можно подтвердить получение рассылки новостей и акций на почту.
Мобильное приложение «Starbucks Russia»
Для удобства клиентов компания Старбакс разработала и ввела программу для Android и IOS . Функционал приложения позволяет активировать уже существующую карту и отсканировать штрих-код или создать полностью электронную версию, узнавать о новых акциях, и предложениях, находить ближайшие кофейни. В "Starbucks Russia" можно просматривать детали личного аккаунта.
Доступно пополнение карты и оплата заказа онлайн.
Также приложение уведомит Вас о наличии доступных наград.