Institute of Computer Science
  1. Courses
  2. 2024/25 spring
  3. Computer Security (LTAT.06.002)
ET
Log in

Computer Security 2024/25 spring

  • Pealeht
  • Loengud
  • Praktikumid
  • Referaat
  • Kirjandus
  • Lingid

Praktikum 11 - Veebirakenduse turvalisus & WebGoat

Selles praktikumis tegeleme veebilehtede turvalisusega. Vaatame millised vead võivad eksisteerida veebirakendustes, mis annaksid ründajale ligipääsu infosüsteemis hoitavatele andmetele. Praktikumis paigaldame Kali virtuaalmasina ning sinna veebirakenduse WebGoat. Teie eesmärgiks selles praktikumis on teha läbi meie poolt valitud WebGoat ülesanded, et tutvuda erinevate turvaprobleemidega.

Lisaks WebGoat'le kasutame ka OWASP ZAP tarkvara, mis võimaldab "kinni püüda" ja modifitseerida HTTP päringuid. See lihtsustab oluliselt veebirakenduste turvatestimist.

Ettevalmistus

Kui teil on kõik eelnevad praktikumid edukalt sooritatud, siis kõvaketta ruumi kokkuhoiu huvides võite kustutada järgnevad virtuaalmasinad koos andmetega:

  • Linux Mint kloon
  • Windows 10
  • Windows XP

NB! Praktikum 15 vajame Linux Mint virtuaalmasinat ID kaarti tarkvara katsetamiseks, seega seda veel ärge kustutage.

Kali Linux

Kali Linux1 on avatud lähtekoodiga Debianil põhinev distributsioon, mis on peamiselt suunatud infoturbe ülesannetele. Seetõttu on masinale juba eelinstallitud mitmed tööriistad, mida turvalisuse ja eetilise häkkimise valdkonnas kasutada saab. Näiteks on eelinstallitud juba varasemates praktikumides kasutatud Nmap ja Wireshark.

Paigaldage endale Kali eelvalmistatud virtuaalmasin:

  1. Minge leheküljele Kali pre-built VMS
  2. Laadige alla soovitatud VirtualBox-i kettapilt (ingl image file)
  3. Pakkige kali-linux-2025.1c-virtualbox-amd64.7z lahti
    • Soovitame lahtipakkimisel kasutada tarkvara 7-Zip2, mis on pakkimisel ja lahtipakkimisel efektiivsem ja kiirem kui Windowsi sisse-ehitatud pakkimistarkvara.
    • NB! 2025. aastal muutus ootamatult Kali Linux kali-archive-keyring, mistõttu ei saa varasematel kui 2025.1c versioonidel enam masinale automaatselt uuendusi teha sudo apt update käsuga. Sellisel juhul paigaldage endale uus keyring vajadusel järgnevalt lehelt:
      • https://www.kali.org/blog/new-kali-archive-signing-key/
  4. Seejärel võite paigaldada virtuaalmasina kali-linux-2025.1c-virtualbox-amd64.vbox definitsioonifailiga ehk käivitage .vbox fail topeltklõpsuga.
    • Kali virtuaalmasinale on soovitatav võimalusel anda ka 4GB RAM VirtualBox-i seadetest.

1 Kali Linux. https://www.kali.org/
2 7-Zip. https://www.7-zip.org/

Kali virtuaalmasinal on eelseadistatud kasutajatunnus ja parool:

  • Kasutajatunnus: kali
  • Parool: kali

Käivitage Kali virtuaalmasin ja logige sinna sisse. Teil võiks töötada ka ekraani dünaamiline suurendamine ja teksti kopeerimine põhimasinast (Shared Clipboard).

NB! Seejärel muutke oma Kali Linux hostname ära enda perekonnanimeks:

  • Õpetus leitav siit: https://www.geeksforgeeks.org/how-to-change-kali-linux-hostname/
  • NB! Kontrollige muutusi virtuaalmasina taaskäivitusega - käsk reboot.

WebGoat

WebGoat3 on veebirakendus, mis on spetsiaalselt loodud ebaturvaliseks ning kuhu on lisatud ülesanded, mis aitavad selgitada erinevaid turvaprobleeme. WebGoat põhineb OWASP Top 10 turvaprobleemide nimekirjal, mille eesmärk on kaardistada levinud turvaohtusid ja neist arendajaid teavitada.


3 OWASP WebGoat. https://owasp.org/www-project-webgoat/

Nüüd uuendame KALI tarkvara repositooriumi võtit, Java versiooni ning paigaldame WebGoat tarkvara:

$ sudo wget https://archive.kali.org/archive-keyring.gpg -O /usr/share/keyrings/kali-archive-keyring.gpg
$ sudo apt update
$ sudo apt install openjdk-25-jdk
$ java -version #peaks olema vähemalt java 23 või kõrgem versioon
$ wget https://github.com/WebGoat/WebGoat/releases/download/v2025.3/webgoat-2025.3.jar
$ chmod 755 webgoat-2025.3.jar

Käivitage WebGoat:

$ java -Dfile.encoding=UTF-8 -Dwebgoat.port=8080 -Dwebwolf.port=9090 -jar webgoat-2025.3.jar

Nüüd avage veebilehitsejas aadress http://127.0.0.1:8080/WebGoat/ ning vajutage Sign in all olevale or register yourself as a new user. Avanenud Webgoat veebilehel looge endale uus kasutaja. Kasutajatunnuseks pange enda eesnimi, mille põhjal saame kuvatõmmiste esitamisel kontrollida, et lahendus on just teie oma.

NB! Paneme tähele, et Terms of use all on soovitus lülitada virtuaalmasinal ligipääs internetile välja, kuna tegevused rakenduses võivad jääda silma digikriminalistika tööriistadele (ingl forensics tools). Tegemist on tihtipeale asutustes töötavate automatiseeritud tööriistadega, mis võivad teile selliste käitumismustrite korral automaatseid piiranguid rakendada või hullemal juhul, nagu ka kirjelduses öeldud, tekitada teile mainelist või varalist kahju. Klassiruumis 2003 lahendajaid see ei mõjuta, kuna antud klass on ülikooli sisevõrgust eraldatud varasemate sarnaste kogemuste tõttu. Mujal kui kodus või klassis lahendajatel palume kaaluda enda virtuaalmasin internetivõrgust lahti ühendada ülesannete lahendamise hetkeks, kuid esmalt looge endale kasutaja ja laadige alla paar juhendis järgnevat tööriista/laiendust.

Firefox ja Web Developer laiendus

  1. Avage Firefox.
  2. Paigaldage veebilehitsejale Web Developer laiendus, mis võimaldab täpsemalt uurida veebilehtedes olevate vormide väljasid ning neid ka modifitseerida:
    • https://addons.mozilla.org/en-US/firefox/addon/web-developer/
  3. Pärast Web Developer lisamist avage tööriista lisamenüü brauseri paremalt ülevalt nurgast Extensions alt.
  4. Firefoxi tööriistaribale tekib lisamenüü, mille alt valige Forms.
    • Tutvuge sealsete valikutega.

OWASP ZAP

OWASP ZAP võimaldab modifitseerida kõiki GET, PUT või POST tüüpi HTTP päringuid. Selle abil on võimalik kõrvale hiilida veebilehtede HTML ja JavaScript abil seatud piirangutest HTML vormide väljadele, mis on osades WebGoat ülesannetes vajalik.

Tarkvara ZAP 2.16.1 saab alla laadida paigaldada käsitsi4, kuid Linuxile kohaselt on selliseid tegevusi mugavam terminali käskudega:

$ sudo apt install zaproxy

4 ZAP - Download. https://www.zaproxy.org/download/

Portide muutmine

ZAP töötab man-in-the-middle proxy'na. Selle esimesel käivitamisel võite saada veateate, et proxy't ei ole võimalik 8080 pordi peal jooksutada, kuna WebGoat juba kasutab seda porti:

$ zaproxy

Vahetage port ära 8081 peale kas hüpikaknas või manuaalselt:

  1. Tools
  2. Options
  3. Network
  4. Local Server/Proxies
    • Address: localhost
    • Port: 8081

Nüüd modifitseerige Firefox kasutama ZAP lokaalset proxy't 8081 pordi peal:

  1. Firefox rakenduse menüü
  2. Settings
  3. General
  4. Network Settings
  5. Manual proxy configuration
    • HTTP Proxy: localhost
    • Port: 8081
  6. Tavaseadistusena proxy ei tööta localhost korral. Seega Firefox aadressiribale kirjutage about:config
  7. Accept the Risk and Continue
  8. otsige localhost
  9. network.proxy.allow_hijacking_localhost
    • muutke väärtus true peale.

HTTP pealtkuulamine

Nüüd on ZAP võimeline pealt kuulama kõiki Firefox poolt tehtud HTTP päringuid. Seda saab seadistada meile vajalike päringute nii-öelda kinni püüdmiseks ja modifitseerimiseks.

HTTP POST päringute modifitseerimise sisse lülitamine ZAP'is:

  1. Tools
  2. Add a custom HTTP break point
    • Location: Request Header
    • Match: contains
    • String: POST

Selle tulemusena püüab ZAP kinni kõik proxy't läbivad POST päringud ning lubab neid modifitseerida nagu näidatud järgmisel pildil:

Kujutis 1. Kinnipüütud POST päring ZAP tarkvaras.

NB! Aktiivne breakpoint või POST päringute püüdmine võib edaspidi tähendada, et teie veebilehitseja ei saa tegevusega enne edasi minna kui ZAP tarkvaras on pakett vabastatud. Seega kui te Webgoat tarkvaras vajutate nuppu ja midagi ei juhtu, siis kontrollige kindlasti ega ZAP pole mõne paketi kinni püüdnud ja ootel.

DEBUG:

  • Kui mõne ülesande juures ei õnnestu päringut kinni püüda, siis proovige muuta HTTP breakpoint'i nii, et String väärtuseks panna mõni modifitseeritavas HTTP vormis leiduva välja nimi, näiteks Submit, ning Location väärtuseks Request Body.
  • Probleemidel ühendusega tuleks ZAP-il kontrollida HUD seadeid:
    1. ZAP
    2. Tools
    3. Options
    4. HUD
    5. Enable when using ZAP Desktop
      • Eemaldada linnuke.

Testimine

Testimiseks on soovitatav lahendada ülesanded:

  1. General
  2. HTTP Basics
    • Kui olete ebakindlam arvutikasutaja, soovitame läbi lugeda ja ära lahenda ka teised General tunnid. Näiteks: HTTP Proxies, mis seletab kuidas kasutada Owasp ZAP tarkvara ja Developer Tools.
  3. (A7) Identity & Auth Failure - Insecure Login (Vihje: kasuta Owasp ZAP).

Ülesanded arvestuse jaoks

Lahenduseks tuleb esitada ekraanitõmmised järgmiste harjutuste kohta PDF-vormingus, millelt peab olema näha lahendatud ülesanne koos rohelise taustaga.

NB! Kui mõne harjutuse puhul ei lähe harjutus roheliseks, siis esitage pilt harjutuse lõpplahendusest ning eduka lahenduse teavitusest.

NB! Lahendamiseks on lubatud kasutada Interneti, YouTube jne abi. Eesmärk ei ole, et te oskaksite seniste teadmiste põhjal ründeid sooritada, vaid et te leiaksite lahenduse tuntud ründe probleemile ja suudaksite neid iseseisvalt korrata.

  • 11-1: Client side
    • a: HTML tampering - kõik harjutused.
    • b: Bypass front-end-restrictions - kõik harjutused.
      • NB! Ülesanne 3 ei taha enamasti roheliseks minna, seega on okei kui tõestate esitust muudmoodi.
    • c: Client side filtering - kõik harjutused.
      • Alamülesanne 3 lahenduse leiate vajadusel allolevast videost. Võrreldes videoga ei tohi uuendatud Webgoat versioonis aadress lõppeda enam / märgiga.
  • 11-2: (A2) Cryptographic Failures
    • Crypto Basics - ülesanded 2, 3, 4.
  • 11-3: (A3) Injection
    • SQL Injection (intro) - kõik harjutused.
      • Lahendused leiate allolevast artiklist. Teie ülesanne on käsud sisestada ja kaasa mõelda.
      • https://gitlab.com/BlackSheepSpicy/WebGoat/-/blob/master/WebGoat%20SQL%20Injection%20%28Introduction%29.pdf.
  • 11-4: (A5) Security Misconfiguration
    • a: Cross-Site Requests Forgeries - ülesanne 7.
      • Lahendage ära ka esimesed harjutused soojenduseks, kuid tõestus esitage ainult 7. ülesande eduka lahenduse kohta.
      • NB! WebGoat käsitleb 127.0.0.1 erinevalt localhost päringutest, seega kasutage enda skriptides localhosti asemel 127.0.0.1 aadressi.
    • b: XXE - ülesanded 4 ja 7
      • Teie eesmärgiks on aru saada, milles seisneb XXE tüüpi turvaprobleem.
      • Vihje: Teises ülesandes (nr 7) ründe kood ei muutu, aga muuta tuleb päringus oleva parameetri väärtust.
  • 11-5: (A1) Broken Access Control
    • Insecure Direct Object References - ülesanded 2 ja 5

Praktikumi ülesanded

Praktikumi ülesannete lahendamine annab neli punkti ja esitamiseks on kaks nädalat alates praktikumi toimumisajast (Personaalne tähtaeg vahemikus 5.-8. mai).

Lahenduseks tuleb esitada ekraanitõmmised järgmiste harjutuste kohta PDF-vormingus, millelt peab olema näha lahendatud ülesanne koos rohelise taustaga.

NB! Käesolevat praktikumi palume esitada hindamise lihtsustamiseks PDF-vormingus, kus pildid on samas järjekorras nagu praktikumi juhendis ülesanded. Iga harjutus on väärt 0.5p ja kokku on võimalik teenida 4p.

  • 11-1: Client side
    • a: HTML tampering.
    • b: Bypass front-end-restrictions.
    • c: Client side filtering.
  • 11-2: (A2) Cryptographic Failures
    • Crypto Basics - Ülesanded 2, 3, 4.
  • 11-3: (A3) Injection
    • SQL Injection (intro) - kõik harjutused.
  • 11-4: (A5) Security Misconfiguration
    • a: Cross-Site Requests Forgeries - ülesanne 7.
    • b: XXE - 4 ja 7.
  • 11-5: (A1) Broken Access Control
    • Insecure Direct Object References - 2 ja 5.

Lisamaterjalid

  • SQL käskude dokumentatsioon
    • SELECT - Querying data
    • UPDATE - Modifying data
    • INSERT - Adding data
  • SQL injection näide:
    • SQL Injection Example
  • Same-origin policy
    • https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy
  • Google Analytics veebikülastajate jälgimise süsteemi kirjeldus
    • https://developers.google.com/analytics/resources/concepts/gaConceptsTrackingOverview
  • Detailsemalt 'Same-Origin Policy' kohta:
    • http://blogs.msdn.com/b/ieinternals/archive/2009/08/28/explaining-same-origin-policy-part-1-deny-read.aspx
    • http://blogs.msdn.com/b/ieinternals/archive/2012/04/03/explaining-same-origin-policy-part-2-limited-write.aspx
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment