javascript injection tutorial
Čo je to Javascript Injection?
Javascript je jednou z najpopulárnejších technológií a najbežnejšie sa používa pre webové stránky a webové aplikácie.
Môže sa použiť na realizáciu rôznych funkcií webových stránok. Táto technológia však môže priniesť určité bezpečnostné problémy, ktoré by si mali vývojári a testeri uvedomovať.
Javascript je možné použiť nielen na dobré účely, ale aj na niektoré škodlivé útoky. Jedným z nich je Javascript Injection. Podstatou aplikácie JS Injection je vloženie kódu Javascript, ktorý sa bude spúšťať zo strany klienta.
V tomto tutoriáli sa dozvieme viac o tom, ako skontrolovať, či je možné vstrekovanie Javascriptov, ako je možné vykonávať JS Injection a aké následky môže mať JS Injection.
Čo sa dozviete:
- Riziká vstrekovania JavaScriptu
- Prečo je dôležité testovať JS Injection?
- Porovnanie s inými útokmi
- Prebieha kontrola vkladania JavaScriptu
- Úprava parametrov
- Úprava vzhľadu webových stránok
- Ako testovať proti vloženiu JavaScriptu
- Možná ochrana pred týmto útokom
- Záver
- Odporúčané čítanie
Riziká vstrekovania JavaScriptu
Aplikácia JS Injection prináša používateľovi so zlým úmyslom veľa možností, ako upraviť vzhľad webových stránok, získať informácie o nich, zmeniť zobrazené informácie a manipulovať s parametrami (napríklad súbory cookie). Preto to môže spôsobiť vážne poškodenie webových stránok, únik informácií alebo dokonca hack.
Hlavným účelom aplikácie JS Injection je zmena vzhľadu webových stránok a manipulácia s parametrami. Dôsledky aplikácie JS Injection môžu byť veľmi odlišné - od poškodenia dizajnu webových stránok po prístup k účtu niekoho iného.
Prečo je dôležité testovať JS Injection?
Mnoho ľudí by sa pýtalo, či je testovanie na JS Injection skutočne nevyhnutné.
Kontrola zraniteľnosti JS Injection je súčasťou bezpečnostného testovania. Testovanie bezpečnosti sa zvyčajne vykonáva, iba ak bolo zahrnuté do plánovania projektu, pretože si vyžaduje čas, veľkú pozornosť a kontrolu viacerých podrobností.
Všimol som si, že počas realizácie projektu je úplne bežné preskočiť testovanie proti možným útokom - vrátane JS Injection. Tímy sa tak snažia ušetriť čas projektu. Tento postup však často končí sťažnosťami zákazníka.
Malo by byť známe, že testovanie zabezpečenia sa dôrazne odporúča, aj keď nie je zahrnuté v plánoch projektu. Mala by sa vykonať kontrola hlavných možných útokov - zároveň sa musia skontrolovať možné zraniteľnosti JS Injection.
Ponecháva jednoduchý Javascript Zraniteľnosti pri injekcii môže stáť produkt kvalita a dobré meno spoločnosti. Kedykoľvek som sa naučil testovať proti možným útokom a všeobecne k testovaniu bezpečnosti, túto časť testovania nikdy nevynechám. Takto som si viac istý kvalitou produktu.
Porovnanie s inými útokmi
Je potrebné spomenúť, že JS Injection nie je taký riskantný ako SQL Injection , pretože sa vykonáva na strane klienta a nedosahuje databázu systému, ako sa to deje počas útoku SQL Injection. Tiež to nie je také riskantné ako útok XSS.
Počas tohto útoku možno občas zmeniť iba vzhľad webových stránok. Hlavným účelom útoku XSS je nabúrať iné prihlasovacie údaje.
Aplikácia JS Injection však môže spôsobiť aj vážne škody na webových stránkach. Môže nielen zničiť vzhľad webových stránok, ale tiež sa stať dobrým základom na hacknutie prihlasovacích údajov iných ľudí.
Prebieha kontrola vkladania JavaScriptu
Keď začínate testovať proti aplikácii JS Injection, prvá vec, ktorú by ste mali urobiť, je skontrolovať, či je aplikácia JS Injection možná alebo nie. Kontrola tohto typu možnosti vstrekovania je veľmi jednoduchá - pri navigácii na web musíte do prehliadača zadať čiarový kód adresy takto:
javascript: alert ('Realizované!');
Ak sa zobrazí vyskakovacie okno so správou „Vykonané!“, Potom je web zraniteľný voči JS Injection.
Potom môžete v paneli s adresou webovej stránky vyskúšať rôzne príkazy jazyka Javascript.
Je potrebné spomenúť, že JS Injection nie je možný iba z adresného riadku webovej stránky. Existuje niekoľko ďalších prvkov webových stránok, ktoré môžu byť citlivé na JS Injection. Najdôležitejšie je presne poznať časti webovej stránky, ktoré môžu byť ovplyvnené Javascript Injection, a ako ich skontrolovať.
Typické ciele JS Injection sú:
- Rôzne fóra
- Polia s komentármi k článku
- Knihy návštev
- Akékoľvek iné formuláre, do ktorých je možné vložiť text.
Ak chcete vyskúšať, či je tento útok možný pre formulár na ukladanie textu, aj napriek poskytnutiu normálneho textu, zadajte kód Javascript, ako je uvedené nižšie, a uložte text do formulára a obnovte stránku.
javascript: alert ('Realizované!');
Ak na novootvorenej stránke je textové pole so správou „Vykonané!“, Potom je pre testovaný formulár možný tento typ injekčného útoku.
Ak sa obidvomi spôsobmi objaví textové pole so správou, môžete sa pokúsiť web rozbiť zložitejšími metódami JS Injection. Potom môžete vyskúšať rôzne typy vstrekovania - úpravu parametrov alebo úpravu návrhu.
Samozrejme, úprava parametrov sa považuje za rizikovejšiu ako úprava návrhu. Počas testovania by sa preto mala väčšia pozornosť venovať úpravám parametrov.
Pamätajte tiež na to, že zraniteľnejšími časťami webových stránok pre Javascript Injection sú vstupné polia, kde sa ukladajú všetky typy údajov.
Úprava parametrov
Ako už bolo spomenuté, jedným z možných poškodení Javascript Injection je zmena parametrov.
Počas tohto útoku vstrekovania môže používateľ so zlým úmyslom získať informácie o parametroch alebo zmeniť ich hodnotu( Príklad ,nastavenia súborov cookie). To môže spôsobiť dosť vážne riziká, pretože používateľ so zlým úmyslom môže získať citlivý obsah. Takýto typ injekcie je možné vykonať pomocou niektorých príkazov Javascript.
Pamätajme, že príkaz Javascript, ktorý vracia aktuálny súbor cookie relácie, je napísaný zodpovedajúcim spôsobom:
javascript: alert (document.cookie);
Zadaný do panela s adresou URL prehliadača vráti vyskakovacie okno s aktuálnymi súbormi cookie relácie.
Ak webová stránka používa súbory cookie, môžeme čítať také informácie, ako je ID relácie servera alebo iné údaje používateľa uložené v súboroch cookie.
Je potrebné spomenúť, že namiesto alert () je možné použiť akúkoľvek inú funkciu Javascript.
Napríklad ,Ak sme našli zraniteľnú webovú stránku, ktorá ukladá ID relácie do parametra cookie „session_id“. Potom môžeme napísať funkciu, ktorá zmení ID súčasnej relácie:
javascript: void (document.cookie = “session_id =<>');
Týmto spôsobom sa zmení hodnota ID relácie. Možné sú aj akékoľvek iné spôsoby zmeny parametrov.
Napríklad, používateľ so zlým úmyslom sa chce prihlásiť ako ďalší ľudia. Ak chcete vykonať prihlásenie, používateľ so zlým úmyslom najskôr zmení nastavenie súborov cookie autorizácie na hodnotu true. Ak nastavenia súborov cookie nie sú nastavené ako „pravdivé“, potom je možné hodnotu súborov cookie vrátiť ako „nedefinované“.
ľavé vnútorné spojenie vs ľavé vonkajšie spojenie
Ak chcete zmeniť tieto hodnoty súborov cookie, bude používateľ so škodlivým kódom postupovať podľa príkazu Javascript z panela URL v prehliadači:
javascript: void (document.cookie = “autorizácia = true“);
Vo výsledku sa aktuálny parameter cookies autorizácia = nepravda zmení na autorizáciu = pravda. Týmto spôsobom bude môcť používateľ so zlým úmyslom získať prístup k citlivému obsahu.
Je tiež potrebné spomenúť, že kód Javascript niekedy vracia celkom citlivé informácie.
javascript: alert (document.cookie);
Napríklad, ak vývojár webu nebol dosť opatrný, môže tiež vrátiť mená a hodnoty parametrov používateľského mena a hesla. Tieto informácie potom možno použiť na hacknutie webu alebo na zmenu hodnoty citlivého parametra.
Napríklad, pomocou nižšie uvedeného kódu môžeme zmeniť hodnotu užívateľského mena:
javascript: void (document.cookie = ”username = otherUser”);
Týmto spôsobom je možné upraviť aj akúkoľvek inú hodnotu parametrov.
Úprava vzhľadu webových stránok
Javascript sa dá použiť aj na úpravu akejkoľvek formy webových stránok a ich celkového vzhľadu.
Napríklad, Javascriptom môžete zmeniť akékoľvek informácie zobrazené na webových stránkach:
- Zobrazený text.
- Pozadie webových stránok.
- Vzhľad webového formulára.
- Vzhľad vyskakovacieho okna.
- Vzhľad ľubovoľného iného prvku webových stránok.
Napríklad, ak chcete zmeniť zobrazenú e-mailovú adresu na webe, mal by sa použiť vhodný príkaz Javascript:
javascript: void (document.forms (0) .email.value = ”Test@test.com”) ;
Je tiež možné niekoľko ďalších komplikovaných manipulácií s dizajnom webových stránok. S týmto útokom môžeme tiež pristupovať a meniť triedu CSS webových stránok.
Napríklad, ak by sme chceli zmeniť obrázok na pozadí webu pomocou JS Injection, potom by sa mal príkaz spustiť zodpovedajúcim spôsobom:
javascript: void (dokument. background-image: url (“other-image.jpg“);
Škodlivý používateľ môže tiež napísať kód na vkladanie kódu Javascript, ktorý je uvedený nižšie vo formulári na vloženie textu, a uložiť ho.
javascript: void (alert („Hello!“));
Pri každom otvorení stránky sa potom zobrazí textové pole so správou „Dobrý deň!“.
Zmenený dizajn webových stránok pomocou Javascript Injection je menej riskantný ako úprava parametrov. Ak sa však dizajn webových stránok zmení škodlivým spôsobom, môže to stáť reputáciu spoločnosti.
Ako testovať proti vloženiu JavaScriptu
Môže byť testovaný nasledujúcimi spôsobmi:
- Ručne
- S testovacími nástrojmi
- S doplnkami prehliadača
Možné chyby zabezpečenia v jazyku Javascript je možné skontrolovať manuálne, ak máte dobré vedomosti o tom, ako by sa mali vykonávať. Môže byť tiež testovaný pomocou rôznych automatizačných nástrojov.
Napríklad, ak ste automatizovali svoje testy na úrovni API pomocou nástroja SOAP UI, potom je tiež možné spustiť testy Javascript Injection s SOAP UI .
Z vlastnej skúsenosti však môžem poznamenať, že ste mali mať skutočne dobré vedomosti o nástroji SOAP UI, aby ste s ním mohli testovať na JS Injection, pretože všetky kroky testu by mali byť napísané bez chýb. Ak je niektorý krok testu napísaný nesprávne, môže to tiež spôsobiť nesprávne výsledky testovania zabezpečenia.
Môžete tiež nájsť rôzne doplnky prehliadača na kontrolu proti možnému útoku. Odporúča sa však nezabudnúť tento útok skontrolovať ručne, pretože zvyčajne poskytuje presnejšie výsledky.
Chcel by som povedať, že manuálne testovanie proti aplikácii Javascript Injection vo mne vyvoláva pocit väčšej istoty a istoty týkajúcej sa bezpečnosti webových stránok. Takto si môžete byť istí, že počas testovania nevynechal žiadny formulár a všetky výsledky sú pre vás viditeľné.
Aby ste mohli otestovať proti Javascript Injection, mali by ste mať všeobecné vedomosti o Javascripti a musíte vedieť, ktoré časti webu sú zraniteľnejšie. Pamätajte tiež, že webové stránky môžu byť chránené proti JS Injection a počas testovania by ste sa mali pokúsiť túto ochranu prelomiť.
Takto si budete istí, či je ochrana pred týmto útokom dostatočne silná alebo nie.
Možná ochrana pred týmto útokom
Najskôr by sa mal každý prijatý vstup overiť, aby sa zabránilo tomuto útoku. Vstup by sa mal overovať zakaždým, nielen pri prvom prijatí údajov.
Dôrazne sa odporúča nespoliehať sa na validáciu na strane klienta. Tiež sa odporúča vykonať dôležitú logiku na strane servera.
Mnoho ľudí sa snaží chrániť pred Javascript Injection zmenou úvodzoviek na dvojnásobok a Javascript kód by sa tak nemal robiť.
Napríklad, ak by ste do poľa pre komentár napísali čokoľvek s úvodzovkami ..., tieto úvodzovky budú nahradené dvojitým -<>...<>. Takto sa zadaný kód Javascript nevykoná.
Všimol som si, že nahradenie úvodzoviek dvojitými úvodzovkami je celkom bežnou praxou, ako sa vyhnúť možným útokom JS Injection. Existuje však niekoľko spôsobov, ako zakódovať ponuky, aby sa vykonal kód JS Injection. Preto zmena úvodzoviek na dvojnásobok nie je dokonalým spôsobom ochrany pred týmto útokom.
Záver
Vždy treba mať na pamäti, že Javascript Injection je jedným z možných útokov na webové stránky, pretože Javascript je jednou z najbežnejšie používaných technológií pre webové stránky. Pri testovaní webových stránok alebo iných webových technológií by ste preto nemali zabúdať na test proti tomuto útoku.
Pri vykonávaní bezpečnostného testovania by sa nemalo zabúdať na JS Injection. Niektorí ľudia považujú toto testovanie za menej riskantný útok, ktorý sa vykonáva na strane klienta.
Je to však nesprávny prístup a mali by sme si vždy pamätať, že Javascript Injection môže spôsobiť vážne poškodenie webových stránok, ako je únik citlivých informácií, zmena parametrov alebo napadnutie používateľských účtov.
Preto by sme to mali považovať za dôležitú súčasť testovania a je to súčasť investícií do dobrého mena produktu a spoločnosti.
Testovanie na JS Injection nie je veľmi náročné. Najprv by ste mali mať všeobecné vedomosti o Javascripte a musíte vedieť, ako skontrolovať, či je tento útok pre súčasné webové riešenie možný alebo nie.
Pri testovaní by ste si mali uvedomiť, že webová stránka môže mať ochranu pred týmto typom útoku, ale môže byť príliš slabá - mala by sa tiež skontrolovať. Ďalšou dôležitou vecou, ktorú treba pamätať, je, že existujú rôzne typy útokov Javascript Injection a žiadny z nich by nemal byť zabudnutý otestovať.
Vykonali ste Javascript Injection Testing ?? Budeme radi, keď sa s nami podelíte o svoje skúsenosti v sekcii komentárov nižšie.
Odporúčané čítanie
- Hĺbkové návody pre zatmenie pre začiatočníkov
- Ako nastaviť testovací rámec Node.js: Výukový program Node.js
- Výukový program pre vstrekovanie HTML: Typy a prevencia s príkladmi
- Výukový program na testovanie injekcie SQL (príklad a zabránenie útoku SQL Injection)
- Výukový program Java Reflection s príkladmi
- Výukový program SVN: Správa zdrojového kódu pomocou subverzie
- Výukový program pre Python DateTime s príkladmi
- Výukový program pre korytnačky SVN: Revízie v úložisku kódov