LINUXSOFT.cz Přeskoč levou lištu

ARCHIV



   

> Bezpečnosť webovej aplikácie III.

Tak, po nejakom období som napísal ďalšiu časť nášho malého seriálu. V tejto časti si ukážeme ako správne spravovať relácie užívateľov, ukradnutie identity a maskovanie identity cez proxy.

11.4.2012 00:00 | Marek Beleščiak | Články autora | přečteno 6182×

Session Management

Session Management je spôsob akým sa spravujú relácie užívateľov. Kedže vďaka http protokolu server nevie identifikovať klienta, ten musí odoslať cookies, aby sa identifikoval. Pokiaľ vám to stále nič nehovorí, zamyslite sa, čo sa asi stane keď sa na nejakej stránke prihlasíte - ako server ďalej vie, že ste to práve VY ? Pri prihlásení vám server poslal identifikátor, ktorý mu pri každej požiadavke posielate naspäť.

Čo ak ale identifikátor, ktorý dostanete je slabý, spätne ľahko vygenerovaľný, popr. zmeniteľný tak aby sa za vás mohol hocikto prihlásiť bez toho aby vedel údaje ?

Ako vždy najlepšie je si uviesť príklad takéhoto zistenia, hacknutia a zmenenia identity.

Frank a Sony boli kamárati. Jedného dňa sa ale strašne pohádali. Frankov koníček bola bola webová bezpečnosť tak sa rozhodol, že sa Sonymu pomstí. Vedel, že Sony najradšej navštevuje stránku example.com a takže tam mal aj veľa osobných a citlivých informácií. Frank tam nikdy nebol, zato však vedel, že Sonyho meno je Sony225.

Frank neváhal ani sekundu. Zaregistroval sa na example.com ako Frank001 a keď sa prihlásil, pozrel si identifikátor:

==wMyEjMEJDM2IkMyITRzMjMGJjNzIkMFBjR3U0NFdTNyAjMGJzQzgDM

Tvar mu veľmi pripomínal base64, vedel ale, že bude najskôr obrátený pretože base64 má rovnítka na konci. Preto ho obrátil a skúsil dešifrovať ako base64, jeho výsledok bol nasledujúci:

083C2F20257E7E7F0E2B362F233E222B602D2123

Vyzeralo to ako hash, a veľa mu to nevravelo. Keď prehodil hex na znaky na nič nové neprišiel. Vytvoril si preto ešte dva nové účty Frank002 a Frank003. Porovnal si hashe všetkých troch účtov:

Frank001: 083C2F20257E7E7F0E2B362F233E222B602D2123 Frank002: 083C2F20257E7E7C0E2B362F233E222B602D2123 Frank003: 083C2F20257E7E7D0E2B362F233E222B602D2123

Hashe boli skoro rovnaké. Nezhodovali sa len v ôsmom byte:

Frank001: 083C2F20257E7E7F0E2B362F233E222B602D2123 Frank002: 083C2F20257E7E7C0E2B362F233E222B602D2123 Frank003: 083C2F20257E7E7D0E2B362F233E222B602D2123

Frankovy bolo hneď jasné, že ten rozdiel robia práve číslice 1,2,3. Vyzeralo to na XOR-ovú šifru, bolo mu hneď jasné, že ten hash je vlastne užívateľské meno prehodené do hexu a každý byte nejak zašifrovaný. Preto si zostavil malý skript, ktorý vyskúšal všetky možné kombinácie šifry (nebolo ich tak veľa je to v rozmedzí 0-255) na znak 0x7F, pokiaľ by daná šifra fungovala aj na ostatné byty, má vyhrané.

Skript ho nesklamal. Vrátil mu hodnotu 0x4E. Keď celý ten hash rozxoroval číslom 0x4E vysledok bol nasledovný:

Frank001@example.com

Teraz už Frank vedel, že je veľmi blízko. Zaxoroval si reťazec "Sony225@example.com", zakódoval do base64 a obrátil. Výsledok bol:

=MjMxIDRyAjNCJjMyU0MzIjRyYzMCJTRwI0NDdzQ3czMwITMyQUM

Keď si potom vo svojom prehliadači zmenil cookie na túto hodnotu a navštívil example.com, bol už prihlasený za Sonyho a pomsta mohla začať.

Záver

Session hijack není zrovna najľahší typ útoku ale jeho následky sú drvivé. Identifikátory by mali byť jedinečné, rozhodne by sa nemali zakladať na údajoch používateľa. Ak by sa nejaký užívateľ prihlásil aj viac krát, vždy by mal dostať rozdielny identifikátor. Pokiaľ je to možné, relácia by sa mala zamykať na IP adresu. Takže ak by ste boli prihlasený pod 192.168.1.100 a niekto z adresy 192.168.1.101 by poslal presne váš identifikátor, tak by jednoducho neprešiel.

Proxy a maskovanie identity

Proxy je server ktorý stojí medzi koncovým užívateľom a serverom. Podstata je v tom, že užívateľ pošle požiadavku proxy serveru, ten koncovému serveru, koncový server vráti údaje proxy serveru a ten pôvodnému užívateľovi. Takto sa dá pomerne ľahko "schovať", pretože vy ako užívateľ nekomunikujete so serverom, ten nevie vašu IP ale vie len IP proxy servera. Na internete môžte nájsť tisícky takýchto servrov, dávajte si ale pozor na súkromie. Ľahký postup ako si zapnúť proxy je spustiť terminál nastaviť si http_proxy premennú. Napr. export http_proxy="http://127.0.0.1:8080/" potom si môžte spustiť cez terminál svoj prehliadač a ten už bude bežať cez proxy (overený len chrome).

O čo vlastne ide

Klient pri posielaní požiadavky môže uviesť hlavičku "X-Forwarded-For" kde sú IP adresy počítaču/ov pre ktoré danú požiadavku posiela. Vlastne o sebe tvrdí, že je proxy a posiela adresu originálneho klienta. Táto hlavička sa dá ale veľmi ľahko zmeniť. To znamená, že pokiaľ web používa na zistenie reálnej ip adresy spôsob podobný tomuto, robí veľmi zle. Nemôžete totižto slepo dôverovať dátam ktoré môžu byť fiktívne. V praxi, ale niektoré proxy servery robia to, že adresu v hlavičke X-Forwarded-For si úplne vymýšlajú resp. posielajú náhodne vygenerovanú. Anonymné proxy túto hlavičku vôbec neposielajú.

Keby ste tejto hlavičke dôverovali a brali ju tak ako skript hore, všetky opatrenia ktoré máte napr. 'zablokovanie ip po 100 neúspešných pokusoch o prihlásenie' alebo 'hlasovanie je možné jednej ip adresy!' strácajú zmysel, navyše všetko, kde dáte túto ip môže byť mylné. Veď, čo môže byť lahšie ako si napísať skript, ktorý automatický bude náhodne generovať túto hlavičku a robiť za vás špinavú robotu ? Niekedy však táto hlavička môže byť užitočná. Rozhodne je ale lepšie dôverovať len tej pravej ip adrese, aj ked niekedy je možno lepšie vedieť čo najviac informácií, ak je to tak, osobne by som navrhol ukladať aj ip klienta aj ip v tejto hlavičke - najlepšie čo najkratšie, čize v 4roch bytoch.

Dúfam, že som vám stručne a jasne objasnil problematiku s generovaním uživateľských relacií a taktiež problematiku okolo pracovania, používania a vydávania sa za proxy komunikovanie s proxy servermi.

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

28.11.2018 23:56 /František Kučera
Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1

12.11.2018 21:28 /Redakce Linuxsoft.cz
22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář

6.11.2018 2:04 /František Kučera
Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

4.10.2018 21:30 /Ondřej Čečák
LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář

18.9.2018 23:30 /František Kučera
Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

9.9.2018 14:15 /Redakce Linuxsoft.cz
20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business. Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář

12.8.2018 16:58 /František Kučera
Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář

16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

31.7.2023 14:13 / Linda Graham
iPhone Services

30.11.2022 9:32 / Kyle McDermott
Hosting download unavailable

13.12.2018 10:57 / Jan Mareš
Re: zavináč

2.12.2018 23:56 / František Kučera
Sraz

5.10.2018 17:12 / Jakub Kuljovsky
Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze