javascript injection tutorial
Što je Javascript Injection?
Javascript je jedna od najpopularnijih tehnologija i najčešće se koristi za web stranice i web aplikacije.
Može se koristiti za ostvarivanje različitih funkcionalnosti web stranica. Međutim, ova tehnologija može donijeti neke sigurnosne probleme kojih bi programer i ispitivač trebao biti svjestan.
Javascript se može koristiti ne samo u dobre svrhe već i za neke zlonamjerne napade. Jedno od njih je Javascript Injection. Bit JS Injection-a je ubrizgavanje Javascript koda koji će se pokretati s klijentske strane.
U ovom uputstvu naučit ćemo više o tome kako provjeriti je li moguće ubrizgavanje Javascripta, kako se može izvesti JS ubrizgavanje i koje su posljedice koje JS ubrizgavanje može donijeti.
Što ćete naučiti:
- Rizici ubrizgavanja JavaScript-a
- Zašto je važno testirati JS injekciju?
- Usporedba s drugim napadima
- Provjera ubrizgavanja JavaScript-a
- Izmjena parametara
- Izmjena dizajna web stranice
- Kako testirati protiv JavaScript ubrizgavanja
- Moguća zaštita od ovog napada
- Zaključak
- Preporučena literatura
Rizici ubrizgavanja JavaScript-a
JS Injection donosi zlonamjernom korisniku puno mogućnosti da izmijeni dizajn web stranice, dobije podatke o web stranici, promijeni prikazane podatke o web lokaciji i manipulira parametrima (na primjer, kolačići). Stoga ovo može donijeti ozbiljnu štetu na web mjestu, curenje informacija, pa čak i hakiranje.
Glavna svrha JS Injection je promijeniti izgled web stranice i manipulirati parametrima. Posljedice JS Injection mogu biti vrlo različite - od oštećenja dizajna web stranice do pristupa tuđem računu.
Zašto je važno testirati JS injekciju?
Mnogi bi se pitali je li testiranje JS Injection-a zaista potrebno.
Provjera ranjivosti JS Injection dio je sigurnosnog testiranja. Ispitivanje sigurnosti obično se izvodi samo ako je bilo uključeno u planiranje projekta, jer zahtijeva vrijeme, puno pažnje i provjeru više detalja.
Primijetio sam da je tijekom realizacije projekta prilično uobičajeno preskakanje testiranja protiv bilo kakvih mogućih napada - uključujući JS Injection. Na ovaj način timovi pokušavaju uštedjeti vrijeme projekta. Međutim, ova praksa vrlo često završava pritužbama kupaca.
Treba znati da se sigurnosno testiranje toplo preporučuje čak i ako nije uključeno u projektne planove. Treba izvršiti provjeru glavnih mogućih napada - istodobno mora provjeriti moguće ranjivosti JS Injection.
Ostavljanje jednostavnog Javascripta Ranjivosti ubrizgavanja u proizvodu može koštati kvalitetu proizvoda i reputaciju tvrtke. Kad god naučim testirati protiv mogućih napada i u općenitom sigurnosnom testiranju, nikada ne preskačem ovaj dio testiranja. Na ovaj način sam samo sigurniji u kvalitetu proizvoda.
Usporedba s drugim napadima
Treba spomenuti, da JS Injection nije toliko rizičan kao SQL ubrizgavanje , jer se izvodi na klijentskoj strani i ne dolazi do baze podataka sustava kao što se događa tijekom napada SQL Injection. Također, nije toliko rizičan kao XSS napad.
Tijekom ovog napada na trenutke se može promijeniti samo izgled web stranice, dok je glavna svrha XSS napada hakiranje drugih podataka za prijavu.
Međutim, JS Injection također može prouzročiti ozbiljnu štetu na web mjestu. To ne samo da može uništiti izgled web stranice, već i postati dobra osnova za hakiranje tuđih podataka za prijavu.
Provjera ubrizgavanja JavaScript-a
Kada započinjete testiranje protiv JS Injection, prvo što biste trebali učiniti je provjeriti je li JS Injection moguće ili nije. Provjera ove vrste mogućnosti ubrizgavanja vrlo je jednostavna - kada se krećete na web mjesto, morate unijeti traku adrese u preglednik ovako:
javascript: alert (‘Izvršeno!’);
Ako se pojavi skočni prozor s porukom 'Izvršeno!', Tada je web mjesto ranjivo na JS Injection.
Zatim u adresnoj traci web mjesta možete isprobati razne Javascript naredbe.
Treba spomenuti da JS Injection nije moguće samo iz adresne trake web mjesta. Postoje razni drugi elementi web stranice koji su možda ranjivi na JS Injection. Najvažnije je znati točno dijelove web stranice na koje Javascript Injection može utjecati i kako ih provjeriti.
Tipični ciljevi JS ubrizgavanja su:
- Razni forumi
- Polja za komentare članka
- Knjige gostiju
- Bilo koji drugi obrasci u koje se može umetnuti tekst.
Da biste provjerili je li ovaj napad moguć za obrazac za spremanje teksta, unatoč pružanju normalnog teksta, upišite Javascript kôd kao što je spomenuto u nastavku i spremite tekst u obrazac i osvježite stranicu.
javascript: alert (‘Izvršeno!’);
Ako na novootvorenoj stranici sadrži tekstualni okvir s porukom ‘Izvršeno!’, Tada je za testirani obrazac moguća ova vrsta ubrizgavanja.
Ako se na oba načina pojavljuje tekstualni okvir s porukom, možete pokušati razbiti web mjesto složenijim metodama JS ubrizgavanja. Tada možete isprobati različite vrste ubrizgavanja - izmjenu parametara ili izmjenu dizajna.
Naravno, izmjena parametara smatra se rizičnijom od izmjene dizajna. Stoga bi tijekom testiranja više pažnje trebalo posvetiti izmjeni parametara.
Također treba imati na umu da su ranjiviji dijelovi web mjesta za Javascript Injection polja za unos u kojima se sprema bilo koja vrsta podataka.
Izmjena parametara
Kao što je ranije spomenuto, jedno od mogućih oštećenja Javascript Injection-a je izmjena parametara.
Tijekom ovog injekcijskog napada zlonamjerni korisnik može dobiti podatke o parametrima ili promijeniti bilo koju vrijednost parametara( Primjer ,postavke kolačića). To može uzrokovati prilično ozbiljne rizike jer zlonamjerni korisnik može dobiti osjetljiv sadržaj. Takva vrsta ubrizgavanja može se izvesti pomoću nekih Javascript naredbi.
Sjetimo se, da je Javascript naredba koja vraća trenutni kolačić sesije napisana u skladu s tim:
javascript: upozorenje (document.cookie);
Uneseno u URL traku preglednika, vratit će se skočni prozor s trenutačnim kolačićima sesije.
Ako web stranica koristi kolačiće, možemo pročitati takve podatke kao ID sesije poslužitelja ili druge korisničke podatke pohranjene u kolačićima.
Treba napomenuti da se umjesto alert () može koristiti bilo koja druga funkcija Javascripta.
Na primjer ,ako smo pronašli ranjivu web stranicu, koja pohranjuje ID sesije u parametar kolačića 'session_id'. Tada možemo napisati funkciju koja mijenja trenutni ID sesije:
javascript: void (document.cookie = “session_id =<>');
Na taj će se način vrijednost id sesije promijeniti. Također su mogući i bilo koji drugi načini promjene parametara.
Na primjer, zlonamjerni korisnik želi se prijaviti kao drugi ljudi. Da bi izvršio prijavu, zlonamjerni korisnik prvo će promijeniti postavke autorizacijskog kolačića na true. Ako postavke kolačića nisu postavljene kao 'istinito', tada se vrijednost kolačića može vratiti kao 'nedefinirano'.
testiranje performansi web usluga pomoću loadrunnera
Da bi promijenio vrijednosti kolačića, zlonamjerni će korisnik izvesti prema naredbi Javascript s URL trake u pregledniku:
javascript: void (document.cookie = „autorizacija = istina“);
Kao rezultat, trenutni parametar kolačića autorizacija = netačno promijenit će se u autorizacija = istinito. Na taj će način zlonamjerni korisnik moći dobiti pristup osjetljivom sadržaju.
Također, valja napomenuti da ponekad Javascript kôd vraća prilično osjetljive informacije.
javascript: upozorenje (document.cookie);
Na primjer, ako programer web stranice nije bio dovoljno oprezan, može vratiti i imena i vrijednosti parametara korisničkog imena i lozinke. Tada se takvi podaci mogu koristiti za hakiranje web stranice ili samo za promjenu vrijednosti osjetljivog parametra.
Na primjer, pomoću donjeg koda možemo promijeniti vrijednost korisničkog imena:
javascript: void (document.cookie = ”username = otherUser”);
Na taj se način mogu mijenjati i bilo koje druge vrijednosti parametara.
Izmjena dizajna web stranice
Javascript se također može koristiti za izmjenu bilo kojeg oblika web stranice i općenito dizajna web stranice.
Na primjer, s Javascriptom možete promijeniti sve podatke prikazane na web mjestu:
- Prikazani tekst.
- Pozadina web stranice.
- Izgled obrasca web stranice.
- Izgled skočnog prozora.
- Izgled bilo kojeg drugog elementa web stranice.
Na primjer, za promjenu prikazane adrese e-pošte na web mjestu treba upotrijebiti odgovarajuću Javascript naredbu:
javascript: void (document.forms (0) .email.value = ”Test@test.com”) ;
Moguće je i nekoliko drugih kompliciranih manipulacija dizajnom web stranice. Ovim napadom možemo pristupiti i promijeniti CSS klasu web stranice.
Na primjer, ako želimo promijeniti pozadinsku sliku web stranice pomoću JS Injection, tada bi naredba trebala biti izvršena u skladu s tim:
javascript: void (dokument. pozadinska slika: url („other-image.jpg“);
Također, zlonamjerni korisnik može napisati Javascript Injection kod koji je spomenut u nastavku u obrazac za umetanje teksta i spremiti ga.
javascript: void (upozorenje („Pozdrav!“));
Tada će se svaki put kada se stranica otvori, pojaviti tekstni okvir s porukom „Zdravo!“.
Promijenjen dizajn web stranice s Javascript Injectionom manje je rizičan od izmjene parametara. No ako se dizajn web stranice promijeni na zlonamjerni način, to može koštati reputacije tvrtke.
Kako testirati protiv JavaScript ubrizgavanja
Može se testirati na sljedeće načine:
- Ručno
- Alatima za ispitivanje
- S dodacima za preglednik
Moguće Javascript ranjivosti mogu se provjeriti ručno ako dobro znate kako to treba izvesti. Također, može se testirati raznim alatima za automatizaciju.
Na primjer, ako ste automatizirali svoje testove na razini API-ja pomoću alata SOAP UI, tada je moguće pokrenuti i testove za ubrizgavanje Javascripta s KORISNIČKO sučelje SAPUN .
Međutim, mogu komentirati samo iz vlastitog iskustva, da ste zaista trebali dobro znati o SOAP UI alatu da biste njime testirali JS Injection, jer bi svi koraci testa trebali biti napisani bez grešaka. Ako je bilo koji testni korak napisan pogrešno, to može uzrokovati i pogrešne rezultate sigurnosnog testiranja.
Također, možete pronaći razne dodatke preglednika za provjeru od mogućeg napada. Međutim, preporučuje se da ne zaboravite ručno provjeriti protiv ovog napada, jer obično daje preciznije rezultate.
Želio bih reći da ručno testiranje protiv ubrizgavanja Javascripta čini da se osjećam sigurnije i sigurnije u sigurnost web stranice. Na ovaj način možete biti sigurni da nijedan obrazac nije propušten tijekom testiranja i da su vam vidljivi svi rezultati.
Da biste testirali Javascript Injection, trebali biste imati opće znanje o Javascriptu i znati koji su dijelovi web mjesta ranjiviji. Također, trebate imati na umu da web stranica može biti zaštićena od JS Injection-a, a tijekom testiranja pokušajte prekinuti tu zaštitu.
Na taj ćete način biti sigurni je li zaštita od ovog napada dovoljno jaka ili nije.
Moguća zaštita od ovog napada
Prvo, kako bi se spriječio ovaj napad, svaki primljeni unos treba provjeriti. Unos treba provjeriti svaki put, a ne samo kada se podaci u početku prihvate.
Preporučuje se da se ne oslanjate na provjeru na strani klijenta. Također, preporučuje se izvođenje važne logike na strani poslužitelja.
Mnogi se pokušavaju zaštititi od ubrizgavanja Javascripta promjenom citata u dvostruke, a Javascript kôd ne bi trebao biti izveden na taj način.
Na primjer, ako u polje za komentare napišete bilo što s navodnicima ..., ti će citati biti zamijenjeni dvostrukim -<>...<>. Na ovaj način uneseni Javascript kôd neće biti izvršen.
Primijetio sam da je zamjena navodnika dvostrukim navodnicima prilično uobičajena praksa kako bi se izbjegli mogući napadi JS Injection-a. Međutim, postoji nekoliko načina za kodiranje citata kako bi se izveo JS Injection code. Stoga promjena citata u dvostruke nije savršen način zaštite od ovog napada.
Zaključak
Uvijek treba imati na umu da je Javascript Injection jedan od mogućih napada na web stranice, jer je Javascript jedna od najčešće korištenih tehnologija za web stranice. Stoga, tijekom testiranja web stranica ili bilo koje druge web tehnologije, ne treba zaboraviti testirati protiv ovog napada.
Prilikom ispitivanja sigurnosti ne smije se zaboraviti JS Injection. Neki ovo testiranje smatraju manje rizičnim napadom jer se provodi na strani klijenta.
Međutim, to je pogrešan pristup i uvijek bismo trebali imati na umu da Javascript Injection može uzrokovati ozbiljnu štetu na web mjestu poput curenja osjetljivih podataka, promjene parametara ili hakiranja korisničkih računa.
Stoga bismo ovo trebali smatrati važnim dijelom testiranja i dijelom ulaganja u dobar proizvod i reputaciju tvrtke.
Testiranje JS injekcije nije jako teško. Prvo, trebali biste imati opće znanje o Javascriptu i znati kako provjeriti je li ovaj napad moguć za trenutno web rješenje ili ne.
Također tijekom testiranja trebate imati na umu da web stranica može imati zaštitu od ove vrste napada, ali može biti preslaba - treba je i provjeriti. Još jedna važna stvar koju treba imati na umu jest da postoje različite vrste napada Javascript Injection i nijedan od njih ne treba zaboraviti testirati.
Jeste li izvršili Javascript injekcijsko ispitivanje ?? Bilo bi nam drago da se javite, podijelite svoja iskustva u odjeljku za komentare u nastavku.
Preporučena literatura
- Dubinski vodiči pomračenja za početnike
- Kako postaviti okvir za testiranje Node.js: Vodič za Node.js
- Vodič za HTML injekcije: Vrste i prevencija s primjerima
- Vodič za ispitivanje ubrizgavanja SQL (Primjer i sprečavanje napada na ubrizgavanje SQL)
- Java Vodič za refleksiju s primjerima
- SVN Vodič: Upravljanje izvornim kodom pomoću Subverzije
- Python DateTime Vodič s primjerima
- Vodič za kornjače SVN: Revizije u spremištu koda