Żądny wiedzy? Wbijaj na Mega Sekurak Hacking Party w maju! -30% z kodem: majearly

Pokazał jak wytworzyć dowolną liczbę pieniędzy z $25 – podatność Race Condition obsłudze kart podarunkowych

09 lutego 2020, 13:26 | W biegu | 1 komentarz
Eksperymentalnie, przez tydzień postaramy się codziennie publikować minimum jedną podatność (nową, lub po prostu ciekawą) – wpisy można obserwować pod tagiem vulnz (tutaj RSS).

W dzisiejszym odcinku vulnz ciekawy przykład zastosowania kontrowersyjnej podatności Race Condition w świecie webowym. Kontrowersyjnej – bowiem wielu nie wierzy, że występuje ona w rzeczywistości. Zobaczmy więc konkretny, świeży przykład w serwisie reverb.com

Autor badania na początek uzbroił się w Turbo Intruder – rozszerzenie do opisywanego w sekurakowej książce narzędzia Burp Suite. Na nasze potrzeby wystarczy wiedzieć, że moduł umożliwia generowanie dużej liczby równoległych żądań HTTP oraz analizę odpowiedzi. O to chodzi w podatności race condition – wygenerujmy ogromną liczbę równoległych żądań i zobaczmy czy niektóre z nich nie zostały obsłużone w sposób niezgodny z wolą twórcy aplikacji.

Autor testował wymianę karty podarunkowej (o wartości np. $25) na gotówkę. Jeśli zrealizuje się to równolegle wiele razy, to być może kilka razy otrzymamy gotówkę, zanim karta nie zostanie oznaczona jako wykorzystana? Tak dokładnie się stało – poniżej widać, że jedna karta została zamieniona na gotówkę aż 7 razy (status odpowiedni HTTP 200 oznaczał w tym przypadku udaną wymianę):

Jest też potwierdzenie na koncie hackera (7*$25 = $175)

Za zgłoszenie podatności przyznano bounty w wysokości $1500, a dla nas nauczka – pamiętajmy żeby operacje typu: użycie kodów rabatowych, realizacja przelewów, wymiana kart rabatowych na gotówkę zawsze wykonywać atomowo. Wydawałoby się, że lekcja została udzielona jakiś czas temu (patrz przykład klonowania kart podarunkowych Starbucksa – 2015 rok), jednak chyba nie wszyscy chcą się uczyć ;)

Pamiętajmy również,  że to tylko jedno możliwe wykorzystanie race condition w aplikacjach webowych (inne przykłady zobaczcie tutaj czy tutaj; nie ustrzegł się go i serwis HackerOne: problematyczny był proces wypłaty pieniędzy tzw. retesty – można było wypłacić sobie dowolną liczbę środków).

Na koniec jeszcze inne ciekawe zastosowanie race condition w świecie rzeczywistym:  firma zgłasza się o zastrzeżenie znaku towarowego, Urząd Patentowy publikuje przyjęcie wniosku. Teraz kto pierwszy wyśle pismo do firmy-potencjalnej-ofiary? Urząd czy przestępcy? Kto wygra wyścig, otrzyma przelew…

–ms

 

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Warto zauwazyc, ze podatnosc ta wystepuje tylko po stronie klienta a nie servera, jezeli wysylasz dodatkowe zadanie z zakupem to nie przejdzie to walidacji, wiec nie jest to tak naprawde blad.

    Odpowiedz

Odpowiedz na BonusBGC