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

Computer Security 2023/24 spring

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

Praktikum 13 - Veebirakenduse turvalisus - WebGoat näitel

Selles praktikumis tegeleme veebilehtede turvalisusega, et illustreerida, millised vead võivad eksisteerida veebirakendustes, mis annaksid ründajale ligipääsu infosüsteemis hoitavatele andmetele. Praktikumis paigaldame virtuaalmasinasse veebirakenduse WebGoat, mis on õppe eesmärgil spetsiaalselt loodud ebaturvaliseks ning kuhu on lisatud ülesanded, mis aitavad selgitada erinevaid turvaprobleeme. Teie eesmärgiks selles praktikumis on teha läbi meie poolt valitud WebGoat ülesanded, et tutvuda erinevate turvaprobleemidega. WebGoat põhineb OWASP Top 10 turvaprobleemide nimekirjal, mille eesmärk on kaardistada levinud turvaohtusid ja neist arendajaid teavitada.

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

Virtuaalmasina seadistamine

Soovitame kasutada 12. praktikumis paigaldatud Kali Linux virtuaalmasinat. Praktikumi käigus paigaldatav tarkvara töötab ka teistes Linuxi distributsioonides (Andmeturve Mint) ning ka Windowsi operatsioonisüsteemides. Kui praktikumis 12 seda ei teinud, siis ekraani dünaamiliseks suuruse muutmiseks on vaja paigaldada Devices -> Insert Guest Additions CD image -> ja käivitada käsurealt sudo sh VBoxLinuxAdditions.run (CD kaustas) ning reboot.

sudo apt update
java -version #peaks olema java 17
wget https://github.com/WebGoat/WebGoat/releases/download/v2023.8/webgoat-2023.8.jar
chmod 755 webgoat-2023.8.jar
java -Dfile.encoding=UTF-8 -Dwebgoat.port=8080 -Dwebwolf.port=9090 -jar webgoat-2023.8.jar

Eelnev laadib alla 2023.8 WebGoat versioon (webgoat-2023.8.jar). Avage veebilehitsejas aadress http://127.0.0.1:8080/WebGoat/.

Avanenud Webgoat veebilehel looge endale uus kasutaja. Kasutajatunnus võiks olla teie eesnimi, siis on ekraanivaadetel aadressiribal teie nimi kenasti näha ja parooli võite endale ise valida.

Firefox ja Web Developer laiendus

Avage Firefox ning paigaldage veebilehitsejale Web Developer laiendus (Add-on), mis võimaldab täpsemalt uurida veebilehtedes olevate vormide väljasid ning neid ka modifitseerida. Pärast Web Developeri installeerimist tekib Firefoxi tööriistaribale lisamenüü, mille alt valige Forms ja te leiate sealt erinevaid võimalusi saadetava vormi muutmiseks.

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.14.0 saab alla laadida aadressilt: https://www.zaproxy.org/download/ ja paigaldada käsitsi, kuid Kali Linuxis on mugav seda teha käsuga:

sudo apt install zaproxy

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. Juhul kui tekib vastav probleem, siis modifitseerige ZAP lokaalse proxy seadistust:

  • Tools -> Options -> Network -> Local Server/Proxies
    • Address: localhost
    • Port: 8081

Modifitseerige Firefox kasutama ZAP lokaalset proxy't 8081 pordi peal:

  • Firefox rakenduse menüü -> Settings -> General -> Network Settings -> Manual proxy configuration
  • HTTP Proxy: localhost
  • Port: 8081
  • Tavaseadistusena proxy ei tööta localhost korral. Seega Firefox aadressiribale kirjutage about:config -> Accept the Risk and Continue -> otsige localhost -> network.proxy.allow_hijacking_localhost muutke true.

Täiendavalt tuleb ZAP -> Tools -> Options -> HUD -> Enable when using ZAP Desktop eemaldada linnuke. Viimane aitab olukorra vastu, kus muidu võiks teil tekkida vead ühendumisel.

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

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

  • Tools -> Add a custom HTTP break point
    • Location: Request Header
    • Match: contains
    • String: POST

Kui mõne ülesande juures ei õnnestu päringut kinni püüda, siis proovige muuta HTTP breakpoint'i nii, et otsingu (String:) väärtuseks panna mõni modifitseeritavas HTTP vormis leiduva välja nimi (näiteks Submit) ning asukoha (Location:) väärtuseks Request Body.

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:

PS! 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.

Testimiseks on soovitatav lahendada ülesanded:

  • General -> 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 (tuntud ka kui F12 nupp veebilehitsejas).
  • (A7) Identity & Auth Failure - Insecure Login (Vihje: kasuta Owasp ZAP).

Ülesanded arvestuse jaoks

Arvestuse saamiseks lahenda järgmised ülesanded (lahendamiseks on lubatud kasutada interneti, YouTube jne abi, eesmärk ei ole, et te peast oskaksite ründeid sooritada, vaid et te leiaksite lahenduse tuntud ründe probleemile ja suudaksite seda iseseisvalt korrata). Kui mõne harjutuse juures küsitud harjutust roheliseks ei saa võite ka proovimisest või n.ö. vahe-etapist (ründamisest) pildi teha. Osad harjutused on veidi tülikamad kui teised.:

  • Client side -> HTML tampering - Vihje: kasuta Owasp ZAP või Web Developer veebilehitseja laiendust.
  • Client side -> Bypass front-end-restrictions - Kõik harjutused (Vihje: kasuta Owasp ZAP või Web Developer veebilehitseja laiendust).
  • Client side -> Client side filtering - Kõik harjutused (Vihje: lahendused peituvad koodis).
    • Alamülesanne 3 lahenduse leiate siit videost, kui ise välja ei mõtle. Võrreldes videoga Webgoat 2023.8 versioonis ei tohi aadress lõppeda enam / märgiga.
  • (A2) Cryptographic Failures -> Crypto Basics - Ülesanded 2, 3, 4, Ül 6 ja 8 on keerulisemad ja pole vaja lahendada.
  • (A3) Injection -> SQL Injection (intro) (Näidislahendus: https://gitlab.com/BlackSheepSpicy/WebGoat/-/blob/master/WebGoat%20SQL%20Injection%20(Introduction).pdf. Teie ülesanne on käsud sisestada ja kaasa mõelda.)
  • (A10) Server-side Request Forgery -> Cross-Site Requests Forgeries -> Ülesanne 7.
    • Lahendage ära ka esimesed harjutused soojenduseks, kuid tõestus esitage ainult ülesande 7 eduka lahenduse kohta.
    • Vajadusel otsige veebist abi ja juhendeid vastava harjutuse lahendamiseks.
  • Lahendage (A5) Security Misconfiguration -> XXE.
    • Teie eesmärgiks on aru saada, milles seisneb XXE tüüpi turvaprobleem ning lahendada ära kaks esimest XXE ülesannet (alamosad 4 ja 7). Vihje: Teises ülesandes (nr 7) ründe kood ei muutu, aga muuta tuleb päringus oleva parameetri väärtust. Kolmanda ülesande kirjelduses on viga ning seetõttu me selle lahendust ei nõua.
  • Lahendage ära (A1) Broken Access Control -> Insecure Direct Object References ja esitage Ülesanne 5 võõra profiili vaatamine ekraanipilt edukast lahendusest. Eelnevad ülesanded on soovitatav ka ära lahendada, kuid nende kohta pilti ei pea esitama. Abiks on video ning internetist leiab näitelahendusi kui ise hätta jääte. Ülesande puhul idee kuidas teha on olulisem konkreetsest lahendusest.
    • PS! Alamülesanne 5 lahendamiseks on vaja eelnevalt ära lahendada alamülesanne 2.

Esitada Praktikum 13:

Praktikumi ülesande lahendamine annab neli punkti ja esitamiseks on umbes kaks nädalat alates praktikumi toimumisajast ( kuni 24. mai tähtajani).

Lahenduseks tuleb esitada ekraanitõmmised järgmiste harjutuste kohta, millelt peab olema näha lahendatud ülesanne koos rohelise taustaga. Iga harjutus on väärt 0.5p ja kokku on võimalik teenida 4p.

  1. Client side -> HTML tampering.
  2. Client side -> Bypass front-end-restrictions.
  3. Client side -> Client side filtering.
  4. (A2) Cryptographic Failures -> Crypto Basics - Ülesanded 2, 3, 4.
  5. (A3) Injection -> SQL Injection (intro) -> kõik.
  6. (A10) Server-side Request Forgery -> Cross-Site Requests Forgeries -> Ülesanne 7.
  7. (A5) Security Misconfiguration -> XXE -> 4 ja 7.
  8. (A1) Broken Access Control -> Insecure Direct Object References -> 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