HAKATEMIA
06XSS - Syventävä

XSS JavaScript-merkkijonoissa 2

Helppo45MIN

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.

Jatketaan edellisestä moduulin aihepiirissä. Tällä kertaa kehittäjät ovat parantaneet syötteen käsittelyä, eikä edellinen haittakoodimme toimi enää.

Haavoittuvuuden löytäminen

Aloitamme selvittämällä, mitä muutoksia kehittäjät ovat tehneet, kokeilemalla seuraavanlaista yhdistelmää.

JAVASCRIPT
1'; //

Aivan, kehittäjät ovat lisänneet heittomerkkien pakenemisen sovellukseen, jolloin JavaScript-koodi kohtelee heittomerkkejä osana merkkijonoa. Pakenemisella tarkoitetaan kenoviivojen käyttämistä tilanteissa, jossa halutaan käyttää merkkijonon rikkovia merkkejä osana merkkijonoa.

Alla oleva merkkijono sisältää yhden heittomerkin ja kenoviivaa käytetään tämän sisällyttämiseen merkkijonon sisään ilman, että heittomerkki rikkoo merkkijonon määritelmää.

JAVASCRIPT
1const a = '\'';
2// a on yhtä kuin '

Jatkamme analyysia katsomalla, miten sovellus kohtelee itse kenoviivaa, eli pystymmekö pakenemaan kenoviivaa. Syötämme seuraavan.

JAVASCRIPT
1\'; //

Hienoa, sovellus ei pakene itse kenoviivaa. Tämä tarkoittaa, että voimme käyttää kenoviivaa heittomerkin edessä, jolloin lopullisessa JavaScript-koodissa, sovellus pakenee kenoviivamme ja pystymme rikkomaan merkkijonon sekä kirjoittamaan omaa JavaScript-koodiamme. Mutta, koska sovellus pakenee kaikki syöttämämme heittomerkit, emme voi luoda omia merkkijonoja sovellukseen, emmekä voi rakentaa haittakoodiamme tavalliseen tapaan. Onneksi JavaScript-kielessä on sisäänrakennettu funktio nimeltään fromCharCode, jonka avulla merkkijonoja voi rakentaa käyttämättä heittomerkkejä ollenkaan. Tämä toimii seuraavanlaisesti.

JAVASCRIPT
1var x = String.fromCharCode(120,115,115);
2/*
3  120 == x, 
4  115 == s, 
5  115 == s 
6  tarkoittaen, että fromCharCode funktio palauttaa meille merkkijonon xss
7
8*/

fromCharCode funktion avulla voit rakentaa, minkä vain haluamasi merkkijonon. Tästä linkistä löydät listauksen merkeistä ja näiden char code arvoista.

Tuplavarmistamme vielä haavoittuvuuden kokeilemme vielä käyttää yllä mainittua funktiota hälytyslaatikon luomisessa.

Luomme 'xss' merkkijonon ja tallennamme tämän muuttujaan x. Sitten syötämme x muuttujan alert funktioon.

JAVASCRIPT
1\'; var x = String.fromCharCode(120,115,115); alert(x); //

1 / 4
Hakatemia Pro

Hakkeroinnin oppiminen alkaa tästä

Sadat interaktiiviset kurssit, virtuaalilabrat ja CTF-haasteet selaimessasi. Aloita ilmainen kokeilu ilman korttitietoja.