Autor: .cCuMiNn. | 26.5.2015 |
S hlasovačkami jste se již pravděpodobně všichni někdy setkali. Jde o soutěže, do kterých vložíte svůj příspěvek (nejčastěji fotografii), a následně čekáte, jak dopadne hlasování veřejnosti, která svými hlasy zvolí ten příspěvek, který se jim nejvíce líbí a rozhodnou tak o výsledku soutěže.
I tento typ soutěží je ovšem většinou zmanipulovatelný, a je opět jen na hackerovi, kolik hlasů sám vloží ke svému příspěvku, aby v soutěži obsadil přední příčky. Pořadatelé těchto hlasovaček se před zmanipulováním soutěže často brání a zavádí různé ochrany, které mají vkládání více hlasů jedním uživatelem zabránit. V tomto a následujících článcích si proto některé z těchto ochran představíme, a současně se podíváme i na postupy, kterými lze tato opatření obejít.
Implementace tohoto typy ochrany je pro pořadatele soutěže rozhodně nejjednoduší a z toho důvodu se k ní často i uchylují.
Asi není potřeba se příliš rozepisovat o tom, co to cookies vlastně jsou. Tuto technologii proto popíši pouze obecně a v rychlosti, kdyby někdo náhodou skutečně nevěděl. Tak tedy: Webový server má možnost si u uživatele uložit určité informace. Tyto informace uloží webový prohlížeč právě ve formě cookies, které se vždy váží k té doméně, která si uložení těchto údajů vyžádala. Následně je obsah těchto cookies odesílán na webový server ve formě HTTP hlavičky Cookie spolu s každým requestem, který od uživatele na danou doménu směřuje.
V případě hlasovacích internetových soutěží to znamená, že ve chvíli, kdy uživatel odešle do soužetě svůj hlas, webový server mu odešle zpět informaci, aby si prohlížeč tohoto uživatele uložil do cookie informaci o tom, že již došlo k hlasování. Když se následně stejný uživatel pokusí o opětovné odeslání hlasu, bude společně s požadavkem odeslán i obsah cookie, který serveru sdělí, že hlasování již jednou proběhlo a server na základě toho může hlas odmítnout. Jak je vidět, jde skutečně o triviální záležitost.
Dříve, než budeme pokračovat v popisu, jak lze tento typ ochrany obejít, můžete si opakované hlasování vyzkoušet v hlasovací soutěži "O nejhezčí škatuli". Zvolte si jednu škatuli, kterou byste si přáli, aby v soutěži zvítězila a pokuste se jí přidat několik hlasů.
Ze samotného principu vyplývá, že informace o dříve proběhlém hlasování je uložena pouze na straně uživatele, a to ve formě cookie. Aby mohl uživatel hlasovat opakovaně, bude mu stačit, když ve svém prohlížeči odstraní inkriminované cookie. Po jeho smazání a odeslání nového hlasu totiž na server již nebude putovat žádná informace, že k hlasování již v minulosti došlo a aplikace tak nebude mít důvod hlas nepřipočítat. Ruční mazání cookie po každém odeslaném hlasu by bylo dosti nepraktické, a tak často bude stačit, když prohlížeči prostě ukládání cookies dočasně zakážete. Pak už bude stačit pouze mačkat klávesu F5 pro refresh stránky a opětovné odeslání hlasu.
Můžete si také vytvořit jednoduchý skript, který požadované kvantum hlasů odešle ve smyčce zcela automaticky. Ve Windows bychom to mohli udělat například pomocí jednoduchého baťáku, který k odeslání využije oblíbený NetCat.
Použít je možné rovněž nástroje jako Burp Suite, jehož modul Intruder také umožňuje automatické opakovaní pro odesílání requestů.
Může se také stát, že aplikace bude kontrolovat, zda je podpora cookies zapnutá. Tato kontrola pak bude fungovat pravděpodobně tak, že bude kontrolováno, zda při hlasování dorazí na server obsah jiné cookie. V takovém případě bychom nemohli zakázat cookie globálně v prohlížeči, a automaticky odesílané requesty by bylo nutné o toto kontrolní cookie doplnit.
Pokud pořádáte hlasovací soutěž, rozhodně nespoléhejte na kontrolu vícenásobného hlasování pomocí cookies, které jsou uloženy na straně uživatele. Namísto toho zaveďte kontrolu až na straně serveru. O tom ale bude řeč zase až příště...