Історія про те, як я «хакнув» Сільпо. Або як міг купувати продукти за ваші гроші

💡 Усі статті, обговорення, новини про Mobile — в одному місці. Приєднуйтесь до Mobile спільноти!

Багато хто вже в курсі, що я запустив застосунок для зберігання карток лояльності. Через це, в принципі, все й почалося. Посилання на нього apps.apple.com/...​loyalty/id6753290043?l=uk
Він безкоштовний і без реклами. З крутих фішок — сам обирає потрібну вам картку, коли ви в магазині.

Почалось все з того що користувачі почали жалітися, що картку Сільпо не додасиш або, якщо й додасиш, то з часом вона перестає працювати, бо код динамічний. Поліз я розбиратися — так він динамічний, щей змінюється щоразу коли згортаю застосунок.

Сидів, ламав голову, і тут до мене прийшла думка: а якщо він насправді не такий вже й динамічний? Я просто скопіював номер рахунку, створив QR-код і пішов у Сільпо. Пікнув — і воно спрацювало. Думаю: топчік, зараз буду розповідати людям, як можна додати картку.

Проте далі було ще цікавіше. Коли я перейшов до оплати, система запропонувала зняти бонуси з мого рахунку. Я такий — супер, знімай. Тицяю — і воно знімає без жодних підтверджень. Я щасливий виходжу з Сільпо, і тут до мене доходить: це ж дира. Тобто, знаючи ваш код рахунку (а він, до речі, не дуже довгий), я можу знімати будь-які бонуси.

Я почав експериментувати: пробував відгадати номер, але каси Сільпо принципово відмовлялися їх приймати. В думках:

, приїхали.

Та одного з вечорів ми вийшли прогулятися з другом, ну і я поділився з ним проблемою — кажу, якось же ці коди формуються. А він такий:
— Ти ж у курсі, що номери карток Visa мають не просто набір цифр, а валідатори на сайтах знають, чи картка правильна чи ні. Тобто існує алгоритм, за яким вони створюються і валідуються. І тут мене осіяло.

Кілька десятків хвилин і я вже знав що таке Алгоритм Луна і принципі як він працює.

Створивши кілька карток, я помітив закономірність: у всіх спільний префікс — 024, а остання цифра — контрольна сума. Ще трішки часу — і вуаля: це алгоритм EAN-13 (варіація Luhn). Я нашвидкоруч пишу валідатор — і всі мої 3 картки проходять валідацію. Я сиджу, пишу і сяю.

Як ви зрозуміли, далі пишемо що? Правильно — генератор! Але не просто генератор, а такий, що відштовхується від заданих початкових цифр. Так ми можемо в принципі регулювати дату створення картки.

Пишемо генератор і йдемо спати, 2-га ночі яке ще Сільпо.

Тестувати йдемо наступного дня.

Тестуємо першу картку — працює. Адреналінчик підскакує, ми навчилися генерувати правильні картки. Але, на жаль, вона виявилась пустою. Ну що ж, виходить, комусь закинули трохи бонусів.

Пробую другу — те саме, пуста.
Наступного дня пробую третю — вже краще, бонуси є, але їх надто мало і система не пропонує їх зняти. Моя віра в те що щось з цього може щось вийте буквально тримається на передбаченнях.

Пробуємо четверту — і це успіх на акаутні є грошики та і нам пропонують їх зняти.

і я їх успішно знімаю 🥳

Далі йдемо додому тішимося собою і пишем в підтримку Сільпо. За відчуттями, на початку мене не дуже серйозно сприймали, але після того, як я скинув чек із доказами, розмова почала в’язатися.

В результаті мене попросили не публікувати і не висловлюватися публічно до 1 січня 2026 року. Я люб’язно погодився, розумію, що на виправлення потрібен час. Через день мені знову написали і запропонували подаруночок. Хто я такий щоб відмовити — тож я знову погодився. Прислали цілу коробку різних смаколиків та 5 сертифікатів по 1000 грн кожен.

Висновки:

1. «Все вийде якщо докласти оптимізму» 😁
2. Не давайте можливості списувати бонуси без жодних підтверджень. Динамічний код — це добре, але мати якийсь PIN-код усе-таки краще.
---
Ну і чесно я ще не перевіряв чи дира закрита ...
👍ПодобаєтьсяСподобалось86
До обраногоВ обраному6
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Нагадало дикі часи, про які розповідали знайомі, коли київпастранс десь посіяв в публічку mifare ключі до своїх метро-карток старого зразка (зелененьки такі). Коли можна було поповнити на 100 поїздок, будь-яким андроїд телефоном зробити снапшот цього діла, і безкінечно перезаписувати картку.

Автор — красава 🤝

Обережність не завадить, але такі вже реалії, що якби не зробив покупку і прийшов в техпідтримку без чека (без нормального PoC), то скоріш за все відмахнулися би і завернули, замість того щоб сісти і пофіксити.

Етика повністю збережена на мій погляд. Responsible disclosure, ніякого абузу, все як треба.

А закони в нас в цьому плані трохи кончені, так...

Алгоритм вони змінили? Бо я давно хотів зробити додаток з QR-кодом для Apple Watch. Бісить, коли Apple Pay працює, а картку лояльності так не можеш зісканувати.

Звʼяжіться з Сільпо (Фоззі Груп), і попросіть надати юридично значущий документ, що вони не мають до вас претензій стосовно ситуації і опублікованого посту. Команди (лігал, безпека) всередині можуть мінятись, і те, до чого поставились адекватно одні, може здатись неадекватним іншим. Навіть по прошестю довгого часу.

Я також хотів створити мобільний додаток для одної площадки аукціонів України. Але уважно перечитав умови API, де було зазначено, що сорян чувачок

Ну в мене простіший кейс, я просто даю змогу сканувати та зберігати картики без жодних API-шок

Вау, ну сільпо молодці. Так як ви офіційно не реєструвались як white hat hacker в якусь баунті програму до них — то це по суті протизаконна діяльність за яку вас можуть і до відповідальності притягнути.

Добре що сільпо адекватні і виправили багу та насипали вам смаколиків, а не почали агритись.

Сьогодні шопився в сільпо і в мене з картки лояльності пропало бонусів на 26 гривень. Не бачили випадково?

пишіть в підтримку, бо дивно що бонуси можуть зніматись без вашого відома

В бонусах Сільпо є термін дії. Якщо за рік не використали- вони самі списуються.

Аааа, дякую за пояснення

Не розумію звідки така радість, коли були вкрадені гроші, і описано процес крадіжки?

Даже якщо то було в цілях дослідження, не можно просто так брати і красти гроші....

«не можно»

Я розумію вашу радість, проте ваш учинок — це не про етичний хакінг і він підриває довіру до всіх bug bounty програм...

Даже якщо то було в цілях дослідження, не можно просто так брати і красти гроші....

А ще не можна викрадати людину, бити та катувати. За це передбачається кримінальна відповідальність. Але ми живемо в країні чудес, де закони та конституція «на паузі».

Це до того, що вчинок автора, дійсно, з точки зору закону на тоненькому льду. Але ми живемо в новій реальності і я думаю в Сільпо відповідальні люди підійдуть до цього з розумінням та «закриють очі» на це все. Краще нехай автор їм покаже цю диру, аніж росіяни її знайдуть та виведуть кошти всіх людей

Oleksandr, це дійсно країна чудес: завтра хтось знайде багу в умовному НБУ — прочитавши цю статтю (вона має широкий охват), залетить за ґрати... бо комусь можна, а комусь — не можна.

Стосовно росіян: закрити багу у вигляді звіту — це одне, а похизуватися публічно, як автор топіка, зробивши крадіжку, — це інше. Публічні звіти тільки допомагають знаходити вразливості швидше.

Важко з вами посперечатися, тому що зі свого боку ви також маєте рацію

А якщо та коробка с цукерками від сільпо, тільки не за баунті, а за бонуси?

Тю, бонуси... Тут оплачений товар видають просто по коду чи номеру накладної.

Восени після оплати банківською картою в терміналі самообслуговування було декілька спроб увійти в мій Сільпо аккаунт, але все закінчилось на 2FA. То це були ви? 🤨

ахахха, ні! Та і навіщо? я ж міг списати ваші бонуси навіть без логіну у ваш акаунт 😁

А в мене там нічого не було! 😛 ясно, значить тємщікі...

тємщіка 100%

У Форі є підтвердженням зняття бонусів піном. Дивно, адже це одна компанія, та й програми схожі.

>

не висловлюватися публічно до 1 січня 2026 року

А коли було звернення в Сільпо?

Орієнтовно 1-2 місяці до нового року

For be clear: я маю на увазі перше звернення, ну тобто скільки часу вони собі взяли на те, щоб все пофіксити

Орієнтовно 2 місяці

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

я теж не знала, на касі сказали останні 4 цифри мобільного номеру, на який картка зареєстрована

Це ж крадіжка. Сподівась, сільпо компенсували ті бонуси людині.

То була крадіжка в благородних цілях 😁

В момент коли знімаєш гроші з іншого акку без їх згоди — це вже фрод(фінансовий злочин), вне залежності від того з якою ціллю :)
Для цього самого експерименту вистачило б екрану з запитання «зняти бонуси?» + валідація на своїй картці.

Теорія не підкріплена практикою залишається просто теорією.

Взяти свою/друга картку і провалідувати?
> www.hackerone.com/...​rms/disclosure-guidelines
> Do no harm. Act for the common good through the prompt reporting of all found vulnerabilities. Never willfully exploit others without their permission.
Але it’s up to you, читав кейси де на чуваків так подавали в суд. За саме експлойт. В цілому і в цій статті написано не тільки про вразливість, але і про те як Ви її використовували для свого особистого збагачення(хоч і на 25.85грн)

Оце і є справжнє IT пригода/оповідання. Продавай сюжет Нетфлікс.

Дякую, як на мою першу статтю потягне 😅

А ще ж у них є опція розрахуватися застосунком (якщо прив"язана банківська карта). То ж потенційно можна не тільки бонуси списати а і оплатити всі покупки

Ого за це якщо чесно я і не знав. В такому випадку вразливість була ще соліднішою

Ні, там код динамічний + набагато складніший ніж в картці

Цікавий кейс. Добре, що Сільпо зреагували лояльно.

Правда, враховуючи, що дірка доволі важлива, трохи дивує розмір винагороди від Сільпо. Навіть для України була б норм премія в 50-100к.

Навіть для України була б норм премія в 50-100к.

50-100к це ще дуже поблажливо.

Вони могли написати заяву в поліцію про «втручання в комп’ютерні мережі», Ст. 361 ККУ, частини 3 і 5, Ст. 190 ККУ.
10-15 років тюрми бо воєнний стан.

Так, статтю 361 давно пора скасувати. Але ментівська частина СБУ і кіберполіція дуже проти цього — це ж така шикарна годівничка для них, не гірше проституції і порно.

або взагалі запросять на лайв-шоу у «вечірній підвал»:
там сіяють дубіни, там «своїх» повний зал,
там тапік хірячіть, дажє єслі устал,
...можєт бить заглянеш в наш вєчєрній падвал?

Ну взагалі небезпечно у нас такою штукою займатись. Без справки із собєса, договору на тестування, справки від нарколога та аналізів на цитологію, це cтаття 361: «Несанкціоновані дії з інформацією, комп’ютерними системами, мережами та їх програмним забезпеченням»

Mama I’m a Criminal

Чи є можливість додати картки до волета?

На Гугл волеті активно користуюсь цим, тому можливість є

Пробуємо четверту — і це успіх на акаутні є грошики та і нам пропонують їх зняти.

А хтось повернув гроші четвертому акаунту?

Я скинув підтримці суму і номер того в кого списав бонуси з проханням їх повернути. Думаю з тим все чітко

ех, була би у них «bug bounty hunter program» цукерками там би не обійшлось, але в будь якому випадку прикольне розслідування із області бізнес вразливості. Дякую за розповідь.

ух ти, прикольно!

на форумах скамерів і темщиків почався бунт, що цю лазейку закрили

ахахахах, блін не хотілося б стати ворогом тємщіків

тепер ходіть оглядуйтесь, хєх

Та маємо що маємо. Ціль була не збрити грошиків а кайфонути від розбору того всього

Не боялись що вони будуть судом погрожувати?) Були здається такі історії

та ні, ми в Сільпо на баг-баунті реквести реагуємо адекватно і з вдячністю

Я щось про таке і не думав. Думаю навпаки їм добре що я спробував і одразу написав про це їм а не публічно десь.

не буде чи все описане вище з фото приводом для полців відкрити справу просто по «факту»?

Дуже цікаво було читати і класна реакція Сільпо :)

Дякую, значить не зря старався

і я їх успішно знімаю 🥳

👮🏻‍♂️

Mama I’m a Criminal

не розумію вашої радості. Ви реально вчинили кілька кримінальних правопорушень: стосовно компанії та стосовно особистого рахунку клієнта. Тим більш ви здається працюєте на компанію з USA. Вам би зараз з адвокатом радитись, imho. те, що ви нічого поганого не хотіли, і не бачите тут серйозного порушення не робить його таким просто тому що вам так здається

от нащо так лякати хлопця? його вже й так розшукує СБУ, НАБУ, ЦРУ та Інтерпол)

Якщо його не розшукує тцк, то інтерпол йому тим паче не страшний

Якщо ж серйозно, то всі перелічені статті мають обмеження по розмірах шкоди. От якщо вкрасти 8кг сала, то то уже тюрма. А якщо 2 мільярда доларів чи 28 гривень, то кримінальна відповідальність не передбачена. В першому випадку фактично, в іншому (як в автора) і фактично, і з точки зору закону.
tsn.ua/...​rok-shokuvav-2439004.html

то це через тебе мені тепер потрібно ще й чотири цифри телефону вводити)

ахахаха, виходить що так 😅

а взагалі, це ще крута натівна реклама вашого застосунку

Доречі, чекаю на android версію! (це до автора)

В Android стандарний Wallet досить просунутий рекомендую використовувати його

Підписатись на коментарі