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:
- Minge leheküljele Kali pre-built VMS
- Laadige alla soovitatud VirtualBox-i kettapilt (ingl image file)
- Pakkige
kali-linux-2025.1c-virtualbox-amd64.7z
lahti- Soovitame lahtipakkimisel kasutada tarkvara
7-Zip
2, 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:
- Soovitame lahtipakkimisel kasutada tarkvara
- 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.
- Kali virtuaalmasinale on soovitatav võimalusel anda ka
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.
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
- Avage
Firefox
. - Paigaldage veebilehitsejale
Web Developer
laiendus, mis võimaldab täpsemalt uurida veebilehtedes olevate vormide väljasid ning neid ka modifitseerida: - Pärast
Web Developer
lisamist avage tööriista lisamenüü brauseri paremalt ülevalt nurgastExtensions
alt. - 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
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:
Tools
Options
Network
Local Server/Proxies
Address
:localhost
Port
:8081
Nüüd 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
- HTTP Proxy:
- Tavaseadistusena proxy ei tööta
localhost
korral. SeegaFirefox
aadressiribale kirjutageabout:config
Accept the Risk and Continue
- otsige
localhost
network.proxy.allow_hijacking_localhost
- muutke väärtus
true
peale.
- muutke väärtus
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:
Tools
Add a custom HTTP break point
- Location:
Request Header
- Match:
contains
- String:
POST
- Location:
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, etString
väärtuseks panna mõni modifitseeritavas HTTP vormis leiduva välja nimi, näiteksSubmit
, ningLocation
väärtuseksRequest Body
. - Probleemidel ühendusega tuleks ZAP-il kontrollida HUD seadeid:
ZAP
Tools
Options
HUD
Enable when using ZAP Desktop
- Eemaldada linnuke.
Testimine
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 jaDeveloper Tools
.
- Kui olete ebakindlam arvutikasutaja, soovitame läbi lugeda ja ära lahenda ka teised General tunnid. Näiteks:
(A7) Identity & Auth Failure
-Insecure Login
(Vihje: kasutaOwasp 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.
- NB! Ülesanne
- 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.
- Alamülesanne
- a:
- 11-2:
(A2) Cryptographic Failures
-
Crypto Basics
- ülesanded2
,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
- ülesanne7
.- Lahendage ära ka esimesed harjutused soojenduseks, kuid tõestus esitage ainult 7. ülesande eduka lahenduse kohta.
- NB! WebGoat käsitleb
127.0.0.1
erinevaltlocalhost
päringutest, seega kasutage enda skriptides localhosti asemel127.0.0.1
aadressi.
- b:
XXE
- ülesanded4
ja7
- 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.
- a:
- 11-5:
(A1) Broken Access Control
Insecure Direct Object References
- ülesanded2
ja5
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
.
- a:
- 11-2:
(A2) Cryptographic Failures
-
Crypto Basics
- Ülesanded2
,3
,4
.
-
- 11-3:
(A3) Injection
-
SQL Injection (intro)
- kõik harjutused.
-
- 11-4:
(A5) Security Misconfiguration
- a:
Cross-Site Requests Forgeries
- ülesanne7
. - b:
XXE
-4
ja7
.
- a:
- 11-5:
(A1) Broken Access Control
-
Insecure Direct Object References
-2
ja5
.
-
Lisamaterjalid
- SQL käskude dokumentatsioon
- SQL injection näide:
- Same-origin policy
- Google Analytics veebikülastajate jälgimise süsteemi kirjeldus
- Detailsemalt 'Same-Origin Policy' kohta: