javascript injection tutorial
Kaj je injekcija Javascript?
Javascript je ena izmed najbolj priljubljenih tehnologij in se najpogosteje uporablja za spletne strani in spletne aplikacije.
Uporablja se lahko za uresničevanje različnih funkcionalnosti spletnih strani. Vendar pa lahko ta tehnologija prinese nekaj varnostnih težav, ki se jih mora razvijalec in preizkuševalec zavedati.
Javascript je mogoče uporabiti ne le za dobre namene, ampak tudi za nekatere zlonamerne napade. Eden izmed njih je Javascript Injection. Bistvo JS Injection je vbrizgati kodo Javascript, ki se bo izvajala s strani odjemalca.
V tej vadnici bomo izvedeli več o tem, kako preveriti, ali je možno vbrizgavanje Javascripta, kako je mogoče izvesti JS Injection in kakšne so posledice JS Injection.
Kaj se boste naučili:
- Tveganja vbrizga JavaScript
- Zakaj je pomembno preskusiti injekcijo JS?
- Primerjava z drugimi napadi
- Preverjanje vbrizga JavaScript
- Spreminjanje parametrov
- Sprememba zasnove spletnega mesta
- Kako preizkusiti vbrizgavanje JavaScript
- Možna zaščita pred tem napadom
- Zaključek
- Priporočeno branje
Tveganja vbrizga JavaScript
JS Injection zlonamernemu uporabniku ponuja veliko možnosti, da spremeni zasnovo spletnega mesta, pridobi informacije o spletnem mestu, spremeni prikazane podatke spletnega mesta in manipulira s parametri (na primer piškotki). Zato lahko to povzroči resno škodo na spletnem mestu, uhajanje informacij in celo hack.
Glavni namen JS Injection je spremeniti videz spletnega mesta in manipulirati s parametri. Posledice JS Injection so lahko zelo različne - od škodljive zasnove spletnega mesta do dostopa do računa nekoga drugega.
Zakaj je pomembno preskusiti injekcijo JS?
Mnogi bi se vprašali, ali je preskušanje JS Injection resnično potrebno.
Preverjanje ranljivosti JS Injection je del preskušanja varnosti. Testiranje varnosti se običajno izvede le, če je bilo vključeno v načrtovanje projekta, saj zahteva čas, veliko pozornosti in preverjanje več podrobnosti.
Opazil sem, da je med realizacijo projekta precej pogosto preskočiti testiranje pred morebitnimi napadi - vključno z JS Injection. Na ta način poskušajo ekipe prihraniti čas projekta. Vendar se ta praksa zelo pogosto konča s pritožbami strank.
Treba je vedeti, da je varnostno testiranje zelo priporočljivo, tudi če ni vključeno v projektne načrte. Izvesti je treba glavne možne napade - hkrati mora preveriti morebitne ranljivosti JS Injection.
Zapuščanje preprostega Javascripta Ranljivosti vbrizgavanja izdelka lahko stane kakovost izdelka in ugled podjetja. Kadarkoli sem se naučil preizkušati proti morebitnim napadom in pri splošnem varnostnem preizkušanju, tega dela testiranja nikoli ne preskočim. Tako sem samo bolj prepričan o kakovosti izdelka.
Primerjava z drugimi napadi
Treba je omeniti, da JS Injection ni tako tvegan kot SQL Injection , saj se izvaja na strani odjemalca in ne pride do zbirke podatkov sistema, kot se to zgodi med napadom SQL Injection. Prav tako ni tako tvegan kot napad XSS.
Med tem napadom je včasih mogoče spremeniti samo videz spletnega mesta, medtem ko je glavni namen napada XSS vdor v druge podatke za prijavo.
Vendar pa lahko JS Injection povzroči tudi resno škodo na spletnem mestu. Ne more samo uničiti videza spletnega mesta, temveč lahko postane tudi dobra osnova za vdor v prijavne podatke drugih ljudi.
Preverjanje vbrizga JavaScript
Ko začnete testirati proti JS Injection, morate najprej preveriti, ali je JS Injection možen ali ne. Preverjanje tovrstne možnosti vbrizgavanja je zelo enostavno - ko se pomaknete na spletno mesto, morate v naslovno vrstico brskalnika vnesti tako:
javascript: opozorilo ('Izvedeno!');
Če se prikaže pojavno okno s sporočilom »Izvedeno!«, Je spletno mesto ranljivo za JS Injection.
Nato lahko v naslovni vrstici spletnega mesta preizkusite različne ukaze Javascript.
Omeniti je treba, da JS Injection ni mogoč le v naslovni vrstici spletnega mesta. Obstajajo različni drugi elementi spletnega mesta, ki so lahko ranljivi za JS Injection. Najpomembneje je natančno poznati dele spletnega mesta, na katere lahko vpliva injekcija Javascript, in kako to preveriti.
Tipični cilji JS Injection so:
- Različni forumi
- Polja komentarjev članka
- Knjige gostov
- Vse druge obrazce, v katere je mogoče vstaviti besedilo.
Če želite preizkusiti, ali je ta obrazec mogoč za obrazec za shranjevanje besedila, kljub zagotavljanju običajnega besedila, vnesite kodo Javascript, kot je navedeno spodaj, besedilo shranite v obrazec in osvežite stran.
javascript: opozorilo ('Izvedeno!');
Če na novo odprti strani vsebuje polje z besedilom »Izvedeno!«, Je za preizkušeni obrazec možen takšen vbrizgavalni napad.
Če se na oba načina pojavi besedilno polje s sporočilom, lahko poskusite spletno mesto razbiti z bolj zapletenimi metodami vbrizgavanja JS. Nato lahko preizkusite različne vrste vbrizga - spreminjanje parametrov ali spremembo zasnove.
Seveda je sprememba parametrov bolj tvegana kot sprememba zasnove. Zato je treba med testiranjem več pozornosti nameniti spreminjanju parametrov.
Upoštevati je treba tudi, da so bolj ranljivi deli spletnega mesta za Javascript Injection vnosna polja, kjer se shranijo kakršne koli vrste podatkov.
Spreminjanje parametrov
Kot smo že omenili, je ena od možnih poškodb vbrizga Javascript spreminjanje parametrov.
Med napadom z vbrizgavanjem lahko zlonamerni uporabnik pridobi podatke o parametrih ali spremeni katero koli vrednost parametrov( Primer ,nastavitve piškotkov). To lahko povzroči precej resna tveganja, saj lahko zlonamerni uporabnik pridobi občutljivo vsebino. Takšno injekcijo lahko izvedemo z uporabo nekaterih ukazov Javascript.
Spomnimo se, da je ukaz Javascript, ki vrne trenutni piškotek seje, napisan v skladu s tem:
javascript: opozorilo (document.cookie);
Vneseno v vrstico URL brskalnika bo vrnilo pojavno okno s piškotki trenutne seje.
Če spletno mesto uporablja piškotke, lahko beremo informacije, kot so ID seje strežnika ali drugi uporabniški podatki, shranjeni v piškotkih.
Omeniti je treba, da je namesto alarma () mogoče uporabiti katero koli drugo funkcijo Javascript.
Na primer ,če smo našli ranljivo spletno mesto, ki shrani ID seje v parametru piškotka 'session_id'. Nato lahko napišemo funkcijo, ki spremeni trenutni ID seje:
javascript: void (document.cookie = “session_id =<>');
Tako bo spremenjena vrednost id seje. Možni so tudi vsi drugi načini spreminjanja parametrov.
Na primer, zlonamerni uporabnik se želi prijaviti kot drugi ljudje. Za prijavo zlonamerni uporabnik najprej spremeni nastavitve piškotkov za avtorizacijo na true. Če nastavitve piškotkov niso nastavljene kot »resnično«, lahko vrednost piškotka vrnete kot »nedoločeno«.
kje lahko gledam brezplačne anime na spletu
Če želite spremeniti te vrednosti piškotkov, bo zlonamerni uporabnik izvedel v skladu z ukazom Javascript iz vrstice URL v brskalniku:
javascript: void (document.cookie = 'pooblastilo = resnično');
Rezultat tega je, da bo trenutni parameter piškotkov pooblastilo = false spremenjen v pooblastilo = res. Tako bo zlonamerni uporabnik lahko pridobil dostop do občutljive vsebine.
Prav tako je treba omeniti, da včasih koda Javascript vrne precej občutljive informacije.
javascript: opozorilo (document.cookie);
Na primer, če razvijalec spletnega mesta ni bil dovolj previden, lahko vrne tudi imena in vrednosti parametrov uporabniškega imena in gesla. Potem lahko takšne podatke uporabimo za vdor v spletno mesto ali samo za spreminjanje vrednosti občutljivega parametra.
Na primer, s spodnjo kodo lahko spremenimo vrednost uporabniškega imena:
javascript: void (document.cookie = ”username = otherUser”);
Na ta način lahko spremenite tudi katero koli drugo vrednost parametrov.
Sprememba zasnove spletnega mesta
Javascript je mogoče uporabiti tudi za spreminjanje katerega koli obrazca spletnega mesta in na splošno njegovega oblikovanja.
Na primer, z Javascriptom lahko spremenite vse podatke, prikazane na spletnem mestu:
- Prikazano besedilo.
- Ozadje spletnega mesta.
- Videz obrazca spletnega mesta.
- Videz pojavnega okna.
- Videz katerega koli drugega elementa spletnega mesta.
Na primer, če želite spremeniti prikazani e-poštni naslov na spletnem mestu, uporabite ustrezen ukaz Javascript:
javascript: void (document.forms (0) .email.value = 'Test@test.com') ;
Možno je tudi malo drugih zapletenih manipulacij z zasnovo spletnega mesta. S tem napadom lahko dostopamo in spremenimo tudi razred CSS spletnega mesta.
Na primer, če bi radi sliko JS Injection spremenili sliko ozadja spletnega mesta, je treba ukaz ustrezno zagnati:
javascript: void (dokument. slika ozadja: url (“other-image.jpg“);
Zlonamerni uporabnik lahko tudi napiše kodo za vbrizgavanje Javascript, ki je navedena v obrazcu za vstavljanje besedila, in jo shrani.
javascript: void (opozorilo („Pozdravljeni!“));
Nato se vsakič, ko se stran odpre, prikaže besedilno polje s sporočilom »Pozdravljeni!«.
Spremenjena zasnova spletnega mesta z Javascript Injectionom je manj tvegana kot spreminjanje parametrov. Če pa bomo zasnovo spletnega mesta spremenili zlonamerno, bo to stalo ugleda podjetja.
Kako preizkusiti vbrizgavanje JavaScript
Preizkusite ga lahko na naslednje načine:
- Ročno
- S testnimi orodji
- Z vtičniki brskalnika
Možne ranljivosti Javascripta lahko preverite ročno, če dobro poznate, kako naj se to izvede. Prav tako ga je mogoče preizkusiti z različnimi orodji za avtomatizacijo.
Na primer, če ste svoje teste avtomatizirali na ravni API z orodjem SOAP UI, potem je mogoče tudi izvajati teste za vbrizgavanje Javascript z VELIKI MIEL .
Lahko pa komentiram le iz lastnih izkušenj, da bi morali res dobro poznati orodje SOAP UI, da z njim preizkusite JS Injection, saj bi morali biti vsi koraki preizkusa napisani brez napak. Če je kateri koli preskusni korak napisan napačno, lahko povzroči tudi napačne rezultate preskusov varnosti.
Najdete lahko tudi različne vtičnike brskalnika za preverjanje morebitnih napadov. Priporočljivo pa je, da ne pozabite ročno preveriti proti napadu, saj običajno vrne natančnejše rezultate.
Rad bi povedal, da se zaradi ročnega testiranja proti vbrizganju Javascripta počutim bolj samozavestno in prepričano glede varnosti spletnega mesta. Tako ste lahko prepričani, da med testiranjem ni bil zgrešen noben obrazec in so vam vidni vsi rezultati.
Če želite preizkusiti vbrizgavanje Javascripta, morate imeti splošno znanje o Javascriptu in vedeti, kateri deli spletnega mesta so bolj ranljivi. Ne pozabite tudi, da je spletno mesto morda zaščiteno pred JS Injection in med testiranjem poskusite to zaščito prekiniti.
Tako boste prepričani, ali je zaščita pred napadom dovolj močna ali ne.
Možna zaščita pred tem napadom
Prvič, da bi preprečili ta napad, je treba potrditi vsak prejeti vnos. Vnos je treba potrditi vsakič, in ne le ob začetnem sprejemu podatkov.
Zelo priporočljivo je, da se ne zanašate na preverjanje na strani odjemalca. Priporočljivo je tudi, da izvedete pomembno logiko na strani strežnika.
Mnogi se poskušajo zaščititi pred injiciranjem Javascripta tako, da narekovaje spremenijo v dvojne in kode Javascript ne bi smeli izvajati na ta način.
Na primer, če bi v polje za komentar zapisali karkoli z narekovaji ..., bodo ti narekovaji zamenjani z dvojnimi -<>...<>. Tako vnesena koda Javascript ne bo izvedena.
Opazil sem, da je zamenjava narekovajev z dvojnimi narekovaji povsem običajna praksa, da se izognemo morebitnim napadom JS Injection. Vendar obstaja nekaj načinov za kodiranje narekovajev, da se izvede koda JS Injection. Zato spreminjanje narekovajev na dvojne ni popoln način zaščite pred tem napadom.
Zaključek
Vedno je treba vedeti, da je Javascript Injection eden od možnih napadov na spletna mesta, saj je Javascript ena najpogosteje uporabljenih tehnologij za ta spletna mesta. Zato med preizkušanjem spletnih mest ali drugih spletnih tehnologij ne smemo pozabiti preizkusiti tega napada.
Pri izvajanju varnostnih preizkusov ne smemo pozabiti na JS Injection. Nekateri menijo, da je to testiranje manj tvegan napad, saj se izvaja na strani odjemalca.
Vendar gre za napačen pristop in vedno se moramo zavedati, da lahko vbrizgavanje Javascripta povzroči resno škodo na spletnem mestu, kot so uhajanje občutljivih informacij, spreminjanje parametrov ali vdor v uporabniške račune.
Zato bi morali to obravnavati kot pomemben del testiranja in je del naložbe za dober izdelek in ugled podjetja.
Testiranje JS Injection ni zelo težko. Najprej bi morali imeti splošno znanje o Javascriptu in vedeti, kako preveriti, ali je ta napad mogoč za trenutno spletno rešitev ali ne.
Med testiranjem se morate tudi zavedati, da ima spletno mesto lahko zaščito pred tovrstnimi napadi, vendar je lahko prešibko - treba ga je tudi preveriti. Pomembno si je zapomniti tudi, da obstajajo različne vrste napadov Javascript Injection in nobenega od njih ni treba pozabiti preizkusiti.
Ste izvedli testiranje vbrizgavanja Javascript ?? Z veseljem vas bomo slišali in delite svoje izkušnje v spodnjem oddelku za komentarje.
Priporočeno branje
- Vadnice za globinsko zasenčenje za začetnike
- Kako nastaviti Node.js preskusno ogrodje: Vadnica za Node.js
- Vadnica za vbrizgavanje HTML: Vrste in preprečevanje s primeri
- Vadnica za testiranje vbrizgavanja SQL (primer in preprečevanje napada vbrizgavanja SQL)
- Vadnica za odsev Java s primeri
- Vadnica za SVN: Upravljanje izvorne kode z uporabo Subverzije
- Vadnica Python DateTime s primeri
- Tortoise SVN Vadnica: Revizije v odlagališču kod