TTY / Tietoturvallisuuden jatkokurssi / Harjoitustyö 2012 / Luonnosvaihe

Lauri Niskanen

XSS-laboratorioharjoitus

Johdanto

Tässä harjoitustyössä esitellään alustava luonnos cross-site scripting (XSS) -haavoittuvuuksia käsittelevästä harjoituksesta. Harjoitus voidaan järjestää esimerkiksi tulevilla tietoturvan jatkokurseilla.

Tähän viittaus opetusasetelmaan

Opiskelija oppii mitä XSS-haavoittuvuudet ovat ja miten ne toimivat käytännössä. Samalla tutustutaan hieman yleiseen eettiseen hakkerointiin ja penetraatiotestaukseen käytännöllisen harjoituksen kautta. Harjoitus suoriutuu luontevimmin pienryhmissä.

Ennestään opiskelijan tarvitsee osata vain tietokoneen kattava peruskäyttö ja HTML:n perusteet. On hyötyä osata "hyökkääjän roolissa" ajatteleminen, mutta tätä varmaan oppii harjoituksen aikana. Harjoituksen järjestämiseksi tarvitaan jonkinlainen kohdepalvelin, joka voi ajaa XSS-haavoittuvaista demopalvelua sekä jokaiselle pienryhmälle tietokonepääte, jossa on käyttöön soveltuva WWW-selain.

Cross-site scripting

XSS on tyypillisesti Web-palveluista löytyvä haavoittuvuus, joka mahdollistaa hyökkääjälle halutun datan injektoimisen käyttäjien näkemille web-sivuille. Tämä data voi sisältää vain väärää tietoa, mutta siinä voi olla myös suoritettavaa koodia (tyypillisesti javascript), joka voi tehdä vakavampia haittoja käyttäjälle. XSS:n avulla on mahdollista ohittaa tietoturvarajoituksia kuten saman alkuperän käytäntö (same origin policy), sillä hyökkäyskoodi näyttää tulevan oikeasta alkuperästä.

XSS on tilastollisesti yleisin Web-haavoittuvuus. Symantecin vuonna 2007 dokumentoimista web-haavoittuvuukista 84% johtui XSS:stä [1].

Asetelman kuvaus

XSS-haavoittuvuuden havainnollistaminen vaatii jonkinlaisen kohdepalvelun, joka pyörittää haavoittuvaa ohjelmistoa. Samalla palvelimella ei tulisi ajaa mitään tärkeitä palveluita tai säilyttää mitään yksityistä tietoa, koska siihen on kuitenkin tarkoitus kohdistaa harjoitushyökkäyksiä. Demopalvelu tulisi rakentaa niin, että siinä oleva haavoittuvuus on rajattu sopivaksi. Haavoittuvuuden pitää osoittaa tietoturvaongelmien mahdollisuus, mutta sen ei pidä aiheuttaa mitään tarpeettomia haittoja järjestelmälle.

Harjoituksen kohdepalvelu on mahdollista toteuttaa hyvin laajalla valikoimalla erilaisia alustoja ja tekniikoita. Harjoituksen toteuttamista varten on kuitenkin valittava jokin vaihtoehto. Toteuttamisen kannalta tällä ei ole suurta merkitystä sillä tarvittava ohjelma on hyvin yksinkertainen ja tarkoitus on pääasiassa pitää koodi lyhyenä. Kohdepalvelu sinänsä on hyvin minimaalinen. Tarvitaan vain HTTP-palvelin ja jonkinlainen server-side ohjelma, joka lukee käyttäjän syötteen HTML-formista ja tulostaa sen haavoittuvalla tekniikalla käyttäjälle. Helpointa on käyttää jo valmiiksi saatavilla olevia järjestelmiä tai sellaisia, jotka on nopea asentaa. Käytännössä tämä on esimerkiksi PHP tai Python -ohjelma Apache tai Lighttpd -palvelimella. Millekkään web-palveluissa tyypilliselle tietokantajärjestelmälle ei ole varsinaisesti tämän harjoituksen osalta tarvetta jollei harjoitusta halua laajentaa kattamaan myös muita haavoittuvuuksia.

Opiskelijoiden tietokonepäätteiltä on oltava toimiva yhteys kohdepalveluun. Opiskelijat eivät tarvitse välttämättä tämän lisäksi edes Internet-yhteyttä, mutta se saattaa olla hyödyllinen lisätiedon tai -ohjeiden saamiselle.

Vertailu todellisuuteen

On tärkeää olla tietoinen haavoittuvuuksien olemassaolosta ja siitä kuinka yksinkertaisia ne voivat olla sekä "puolustajan" ja "hyökkääjän" kannalta. Haavoittuvuuksien tekninen korjaaminen on varsin helppoa mikäli niiden perusidean ymmärtää ja ne osaa toistaa itse, joten pääpaino pitäisikin olla haavoittuvuuksien tiedostamisessa ja havaitsemisessa.

Samalla on mahdollisuus oppia myös eettisen hakkeroinnin pelisääntöjä. Esimerkiksi tällaista XSS-haavoittuvuutta ei saa suorittaa aidossa järjestelmässä ilman asianmukaista lupaa.

Harjoituksen aikana pitäisi myös tulla jonkinlaista kokemusta "hyökkääjänä" ajattelusta. Tämä on tietoturvaosaajalle tärkeä taito, jotta erilaisia hyökkäyksiä huomataan ja osataan torjua.

Opiskelijalta odotettu toiminta

Harjoitus jaetaan muutamaan vaiheeseen, joiden välissä on taustatietoja ja opastusta. Harjoituksen voisi esimerksi aloittaa mahdollisimman yksinkertaisella demolla, jonka jälkeen opiskelijat voisivat yrittää soveltaa ideaa itse kokeilemalla erilaisia syötteitä kohdepalvelussa. Kun opiskelijat saavat suoritettua minimaalisen, täysin vaarattoman hyökkäyksen olisi hyvä myös havainnollistaa miten vakaviakin haittoja tällä on pienellä laajennuksella mahdollista saada aikaiseksi (esim. istunnon varastaminen).

Harjoituksen päätteeksi voitaisiin näyttää haavoittuvan kohdepalvelun ohjelmakoodia ja selvittää erilaisia keinoja haavoittuvuuden korjaamiseksi.

Lähteet

http://en.wikipedia.org/wiki/Cross-site_scripting

[1]: http://eval.symantec.com/mktginfo/enterprise/white_papers/b-whitepaper_exec_summary_internet_security_threat_report_xiii_04-2008.en-us.pdf

SivuTiedotLaajennettu edit

Vaativuus Jatko
Valmius Valmisteilla
Tyyppi Ydin
Luokitus Uhkat
Mitä Useita
Miltä Useita
Missä Järjestelmä
Kuka Tite-ammattilainen
Milloin Rakennettaessa
Miksi Hyvä tapa
Print version |  PDF  | History: r1 | 
Topic revision: r1 - 01 Nov 2012 - 21:57:54 - LauriNiskanen?
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback