XSS JavaScript-merkkijonoissa 1
*Tässä moduulissa hyväksikäytämme harjoituskohteessa olevaa XSS-haavoittuvuutta, joten voit käynnistää alla olevan tehtävän ja toistaa vaiheet omassa tahdissa.
XSS-haavoittuvuuksia voi usein syntyä, jos käyttäjän hallinnassa olevaa syötettä käsitellään tai käytetään turvattomasti sovelluksen omassa JavaScript-koodissa. Verkkosovelluksia testatessa onkin tärkeää ymmärtää sekä varmistaa selainpuolella tapahtuvan JavaScript-koodin toiminta.
Haavoittuvuuden löytäminen
Aloitamme tutkimalla sovelluksessa olevia toiminallisuuksia ja huomaamme nopeasti, että sovellus käyttää hakukentässä syötettyjä arvoja JavaScript-koodin merkkijonona.
*Hakukentän arvo heijastetaan ****search ****parametrissa sekä sovelluksen JavaScript-koodissa, ****searchTerm ***nimisessä merkkijonossa.

Jatkamme analyysia katsomalla miten sovellus käsittelee erikoismerkkejä. Tarkoituksemme on yrittää rikkoa merkkijonon rakenne siten, että voimme kirjoittaa omaa JavaScript-koodia merkkijonon jälkeen. Kokeilemme seuraavanlaista syötettä.
1'; const omaparametri='*Voimme käyttää tähän suoraan URL-osoitteessa käytettyä ****search ***parametria.

Onnistuimme määrittämään oman parametrin olemassa olevan koodin sekaan. Tämä tarkoittaa, että voimme kirjoittaa omaa JavaScript-koodia käyttämällä search parametria. Sovellus on haavoittuvainen XSS-hyökkäykselle.
Huomaamme, että sovellus ei formatoi tai estä heittomerkkejä oikein, mikä mahdollistaa merkkijonosta pakenemisen sekä oman JavaScript-koodin lisäämisen olemassa olevan koodin sisään.
Varmistamme myös, että hyväksyykö sovellus HTML-koodissa käytettyjen erikoismerkkien käytön seuraavanlaisella syötteellä.
1';</script>*Huomaa, että sovellus formatoi syötetyt ****< ****ja ****> ***merkit oikein, jolloin selaimeen palautettu teksti sisältää HTML-koodatut versiot merkeistä.

Sovellus näyttää estävän tyypilliset XSS-haavoittuvuuksissa käytetyt erikoismerkit, joten joudumme käyttämään ensimmäisenä löydettyä tapaa suorittaa XSS-hyökkäys. Hyvänä tapana on vielä tuplavarmistaa haavoittuvuus aiheuttamalla hälytyslaatikko selaimessa.
JavaScript-koodissa // merkki-yhdistelmä tarkoittaa kommettia, jolloin alla oleva syöte kommentoi muun samalla rivillä olevan koodin pois. Tämä ei ole pakollista, mutta helpottaa lopullisen haittakoodin rakentamista.
1'; alert('xss'); //
Huomio, kuinka // merkit kommentoivat muun koodin pois, eikä meidän tarvitse murehtia mahdollisista virheistä, joita meidän syötteestä voisi koitua.

Hakkeroinnin oppiminen alkaa tästä
Sadat interaktiiviset kurssit, virtuaalilabrat ja CTF-haasteet selaimessasi. Aloita ilmainen kokeilu ilman korttitietoja.