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