javascript injection tutorial
Co je to Javascript Injection?
Javascript je jednou z nejpopulárnějších technologií a nejčastěji se používá pro webové stránky a webové aplikace.
Lze jej použít k realizaci různých funkcí webových stránek. Tato technologie však může přinést několik bezpečnostních problémů, o kterých by si vývojář a tester měli být vědomi.
Javascript lze použít nejen pro dobré účely, ale také pro některé škodlivé útoky. Jedním z nich je Javascript Injection. Podstatou JS Injection je vložení kódu Javascript, který bude spuštěn na straně klienta.
V tomto kurzu se dozvíme více o tom, jak zkontrolovat, zda je možné použít Javascript Injection, jak lze provést JS Injection a jaké jsou důsledky, které může JS Injection přinést.
Co se naučíte:
- Rizika vstřikování JavaScriptu
- Proč je důležité testovat JS Injection?
- Srovnání s jinými útoky
- Kontrola vložení JavaScriptu
- Úprava parametrů
- Úprava designu webu
- Jak testovat proti vložení JavaScriptu
- Možná ochrana proti tomuto útoku
- Závěr
- Doporučené čtení
Rizika vstřikování JavaScriptu
JS Injection přináší uživateli se zlými úmysly mnoho možností, jak upravit design webu, získat informace o webu, změnit informace zobrazené na webu a manipulovat s parametry (například soubory cookie). To proto může přinést vážná poškození webových stránek, únik informací nebo dokonce hack.
Hlavním účelem aplikace JS Injection je změna vzhledu webu a manipulace s parametry. Důsledky JS Injection mohou být velmi odlišné - od poškození designu webu až po přístup k účtu někoho jiného.
Proč je důležité testovat JS Injection?
Mnozí by se zeptali, zda je testování JS Injection opravdu nutné.
Součástí testování zabezpečení je kontrola zranitelnosti JS Injection. Testování zabezpečení se obvykle provádí pouze v případě, že bylo zahrnuto do plánování projektu, protože vyžaduje čas, velkou pozornost a kontrolu více podrobností.
Všiml jsem si, že během realizace projektu je zcela běžné přeskočit testování proti jakýmkoli možným útokům - včetně JS Injection. Tímto způsobem se týmy snaží ušetřit čas projektu. Tato praxe však často končí stížnostmi zákazníků.
Mělo by být známo, že testování zabezpečení je vysoce doporučeno, i když není zahrnuto v plánech projektu. Měla by být provedena kontrola hlavních možných útoků - zároveň musí být zkontrolována možná zranitelnost JS Injection.
Ponecháme jednoduchý Javascript Zranitelnosti injekcí v produktu může stát kvalita produktu a reputace společnosti. Kdykoli jsem se naučil testovat proti možným útokům a obecně testování bezpečnosti, nikdy tuto část testování nevynechám. Tímto způsobem jsem si více jistý kvalitou produktu.
Srovnání s jinými útoky
Je třeba zmínit, že JS Injection není tak riskantní jako SQL Injection , protože se provádí na straně klienta a nedosahuje do databáze systému, jak se to děje během útoku SQL Injection. Také to není tak riskantní jako útok XSS.
Během tohoto útoku lze občas změnit pouze vzhled webu, přičemž hlavním účelem útoku XSS je hacknutí přihlašovacích údajů ostatních.
JS Injection však také může způsobit vážná poškození webových stránek. Může nejen zničit vzhled webových stránek, ale také se stát dobrým základem pro hackování přihlašovacích údajů jiných lidí.
Kontrola vložení JavaScriptu
Když začínáte testovat proti JS Injection, první věcí, kterou byste měli udělat, je zkontrolovat, zda je JS Injection možný nebo ne. Kontrola tohoto typu možnosti Vstřikování je velmi snadná - při navigaci na web musíte zadat čárový kód adresy prohlížeče takto:
javascript: alert ('Executed!');
Pokud se zobrazí vyskakovací okno se zprávou „Provedeno!“, Je web zranitelný aplikací JS Injection.
Poté můžete v adresním řádku webu vyzkoušet různé příkazy Javascript.
Je třeba zmínit, že JS Injection není možný pouze z adresního řádku webu. Existuje celá řada dalších prvků webových stránek, které mohou být citlivé na JS Injection. Nejdůležitější věcí je znát přesně ty části webu, které mohou být ovlivněny Javascript Injection, a jak je zkontrolovat.
Typické cíle JS Injection jsou:
- Různá fóra
- Pole komentářů k článku
- Knihy návštěv
- Jakékoli jiné formuláře, do kterých lze vložit text.
Chcete-li otestovat, zda je tento útok možný pro formulář pro ukládání textu, přestože poskytujete normální text, zadejte kód Javascript, jak je uvedeno níže, a uložte text ve formuláři a obnovte stránku.
javascript: alert ('Executed!');
Pokud na nově otevřené stránce obsahuje textové pole se zprávou „Provedeno!“, Pak je pro testovaný formulář možný tento typ injekčního útoku.
Pokud se oběma způsoby zobrazí textové pole se zprávou, můžete se pokusit web rozbít složitějšími metodami JS Injection. Pak můžete vyzkoušet různé typy vstřikování - modifikace parametrů nebo modifikace designu.
Změna parametrů je samozřejmě považována za riskantnější než úprava designu. Při testování by proto měla být věnována větší pozornost úpravě parametrů.
Mějte také na paměti, že zranitelnějšími částmi webových stránek pro Javascript Injection jsou vstupní pole, kde se ukládá jakýkoli typ dat.
Úprava parametrů
Jak již bylo zmíněno dříve, jedním z možných poškození Javascript Injection je změna parametrů.
Během tohoto injekčního útoku může uživatel se zlými úmysly získat informace o parametrech nebo změnit jakoukoli hodnotu parametrů( Příklad ,nastavení cookies). To může způsobit docela vážná rizika, protože uživatel se zlými úmysly může získat citlivý obsah. Takový typ injekce lze provést pomocí některých příkazů Javascript.
Nezapomeňte, že příkaz Javascript, který vrací aktuální cookie relace, je napsán odpovídajícím způsobem:
javascript: alert (document.cookie);
Zadaný v řádku URL prohlížeče vrátí vyskakovací okno s aktuálními soubory cookie relace.
Pokud web používá cookies, můžeme číst takové informace, jako je ID relace serveru nebo jiná uživatelská data uložená v cookies.
Je třeba zmínit, že místo alert () lze použít jakoukoli jinou funkci Javascript.
Například ,pokud jsme našli zranitelný web, který ukládá ID relace do parametru cookie „session_id“. Pak můžeme napsat funkci, která mění aktuální ID relace:
javascript: void (document.cookie = “session_id =<>');
Tímto způsobem se změní hodnota ID relace. Jsou také možné jakékoli jiné způsoby změny parametrů.
Například, uživatel se zlými úmysly se chce přihlásit jako ostatní lidé. Chcete-li provést přihlášení, uživatel se zlými úmysly nejprve změní nastavení autorizačního souboru cookie na hodnotu true. Pokud nastavení cookie není nastaveno na „true“, pak může být hodnota cookie vrácena jako „undefined“.
výběr řazení c ++ příklad kódu
Chcete-li tyto hodnoty souborů cookie změnit, provede uživatel se zlými úmysly podle příkazu Javascript z řádku adresy URL v prohlížeči:
javascript: void (document.cookie = “autorizace = true“);
Ve výsledku bude aktuální parametr cookies autorizace = false změněn na autorizace = true. Tímto způsobem bude uživatel se zlými úmysly schopen získat přístup k citlivému obsahu.
Rovněž je třeba zmínit, že někdy Javascriptový kód vrací docela citlivé informace.
javascript: alert (document.cookie);
Například, pokud vývojář webu nebyl dostatečně opatrný, může také vrátit jména a hodnoty parametrů uživatelského jména a hesla. Tyto informace pak lze použít k hacknutí webu nebo ke změně hodnoty citlivého parametru.
Například, pomocí níže uvedeného kódu můžeme změnit hodnotu uživatelského jména:
javascript: void (document.cookie = ”username = otherUser”);
Tímto způsobem lze také upravit jakoukoli další hodnotu parametrů.
Úprava designu webu
Javascript lze také použít k úpravě formy libovolného webu a obecně jeho designu.
Například, pomocí Javascript můžete změnit jakékoli informace zobrazené na webových stránkách:
- Zobrazený text.
- Pozadí webu.
- Vzhled webového formuláře.
- Vzhled vyskakovacího okna.
- Jakýkoli jiný vzhled prvku webu.
Například, Chcete-li změnit zobrazenou e-mailovou adresu na webu, je třeba použít příslušný příkaz Javascript:
javascript: void (document.forms (0) .email.value = ”Test@test.com”) ;
Je také možné několik dalších komplikovaných manipulací s designem webu. S tímto útokem můžeme také přistupovat a měnit třídu CSS webových stránek.
Například, pokud bychom chtěli změnit obrázek pozadí webu pomocí JS Injection, pak by měl být příkaz spuštěn odpovídajícím způsobem:
javascript: void (dokument. background-image: url (“other-image.jpg“);
Uživatel se zlými úmysly může také napsat kód Javascript Injection, který je uveden níže ve formuláři pro vložení textu, a uložit jej.
javascript: void (alert („Hello!“));
Při každém otevření stránky se poté zobrazí textové pole se zprávou „Ahoj!“.
Změněný design webu pomocí Javascript Injection je méně riskantní než úprava parametrů. Pokud však bude design webu změněn škodlivým způsobem, může to stát reputaci společnosti.
Jak testovat proti vložení JavaScriptu
Lze jej otestovat následujícími způsoby:
- Ručně
- S testovacími nástroji
- S pluginy prohlížeče
Možné chyby zabezpečení Javascript lze zkontrolovat ručně, pokud máte dobré znalosti o tom, jak by to mělo být provedeno. Lze jej také testovat pomocí různých automatizačních nástrojů.
Například, pokud jste automatizovali své testy na úrovni API pomocí nástroje SOAP UI, pak je také možné spustit testy Javascript Injection s SOAP UI .
Z vlastní zkušenosti však mohu poznamenat, že byste měli mít opravdu dobré znalosti o nástroji SOAP UI, abyste s ním mohli testovat JS Injection, protože všechny kroky testu by měly být psány bez chyb. Pokud je některý krok testu napsán nesprávně, může to také způsobit nesprávné výsledky testování zabezpečení.
Můžete také najít různé doplňky prohlížeče pro kontrolu proti možnému útoku. Doporučuje se však nezapomenout tento útok zkontrolovat ručně, protože obvykle vrátí přesnější výsledky.
Chtěl bych říci, že ruční testování proti Javascript Injection ve mně vyvolává jistotu a jistotu ohledně zabezpečení webu. Tímto způsobem si můžete být jisti, že při testování nezmeškal žádný formulář a všechny výsledky jsou viditelné pro vás.
Chcete-li otestovat aplikaci Javascript Injection, měli byste mít obecné znalosti o Javascriptu a musíte vědět, které části webu jsou zranitelnější. Měli byste také pamatovat na to, že web může být chráněn proti JS Injection a během testování byste se měli pokusit tuto ochranu prolomit.
Tímto způsobem si budete jisti, zda je ochrana proti tomuto útoku dostatečně silná nebo ne.
Možná ochrana proti tomuto útoku
Za prvé, aby se zabránilo tomuto útoku, měl by být každý přijatý vstup ověřen. Vstup by měl být ověřen pokaždé, a ne pouze tehdy, když jsou data původně přijata.
Důrazně doporučujeme nespoléhat se na ověření na straně klienta. Také se doporučuje provést důležitou logiku na straně serveru.
Mnoho lidí se snaží chránit před Javascript Injection změnou uvozovek na double a Javascriptový kód by se tak neměl provádět.
Například, pokud byste do pole pro komentář napsali cokoli s uvozovkami ..., tyto uvozovky budou nahrazeny dvojitým -<>...<>. Takto zadaný kód Javascript nebude proveden.
Všiml jsem si, že nahrazování uvozovek dvojitými uvozovkami je zcela běžnou praxí, jak se vyhnout možným útokům JS Injection. Existuje však několik způsobů, jak zakódovat uvozovky, aby byl proveden kód JS Injection. Změna nabídky na dvojnásobek tedy není dokonalým způsobem ochrany před tímto útokem.
Závěr
Vždy je třeba mít na paměti, že Javascript Injection je jedním z možných útoků na webové stránky, protože Javascript je jednou z nejpoužívanějších technologií pro webové stránky. Při testování webových stránek nebo jiných webových technologií by proto nemělo být zapomenuto testovat proti tomuto útoku.
Při provádění testování zabezpečení byste neměli zapomínat na JS Injection. Někteří lidé považují toto testování za méně riskantní útok prováděný na straně klienta.
Je to však nesprávný přístup a měli bychom si vždy pamatovat, že Javascript Injection může způsobit vážné poškození webu, jako je únik citlivých informací, změna parametrů nebo hacknutí uživatelských účtů.
Měli bychom to proto považovat za důležitou součást testování a je to součást investice do dobrého jména produktu a společnosti.
Testování pro JS Injection není příliš obtížné. Nejprve byste měli mít obecné znalosti o Javascriptu a musíte vědět, jak zkontrolovat, zda je tento útok pro současné webové řešení možný, či nikoli.
Při testování byste si měli pamatovat, že web může mít ochranu proti tomuto typu útoku, ale může být příliš slabý - měl by být také zkontrolován. Další důležitou věcí, kterou si musíte pamatovat, je, že existují různé typy útoků Javascript Injection a žádný z nich by neměl být zapomenut na testování.
Provedli jste Javascript Injection Testing ?? Budeme rádi, když se s námi podělíte o své zkušenosti v sekci komentáře níže.
Doporučené čtení
- Výukové programy pro zatmění do hloubky pro začátečníky
- Jak nastavit rámec testování Node.js: Výukový program Node.js
- Výukový program HTML Injection: Typy a prevence s příklady
- Výukový program pro testování injekce SQL (příklad a prevence útoku SQL Injection)
- Výukový program Java Reflection s příklady
- Výukový program SVN: Správa zdrojového kódu pomocí Subversion
- Výukový program Python DateTime s příklady
- Výukový program pro želvy SVN: Revize v úložišti kódů