hyökkääjät ovat hyödyntäneet Sivustorajat ylittäviä skriptaushaavoittuvuuksia 2000-luvun alusta lähtien, ja XSS on ollut OWASP Top 10-listalla verkkosovellusten kriittisistä tietoturvariskeistä vuodesta 2004 alkaen. Kuitenkin monet kehittäjät, järjestelmänvalvojat ja jopa jotkut penetration testaajat eivät vieläkään ota sitä vakavasti. Jotta tulla tehokas web-sovellus hakkeri tai puolustaja, sinun täytyy ymmärtää perusasiat, miten estää XSS hyökkäyksiä.
XSS-hyökkäykset ovat edelleen ongelma
Cross-site scripting on web-sovelluksen haavoittuvuuden tyyppi, jonka avulla hyökkääjät voivat pistää ja suorittaa haitallista asiakaspuolen koodia uhrin selaimessa laillisessa verkkosovelluksessa.
onnistuneiden XSS-hyökkäysten vaikutus ja vakavuus voivat vaihdella. XSS-hyökkäykset voivat johtaa istuntokaappauksiin, varastettuihin poletteihin, varastettuihin istuntoevästeisiin ja sivustorajat ylittäviin pyyntöväärennyshyökkäyksiin. Nämä hyökkäykset voivat johtaa käyttäjätilien vaarantumiseen.
onnistunut XSS hyökkäys voi myös antaa hyökkääjälle mahdollisuuden käyttää varastettuja tai väärennettyjä evästeitä esiintyäkseen pätevinä käyttäjinä. Tapauksissa, joissa kelvollisella käyttäjällä on sovelluksen sisäiset hallinto-oikeudet, hyökkääjä voi käyttää näitä oikeuksia sivujen muuttamiseen tai koodin etätoimitukseen sovelluksen palvelinpuolella.
XSS: n Hyökkäystyyppejä
XSS: n hyökkäyksiä on kolmenlaisia: stored, reflected ja Document Object Model (Dom) – pohjaisia.
- tallennetun XSS-hyökkäyksen avulla hyökkääjä voi upottaa haitallisen skriptin haavoittuvalle sivulle, joka sitten suoritetaan uhrin katsellessa sivua. Tallennettua XSS: ää pidetään XSS-hyökkäyksen haitallisimpana tyyppinä. Esimerkiksi kun hyökkääjä ruiskuttaa haitallisen JavaScript-hyötykuorman suoraan haavoittuvaan verkkosovellukseen, verkkoselain tallentaa ruiskutetun JavaScript-hyötykuorman. Sitten joka kerta, kun uhri vierailee kyseisellä verkkosivustolla tai verkkosovelluksessa, haitallinen koodi suoritetaan.
- heijastunut XSS-hyökkäys tapahtuu, kun haitallinen hyötykuorma on upotettu linkkiin ja aktivoitu vain, kun käyttäjä napsauttaa linkkiä. Tässä haitallista hyötykuormaa ei tallenneta, vaan se näytetään ainoastaan verkkosivulla URL-tai POSTIDATAN muodossa.
- DOM-pohjainen XSS-haavoittuvuus syntyy, kun DOM: ää käytetään luomaan käyttäjän syötteitä sisältävää dynaamista sisältöä, jota voidaan käsitellä tarkistamatta. Tällainen hyökkäys toteutetaan Javascriptillä uhrin selaimessa
XSS-hyökkäysten ehkäisy
XSS-hyökkäysten estämiseksi kehittäjien on vahvistettava käyttäjän syöte suodattamalla tai pakenemalla erikoismerkkejä oikein ja koodaamalla ulostulo estämään tallennetut XSS-hyökkäykset ja heijastuneet XSS-hyökkäykset. Seuraavat erikoismerkit tulisi aina suodattaa pois tai karata, jotta niitä ei käytettäisi ilkeästi hyväksi:
< |
> |
” |
’ |
) |
( |
& |
kehittäjien tulisi validoida käyttäjän syöte — lähteet — ja koodata ulostulo — nielut — estääkseen DOM-pohjaiset XSS-hyökkäykset. Input source-ominaisuus on se, mistä DOM lukee, ja lähde on se, missä hyökkääjä voi pistää haitallista koodia XSS-haavoittuvuuden hyödyntämiseksi. Seuraavia lähdeominaisuuksia tulee välttää:
- URL
- dokumenturi
- sijainti
- href
- haku
- hash
nieluja ovat ne kohdat, joissa DOM suorittaa haitallisen merkin tai koodin syötteestä — lähteestä — joka puolestaan lähetetään verkkosivulle. Näitä nieluja tulisi välttää palvelunestohyökkäysten estämiseksi:
- innerHTML
- outerHTML
- Kirjoita
jos haluat oppia ymmärtämään ja ehkäisemään paremmin XSS-hyökkäyksiä, Google on rakentanut XSS-pelisivuston, jonka avulla voit oppia, miten nämä hyökkäykset toimivat ja miten niitä voidaan paremmin ehkäistä. OWASP: n Mutilidae 2-projekti tarjoaa myös oppimisen kohteen verkkoturvan ammattilaisille XSS-hyökkäyspuolustuksen terävöittämiseksi.