Ankety společnosti Blueboard.cz jsou náchylné k vícenásobnému hlasování bez nutnosti změny IP. Chcete vědet jak na to? Čtěte.
Včera se mi podařilo nalézt bezpečností chybu ve webovém rozhraní poměrně významného serveru. Tu však z určitých důvodů (alespoň pro zatím) zveřejnit nehodlám. Tento "úspěch" mě však povzbudil v tom, že žádný systém není bez chyb a když člověk hledá, občas i najde ;)
Dnes ráno jsem se rozhodl zaměřit na ankety společnosti Blueboard.cz, konkrétně na možnost vícenásobného hlasování. Už jen z toho důvodu, že píši tento článek, je vám asi jasné, že se mi to povedlo. Co se týče anket obecně, je zde způsob, který vám umožňuje vícenásobné hlasování a před kterým není ze strany vlastníka ankety téměř obrany. Mluvím o změně IP adresy po každém odhlasovaní. Tento způsob je však poměrně nepohodlný a abyste hlasovali stokrát, je nutné nalézt sto proxy serverů, což je zbytečně úmorná práce. Můžete namítnout, že s použitím programů typu Hide IP se situace trochu zjednoduší, ale přesto to stále nemá na pohodlnost způsobu, který zde popíši.
Ano, proč se mořit s tolika proxynami, když můžete "donutit" ostatní uživatele, aby hlasovali pro konkrétní, vámi vybranou, volbu. Znalí již asi tuší, že se bude stejně jako v případě chyby na Linkuj.cz jednat o Cross-site request forgery. Ohledně principu chyby vás opět odkáži na Wikipedii a .cCuMiNn.ův článek.
Realizace je opravdu jednoduchá, jak už to u tohoto typu chyby bývá. Nejdříve si vyhlédneme anketu a zjistíme přesnou URL odpovědi, pro kterou chceme vícenásobně hlasovat. Blueboard ankety používají typ požadavku GET, čímž vám ještě více usnadňují situaci. Danou URL získáte pouhým zkopírováním adresy odkazu. Viz obrázek:
V případě, že by se data odesílala pomocí požadavku POST, mohli byste danou URL zjistit například pomocí Firefox pluginu LiveHTTPHeaders. Viz obrázek:
Nyní si musíme udělat fake "hlasovaní zařízení":
<iframe src="http://blueboard.cz/anketa_0.php?id=ID_ANKETY&r1=VOLBA ODPOVĚDI&pid=" width="0" height="0" frameborder="0"></iframe>
To je ukryto v neviditelném iframu. Upozorňuji, že odpovědi (parametr r1) jsou číslovány od nuly, tzn, že pro první odpověď platí r1=0, pro desátou r1=9 pro n-tou r1=n-1. Pokud tedy uživatel navštíví stránku obsahující tento kód, pošle svůj hlas na vámi zvolenou možnost odpovědi, aniž by o tom měl tušení. Nyní zbývá poslední otázka a to, kam tento kousek kódu umístit. Nejlepším řešením je vložit jej na stránku, kam chodí velké množství lidí. Tou může být například titulní strana vašeho webu. Pokud nemáte příliš navštěvovaný web, stačí tento kód umístit například do stránky spolu s nějakým obrázkem a odkaz na tuto stránku rozeslat známým či umístit na nějaké fórum. Každý příchozí, pokud již nehlasoval, přičte právě jeden hlas do ankety. Takto vypadala má testovací anketa po tom, co fake hlasování bylo umístěno na titulní straně Stoyan's Page po dobu asi osmi hodin:
Řešení tohoto problému je přitom triviální. Méně spolehlivé, přesto ne tak špatné, by bylo kontrolování hodnoty REFERER. Při registraci do systému Blueboard totiž uvádíte mimo jiné i adresu webu, na kterém hodláte jejich služby využívat. Tento údaj by se poté mohl porovnávat s údajem v hlavičce REFERER. Spolehlivějším řešením by ale bylo generování unikátního tokenu pro každé hlasování, což by tento útoku téměř zcela znemožnilo. Toto není poprvé, kdy se na webu či v systému společnosti Blueboard našla chyba, viz MzKovo získání kompletní databáze či cURLyho PHP inclusion. Současně s uveřejněním tohoto článku posílám email společnosti Blueboard s upozorněním.

Předcházející článek: Nový redakční systém
Následující článek: Zaostřeno na Programujte.com
| Stoyan | stoyan(zavinac)tiscali.cz |
|
| kamil: Kratce po maturite jsem slavil a nasledne si uzival prazdniny. Pak jsem se pustil do programovani a nyni jsem si dal kratkou pauzu, takze toto urcite neni posledni clanek do konce prazdnin. Ohledne tveho clanku, posli mi ho na mail i s ostatnimi okazkami tve prace a pokud se mi budou libit, muzeme se dohodnout. | ||
6.8.2007 12:10:22 |
195.47.46.* |
|
| kamil | kamik2(zavinac)azet.sk |
|
OK budem sa snazit lebo teraz ti robim reklamu v Anglicku
kamil |
||
6.8.2007 12:55:03 |
194.73.99.* |
|
| kamil | kamik2(zavinac)azet.sk |
|
| Teraz pripravujem pre teba clanok o security na AZETE, nasiel som chyby, aj s obrazkami...
kamil |
||
6.8.2007 12:56:43 |
194.73.99.* |
|
| Stoyan | stoyan(zavinac)tiscali.cz |
|
| kamil: Ok, budu se tesit. | ||
6.8.2007 13:00:25 |
195.47.46.* |
|
| mp | ||
to je docela starý, btw šlo to i na soomu ![]() |
||
6.8.2007 15:39:15 |
89.103.33.* |
|
| Script | ||
| Stoyan:
<iframe src="http://www.soom.cz/index.php?name=user/poll/vote&odp=5&id=9" width="0" height="0" frameborder="0"></iframe> ![]() |
||
11.8.2007 18:53:04 |
89.103.33.* |
|
| Stoyan | stoyan(zavinac)tiscali.cz |
|
Tom@sQo: Odesilani pres post pozadavek je jen zdanliva ochrana, data si i tak lehce vyslidis sniffingem nebo pomoci meho oblibeneho FF pluginu LiveHTTPHeaders ![]() |
||
20.8.2007 21:34:34 |
195.47.46.* |
|
| Stoyan | stoyan(zavinac)tiscali.cz |
|
Tom@sQo: To zabere to asi 30 vterin navic, takze ochrana nic moc Falesny post pozadavek si muzes sam vyrobit na miru. A s tim casem to opravdu neni tak hrozny. Priklad: Uvidim anketu, chci hlasovat vickrat, podivam se do zdrojaku, vidim post pozadavek, aktivuji LiveHTTPHeader, odhlasuji, podivam se do L.HTTP.H jak vypada onen pozadavek, ctrl+C, ctrl+V do poznakoveho bloku, ulozim a napriklad pres netcat odeslu na server na port 80. Tak 3 - 4 minuty. Btw, je nesmyslne bavit se u hackingu na case, pokud nekdo chce neco opravdu udelat, nezastavi ho ani to zeby to melo trvat treba hodinu ![]() |
||
21.8.2007 17:29:01 |
195.47.46.* |
|
| Stoyan | stoyan(zavinac)tiscali.cz |
|
Kdo kde rikal ze se nudim? To rozhodne nehrozi ![]() |
||
23.8.2007 17:32:30 |
195.47.46.* |
|
| Tom@sQo | ||
vidim to na tebe cely den si pri pc a sa nudis ![]() |
||
23.8.2007 20:19:47 |
88.212.21.* |
|
| Stoyan | stoyan(zavinac)tiscali.cz |
|
Tom@sQo: Tak to mas naprosto spatne informace ![]() |
||
23.8.2007 22:41:39 |
195.47.46.* |
|
| zmrdi | ||
| lol myslím že neumíte hackovat pochybuju že se dostanete do mího pc když mám 4 firewalli skušejte moje ip
193.165.178.10 ![]() |
||
8.10.2007 13:09:52 |
193.165.178.* |
|
| sry za spam, ale nerknu | ||
Uz jen podle toho, jak pises tak to taky neumi. Kdyby jsi to umel tak nemas 4fw a nelezes sem, pac to uz znas par let Zdar ![]() |
||
14.10.2007 22:36:58 |
88.102.139.* |
|
| Gyro | ||
Kde sa dva FW biju, treti hacker vitazi ![]() |
||
30.12.2007 16:36:58 |
213.81.217.* |
|
| Stoyan | ||
| sg11: Trochu se mirni, tohle neni soom... | ||
19.9.2008 16:57:29 |
195.47.46.* |
|
| Stoyan | ||
| sQuo: Diky za info, vyzkousel jsem a opravdu je HttpFox vice privetivy nez Live HTTP Headers. | ||
20.9.2008 13:55:47 |
195.47.46.* |
|
| piduch | ||
| nice | ||
25.9.2008 11:59:30 |
217.66.172.* |
|
| sg11.tk | ||
Pravda je, že ta 6. se mi líbí nejvíc Tak snad bude stačit jeden hlas ![]() |
||
28.2.2009 11:05:27 |
83.208.167.* |
|
| duigha | ||
| "a soudit podle vzhledu je dost povrchni..."
Stoyan je dokonce romantická duše ;) (mimochodem, jsem taky napů, poslouchám Norah Jones ;) )l |
||
3.3.2009 17:36:42 |
90.178.235.* |
|
| Johny | ||
| hmmm........
Klasicky csrf... a jeste nezapomen na jedno xssko a na to ze tam driv ke zmene hesla stacilo zadat dvakrat nove |
||
21.9.2009 16:25:30 |
89.190.52.* |
|
| Johny | ||
| sry 2 xsska | ||
21.9.2009 16:26:51 |
89.190.52.* |
|