XSS (Cross-Site Scripting)

WYSIWYG XSS ja SoMe-madot

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 WYSIWYG 1

Tässä tehtävässä käytämme hyväksi XSS haavoittuvuutta WYSIWYG editorissa ja ujutamme haittakoodimme DefaceBook seinälle.

Tavoite

Hanki 10 uutta seuraajaa haittakoodin avulla.

Tehtävät

Flag

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


Tässä moduulissa tutustumme WYSIWYG-editoreihin sekä käytämme hyväksi kyseisessä editorissa piilevää XSS haavoittuvuutta. Aloitetaan tutustumalla Samy Kamkarin vuonna 2005 MySpacessa, kulovalkean tavoin levinneeseen XSS matoon.

https://en.wikipedia.org/wiki/Samy_(computer_worm)

https://www.youtube.com/watch?v=DtnuaHl378M

Seuraavaksi seuraamme Samyn jalanjäljissä ja toteuttamaan saman hyökkäyksen.

WYSIWYG-editorit

Alla kuva TinyMCE WYSIWYG-editorista.


WYSIWYG (What You See Is What You Get)-editorit mahdollistavat rikastetun tekstin luomisen selaimessa. Rikastettu teksti tarkoittaa sellaista tekstiä, jossa voi olla värejä, kursivointeja, joskus kuvia, listoja ja muita samanlaisia toimintoja.

Tyypillisesti tällaiset editorit ovat kulissien takana HTML-editoreita, jotka lähettävät palvelimelle käyttäjän selaimessa WYSIWYG-editorilla aikaansaaman HTML-koodin.

Luonnollisesti tällaisessa ratkaisussa elää vaara, että käyttäjä lisääkin vaikka värien ja fonttien lisäksi haitallista JavaScript-koodia HTML-koodin sekaan.

Haavoittuvuuden löytäminen

Aloitetaan luomalla uusi postaus seinälle. Pysäytämme tästä koituneen HTTP-pyynnön BrupSuite-ohjelmalla (intercept päälle) ja lisäämme postaukseen JavaScript-koodin:

post=hello<script>alert("Hei")</script>

Kun haavoittuvuus on vahvistettu, voimme poistaa postauksen.

Hyökkäyksen vaiheet

Tehtävän tavoite on saada kymmenen seuraajaa DeFacebookissa. Toteutamme hyökkäyksen seuraavissa vaiheissa:

  • Selvitämme oman käyttäjätunnisteemme.
  • Selvitämme, minkälainen HTTP-pyyntö toisen käyttäjän seuraamisesta syntyy.
  • Rakennamme JavaScript-koodin, joka toistaa kyselyn ja seuraa tiliämme automaattisesti.
  • Käytämme hyväksi äsken todettua XSS-haavoittuvuutta ja asetamme haittakoodin sivulle.
  • Odotamme, että kymmenen bottikäyttäjää altistuu haittakoodille, ja täten alkavat seuraamaan meitä.

Oman käyttäjätunnisteen selvittäminen

Avaa oma käyttäjäsivusi ja huomaa tunniste URL-osoitteeseen.

Selvitä tarvittavan HTTP-pyynnön rakenne

Seuraavaksi seuraamme toista käyttäjää ja etsimme HTTP-pyynnön BurpSuite-ohjelman HTTP-historiasta. Merkitsemme ylös polun, metodi ja parametrit.

Luodaan JavaScript-koodi joka seuraa meidän tiliämme

Nyt kirjoitamme JavaScript-koodin, joka seuraa tiliämme ja varmistamme tämän toiminnan JavaScript-konsolissa.

fetch('/users/100/follow',{method:'POST'})

Suoritamme hyökkäyksen

Nyt kun haittakoodi on toimintavalmis, lisäämme sen postaukseen script-elementissä.

post=hello<script>fetch('/users/100/follow',{method:'POST'})</script>


Lopuksi odotamme, että 10 ihmistä käy seinällä ja altistuu haittakoodille.

Huom! - Muista käyttää vain polkua, eikä koko URL-osoitetta haittakoodissa, sillä muuten haittakoodi tulee epäonnistumaan CORS-virheistä johtuen.

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ä.