ZAP - pentesting alat

ZAP - pentesting alat

Napad je najbolja obrana

Zed Attack Proxy (ZAP) je besplatan i open-source alat organizacije SSP (The Software Security Project) za sigurnosno skeniranje, odnosno sigurnosno testiranje web aplikacija. Koristi se u sigurnosnom testiranju kao penetration testing (pentesting) alat.

Prije nego što krenemo u instalaciju i podešavanje ZAP alata, važno je napomenuti da ZAP alat ne koristite na javnim stranicama i aplikacijama bez dozvole vlasnika stranica/aplikacija jer ZAP u stvarnom vremenu izvršava napada na stranice i aplikacije prema kojima ih uputite.

Što nam sve ZAP nudi?

ZAP nam između ostalog nudi automatsko skeniranje aplikacija i stranica, ručno testiranje, aktivno i pasivno skeniranje, upravljanje sesijama, tradicionalne i Ajax spidere, automatiziranu izradu izvještaja, razne integracije te fuzzing.

Proxy

Prije nego što prijeđemo na kratak opis svake od funkcionalnosti, morate znati da se ZAP ponaša kao „man-in-the-middle proxy“, a to znači da presreće, sprema i analizira sav promet između vašeg preglednika i web aplikacije koju testirate, a na slici 1 možete vidjeti kako to izgleda.

Što je pentesting?

Pentesting je pristup sigurnosnom testiranju gdje sigurnosni tester pokušava hakirati aplikaciju ili sustav u kontroliranom okruženju i uz dopuštenje vlasnika aplikacije ili sustava. Sastoji se od nekoliko faza kao što su istraživanje i priprema za kontrolirani napad, izvršavanje samog napada te dokumentiranje izvršenih napada i njihovih rezultata u obliku izvještaja za korisnike koji su naručili pentest.

Sada kada ste s arhitekturne strane vidjeli gdje se ZAP nalazi, možemo krenuti s kratkim objašnjavanjem funkcionalnosti.

Aktivno i pasivno skeniranje

Kod pasivnog skeniranja ZAP provjerava svaki HTTP (Hyper Text Transfer Protocol) zahtjev i odgovor te pokušava pronaći ranjivosti. Kod ovog skeniranja se ne modificiraju HTTP zahtjevi i odgovori, nego se, kao što i samo ime kaže, pasivno promatraju. Kod aktivnog skeniranja mijenjaju se zahtjevi i šalju nestandardni podaci koji mogu izazvati nepredviđeno ponašanje testirane aplikacije.

Upravljanje sesijama

Upravljanje sesijama nam omogućava spremanje svih zahtjeva i njihovih rezultata u lokalnu bazu podataka (koja dolazi u instalacijskom paketu s ZAP-om) za kasniju analizu.

Pauci

ZAP nam nudi dvije vrste pauka (spider) - tradicionalnog i Ajax. Tradicionalni pauk analizira HTML (Hyper Text Markup Language - jezik kojim se izrađuju web stranice) stranicu i pokušava pronaći linkove (<a> HTML elemente). Linkovi omogućavaju otkrivanje svega onoga što web aplikacija ili stranica sadrži, odnosno njihovu hijerarhiju. Ajax pauk pokušava pronaći u JavaScript programskom kodu sve HTTP pozive, odnosno zahtjeve prema aplikaciji te tako otkriti hijerarhiju stranice.

Ručno testiranje

Kao i sve u životu, ništa nije jednostavno, pa tako i rijetko kada možete provaliti u web aplikaciju samim automatskim skenovima i paucima, no oni su jako dobri u fazi istraživanja i otkrivanja strukture web stranice, a nakon što se „izvrti“ automatika, možemo raditi i manualno istraživanje web aplikacije. Kako je ZAP proxy između preglednika i web aplikacije te hvata razmijenjene podatke, možemo klikati po web aplikaciji i vidjeti podatke koji se razmjenjuju, a uz to možemo ih i mijenjati te gledati kako se web aplikacija ponaša.

Fuzzing

Fuzzing je tehnika gdje ručno odabiremo podatke koje šaljemo u web aplikaciju, jer je poanta da pošaljemo nepredviđene podatke i promatramo kako se web aplikacija ponaša. Npr. aplikacija nas traži unos broja, a mi pokušavamo unijeti rečenice te radosno promatramo što se događa i planiramo iduće korake.

Automatsko skeniranje

Automatsko skeniranje sadrži skup radnji, a počinje s pasivnim skeniranjem svake stranice koju otkrije. Nakon pasivnog skeniranja nastavlja s aktivnim skeniranjem, što znači pokušaj iskorištavanja poznatih ranjivosti nad otkrivenim stranicama i funkcionalnostima. Nakon toga će pustiti pauke da pokušaju otkriti čim više informacija o web aplikaciji te će je pokušati strukturirati.

Izvještaji

Nakon svih navedenih funkcionalnosti postoji i mogućnost automatske izrade izvještaja, a predefinirane izvještaje moguće je pregledati na https://www.zaproxy.org/docs/desktop/addons/report-generation/templates/. Kasnije ćemo i vidjeti primjer izvještaja - kada budemo isprobavali nekoliko napada na aplikaciju.

 

1. Kako preuzeti i instalirati ZAP?

ZAP se može preuzeti na više načina, a mi smo se odlučili za Windows Installer. Odlaskom na stranicu https://www.zaproxy.org/download/ preuzmite Windows Installer (tamo možete pročitati i upute za ostale načine preuzimanja) prema slici 2. Nakon što ste preuzeli Windows Installer, pratite standardne upute (Next→Next→Finish).

 

Slika2-zet.jpg

Slika 2. Preuzimanje Windows Installera

 

2. Kako možemo koristiti ZAP?

ZAP dolazi u više načina rada - desktop, API (Application Programming Interface) i HUD (Heads Up Display). Desktop i HUD način rada su pogodni za istraživanje aplikacije i te načine ćemo i koristiti, dok je API način rada pogodan za automatizaciju.

3. Pokretanje projekta

ZAP pokrećemo kao desktop aplikaciju. Pronađemo je kroz Windows Search tipkajući ključnu riječ ZAP, ili dvostrukim klikom na ikonu ZAP na radnoj površini (desktopu). Otvarajući aplikaciju dobijemo ekran kao na slici 3.
Odabiremo treću radio button opciju „No, I do not want to persist this session at this moment in time“. Opcije možemo kasnije i mijenjati, a ako odaberemo spremanje sesija, spremat će se u lokalnu bazu podataka te tako mogu biti dostupne kasnije za analizu. Na slici 4 možemo vidjeti početni ekran ZAP aplikacije koji se sastoji od nekoliko elemenata. U najvećem prozoru na slici 4 pod brojem 1 vidimo tri ikone – Automated Scan, Manual Explore i Learn More, i u njemu će se vidjeti detalji zahtjeva nakon izvršavanja napada i testiranja. Na slici 4 pod brojem 2 možemo vidjeti stablasti prikaz stranice ili aplikacije koju istražujemo (hakiramo), dok pod brojem 3 vidimo prozor na kojem će se ispisati detalji upotrijebljenih alata.

 

Slika3-zet.jpg

Slika 3. Inicijalno podešavanje ZAP-a

 

Slika4-zet.jpg

Slika 4. Inicijalni ekran ZAP-a

 

4. Što ćemo hakirati?

Hakirat ćemo OWASP-ovu poznatu ranjivu aplikaciju Juice Shop. Kako bismo je mogli hakirati, prvo je moramo instalirati, a kako bismo pojednostavnili i ubrzali proces instalacije, odlučili smo se za Docker image. Preduvjet je da imate instaliran Docker na svojem računalu, a ako nemate, možete ga preuzeti s https://docs.docker.com/get-docker/. Nakon što ste ga preuzeli, otvorite konzolu i utipkajte:

→ docker pull bkimminich/juice-shop, zatim
→ docker run --rm -p 3000:3000 bkimminich/juice-shop, te pogledajte na adresi http:localhost:3000 svoju aplikaciju i provjerite radi li kako treba. Trebali biste vidjeti aplikaciju kao na slici 5.

Sada ste spremni za korištenje ZAP alata!

 

Slika5-zet.jpg

Slika 5. OWASP Juice Shop početni ekran

 

ZAP projekt je inicijalno bio pod organizacijom OWASP (Open Worldwide Application Security Project), a od 1. kolovoza 2023. prelazi u SSP (The Software Security Project) Linux Foundationa. Za više informacija o samom SSP-u i Linux Foundationu možete posjetiti njihovu stranicu https://softwaresecurityproject.org/ .

5. Juice Shop ZAP automatsko skeniranje

Nakon što ste pokrenuli svoj Juice Shop i ZAP alat, otići ćemo u ZAP i odabrati Automated Scan kojeg možete vidjeti pod brojem 1 na slici 4. Nakon što ste kliknuli, otvara se ekran kao na slici 6.

 

Slika6-zet.jpg

Slika 6. Detalji automatskog skeniranja i odabir URL-a

 

U gornjem pravokutniku na slici 6 možete vidjeti polje za unos URL-a web aplikacije za napad, a mi smo upisali http://localhost:3000 što je lokalna adresa naše Juice Shop web aplikacije. Donji pravokutnik označava odabir web preglednika pomoću kojeg ćete koristiti pauke, a mi smo odabrali Chrome Headless. Headless označava da će se preglednik izvršavati u pozadini. Kada ste sve pripremili, kliknite gumb Attack koji je na slici 6 označen ikonom žutog groma, te čekamo da se automatski napad izvrši.

 

Slika7-zet.jpg

Slika 7. Rezultati automatskog skeniranja Juice Shopa

 

Na slici 7 u donjem crvenom pravokutniku možete vidjeti da su se izvršili pauci (Spider), aktivno skeniranje (Active Scan) te WebSocketi. Rezultate svakog od napada možemo pomno promotriti u prozoru na dnu ekrana, a s gornje lijeve stranice, opet u crvenom pravokutniku, možemo vidjeti rezultat našeg skeniranja – strukturu Juice Shop web aplikacije. Možemo uočiti direktorij ftp gdje se skrivaju tajne datoteke kao što su acquisitions.md, announcement_encrypted.md, coupons_2013.md.bak, easter.gg, encrypt.pyc i ostale. Već s automatskim skeniranjem, odnosno istraživanjem web aplikacije otkrili smo neke ranjivosti tj. skrivene direktorije.

Otvarajući web aplikaciju možemo vidjeti da je automatsko skeniranje već riješilo nekoliko hakerskih izazova na Juice Shop web aplikaciji, što možemo vidjeti i na slici 8.

 

Slika8-zet.jpg

Slika 8. Juice Shop s otkrivenim ranjivostima

 

Želimo li posjetiti neku od otkrivenih stranica unutar ftp direktorija, to možemo učiniti pomoću ZAP alata. Potrebno je odabrati stranicu unutar ftp direktorija te desnim klikom otvoriti kontekstni meni na kojem izaberete Open URL in System Browser što će otvoriti stranicu u vašem predodređenom sistemskom pregledniku, a sve to možete detaljno vidjeti na slici 9 pod brojem 1.

 

Slika9-zet.jpg

Slika 9. Odlazak na otkrivenu stranicu iz ZAP-a

 

Još jedna zanimljiva informacija se nalazi pri dnu ekrana na tabu Alerts kojeg možete uočiti u crvenom pravokutniku na slici 10. Na slici 10 ispod taba Alerts također možete uočiti sve potencijalne ranjivosti koje su otkrivene na stranici. Odabirom jedne od nje, u našem slučaju Content Security Policy (CSP) Header Not Set (56), možemo vidjeti kako nam se s desne strane otvaraju detalji. Pod brojem 1 možemo vidjeti na koje se izvore podataka naša prijetnja veže, a to je CWE ID: 693, te pod brojem 2 vidimo kratak opis prijetnje, a pod brojem 3 akcijske korake koje možemo poduzeti kako bismo ju spriječili. Konačno, pod brojem 4 vidimo koje su to kategorije unutar OWASP TOP 10 ranjivosti.

 

Slika10-zet.jpg

Slika 10. Alerts tab

 

ZAP i OWASP Top 10 2021

U VIDI broju 334 mogli ste se detaljnije upoznati s OWASP TOP 10 ranjivosti, a ako niste, radi se o dokumentu koji opisuje deset najčešćih ranjivosti web aplikacija i načinima na koje se one mogu ublažiti. Pitate se zašto sada govorimo o Top 10 ranjivosti? Jednostavno, službene stranice ZAP-a opisuju kako pomoću ZAP alata možete provjeriti jesu li vaše aplikacije ranjive prema OWASP Top 10, a više možete saznati na linku - https://www.zaproxy.org/docs/guides/zapping-the-top-10-2021/.

6. Izrada izvještaja

Kada smo uspješno izvršili automatsko skeniranje, vrijeme je za generiranje izvještaja kojeg možemo ustupiti razvojnom timu da ga prouči i implementira kontrole kako bi spriječio i/ili ublažio ranjivosti u svojim aplikacijama. Kako generiramo izvještaj? Vrlo jednostavno, potrebno je u zaglavlju ZAP-a odabrati Report opciju, a unutar nje Generate Report. Nakon odabira otvorit će nam se ekran Generate Report kao na slici 11.

 

Slika11-zet.jpg

Slika 11. Odabir izvještaja

 

Na slici 11 pod brojem 1 imamo izbor generiranja raznih izvještaja, a mi smo se odlučili za izvještaj Modern HTML Report with themes and options. Moguće je, između ostalog, još odabrati teme (boje), naziv izvještaja i elemente koji će se prikazivati te lokacije spremanja. Nakon što ste gotovi, na dnu pritisnite Generate Report gumb te će se otvoriti izvještaj kao na slici 12. Jedino što još trebate jest prenijeti taj izvještaj zainteresiranim osobama (razvojnim timovima).

 

Slika12-zet.jpg

Slika 12. Izvještaj ranjivosti aplikacije

 

7. Juice Shop i ručno testiranje

Idemo istražiti kako podesiti ručno testiranje, odnosno istraživanje aplikacije. Vratimo se na sliku 4 pod brojem 1 gdje možemo vidjeti načine pokretanja testiranja i istraživanja aplikacije, a ovaj put ćemo odabrati Manual Explore. Nakon što smo kliknuli, otvara nam se ekran naziva Manual Explore s poljima za unos URL-a za istraživanje, kao što možete vidjeti na slici 13.

 

Slika13-zet.jpg

Slika 13. Manual Explore

 

Utipkajte URL svojeg Juice Shopa u polje URL to explore, a u našem slučaju to je bio http://localhost:3000/#/. U polju Explore your application imamo odabir preglednika kroz koji želimo izvršiti istraživanja. U našem slučaju to je Chrome, a vi sebi odaberite onaj preglednik koji imate instaliran na svojem računalu. Sada ste spremni za istraživanje i možete kliknuti na gumb Launch Browser!

Svašta se dogodilo! ZAP je počeo generirati zapise i otvorio se vaš odabrani preglednik u HUD obliku rada. Kako to izgleda, možete vidjeti na slici 14. Na slici 14 u gornjem lijevom kutu možete vidjeti poruku da je vaš preglednik kontroliran od strane ZAP aplikacije – Chrome is being controlled by automated test software. Što nam pruža HUD način rada? On nam pruža dio funkcionalnosti koje imamo u samoj ZAP aplikaciji kako bi nam uštedio vrijeme prelaska naprijed i nazad s preglednika na ZAP aplikaciju.

Možete primijetiti da ima dodatne kontrole s lijeve i desne strane koje su iste kao u ZAP-u. Mi nećemo dalje nastaviti tutorial o HUD načinu rada, nego ćemo odmah prijeći na istraživanje te ćemo kliknuti na Continue to your target što vidimo u crvenom pravokutniku s desne strane slike 14. Kako nam se tutorial ne bi pojavljivao svaki put kada radimo ručno istraživanje, možemo odabrati checkbox Don’t show this screen again.

 

Slika14-zet.jpg

Slika 14. Heads Up Display

 

Kako ćemo klikati po Juice Shop aplikaciji, tako će nam se generirati zapisi i hijerarhija stranice i potencijalni API-ji u ZAP-u. Probajte pretražiti proizvode, otići na stranicu za prijavu i registraciju te promatrajte ZAP. Mi smo pregledali proizvode i njihove recenzije te smo uočili da se na jednoj stranici spominje administrator kao recenzent (reviewer za one kojima je engleski draži), što možemo vidjeti na slici 15, a zašto nam je to bitno, saznat ćemo uskoro.

 

Slika15-zet.jpg

Slika 15. Primjer surfanja po proizvodima Juice Shop aplikacije

 

Nastavili smo klikati po aplikaciji po svim dostupnim izbornicima, pokušali se prijaviti sa slučajnim korisnikom, a sa ciljem da dobijemo čim više informacija o stranicama i servisima na samoj Juice Shop aplikaciji. Nakon što smo se umorili od klikanja, dobili smo rezultate koje možemo vidjeti u ZAP aplikaciji na slici 16.

 

Slika16-zet.jpg

 Slika 16. Generiranje podataka u ZAP aplikaciji

 

Primijetimo koliko se podataka generiralo, a nama je jako zanimljiv rest/user direktorij s POST naslovom koji možemo uočiti kao označen sivom bojom s lijeve strane ekrana, a klikom na njega, s desne strane ekrana nam se otvaraju informacije koje smo poslali na poslužitelj, te vidimo e-mail i password koje smo poslali, zar ne?

8. Brute force password hack

Pronašli smo administratorski email u Juice Shop aplikaciji – Ova e-mail adresa je zaštićena od spambota. Potrebno je omogućiti JavaScript da je vidite. koji možemo vidjeti na slici 15 (sada znamo zašto je važan). Idući korak je pokušaj prijave u aplikaciju pogađanjem lozinke. Naravno, nećemo ručno unositi lozinke, nego ćemo web istraživanjem, tj. guglanjem pronaći liste s najčešćim lozinkama (kao pravi haker) i dati ZAP aplikaciji da unos svih tih lozinki odradi umjesto nas na automatizirani način. Naišli smo na tekstualni direktorij koji sadrži 1.050 najčešćih lozinki, a direktorij ćemo preuzeti s URL-a https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/best1050.txt i iskoristit ćemo ga kod pogađanja lozinki. Slijede koraci kako ćemo to odraditi.

Na rest/user direktoriju možete odabrati POST login datoteku te napraviti desni klik. Nakon toga u otvorenom kontekstualnom izborniku odaberite Attack te Fuzz, a sve to možete vidjeti na slici 17 prateći crvene strelice.

 

Slika17-zet.jpg

Slika 17. Odabir Fuzz napada

 

Nakon što smo odabrali Fuzz napad, otvorit će se dijaloški okvir kao na slici 18. Moramo označiti koji dio teksta će se mijenjati, odnosno kako će se lozinke mijenjati, a to radimo tako da mišem označimo vrijednost unutar navodnika kod password-a što možemo vidjeti na slici 18 pod brojem 1. Kada označimo vrijednost (u našem slučaju, vrijednost je 123), kliknemo na Add pod brojem 2 koji otvara još jedan dijaloški okvir na kojem opet stisnemo Add, što je vidljivo pod brojem 3. Ne biste vjerovali, ali otvara se još jedan i konačni dijaloški okvir gdje odabiremo čime ćemo zamijeniti naš password s vrijednošću 123, a to je tekstualna datoteka (File) koju smo ranije preuzeli, što možemo vidjeti pod brojem 4, i odabir mjesta na datotečnom sustavu gdje se ona nalazi, što možemo vidjeti pod brojem 5.

Kako bismo bili sigurni da su to lozinke koje smo ranije preuzeli, možemo vidjeti njihove vrijednosti na slici 18 pod Payload Preview
(0, 00000…).

 

Slika18-zet.jpg

Slika 18. Odabir izvora podataka za brute force napad

 

Sada kada smo sve pripremili, možemo stisnuti gumb Add pod brojem 6 na slici 18, pa opet Add na prethodnom okviru dok ne dobijemo dijaloški okvir kao na slici 19, a nakon toga i konačno pritisnemo na gumb Start Fuzzer koji se nalazi na dnu zaokružen crvenom bojom te se lijepo naslonimo u svojoj stolici i gledamo ZAP kako radi svoj napad silom (brute force).

Pričekamo da se statusna traka napuni do 100%, pa možemo polagano proučavati koje su lozinke prošle na tabu Fuzzer na dnu ZAP ekrana. Vidimo da u stupcu Code na slici 20 dominira jedna vrsta koda, a to je 401 Unauthorized (vjerujemo da znate što to znači). Cilj nam je pronaći kod 200 OK što znači da je prijava s administratorskim računom Ova e-mail adresa je zaštićena od spambota. Potrebno je omogućiti JavaScript da je vidite. prošla, što ćemo uočiti ako listamo malo niže. Primijetite s lijeve strane slike 20 kod - 200 OK, a s desne strane je lozinka koja se uspješno prijavila s administratorskim računom – admin123. Pokušajte se prijaviti u Juice Shop aplikaciju i vidjet ćete da prolazi.

 

Slika19-zet.jpg

Slika 19. Konačan ekran za početak napada Fuzzom

 

Zanimljivi alati

Ako vas i dalje zanima pentesting, možete proučiti ove alate:
1. Kali Linux – Linux operacijski sustav specijaliziran za penetracijsko testiranje, opremljen sa svim potrebnim alatima, o kojem više možete pročitati u časopisu VIDI br. 337
2. Wireshark - izuzetno dobar alat za detaljnu analizu mrežnog prometa
3. Burp Suite – ZAP na steroidima, olakšava sve osnovne radnje, postoji Community i Professional verzija, a naravno, razlika je u funkcionalnostima
4. nmap – jako dobar alat za mapiranje otvorenih portova
5. sqlmap – alat stvoren za SQL Injection napade, moguće je automatizirati otkrivanje i napadanje poznatih SQL ranjivosti
6. aircrack-ng – možete saznati koliko je siguran vaš Wi-Fi kod kuće

Završno

Iako smo to već napomenuli na početku, moramo opet naglasiti da je ZAP alat za pentesting i može naštetiti aplikaciji/stranici/sustavu kojeg istražujete ili testirate. Koristite ga na aplikacijama na svojem računalu u kontroliranim uvjetima ili na stranicama/sustavima/aplikacijama za koje imate eksplicitne dozvole vlasnika!

 

Slika20-zet.jpg

Slika 20. Rezultati Fuzz napada

 

Bravo! Uspješno ste napravili napad Fuzz metodom na Juice Shop aplikaciju!

 

 

 

Ocijeni sadržaj
(0 glasova)

// možda će vas zanimati

Newsletter prijava


Kako izgleda naš posljednji newsletter pogledajte na ovom linku.

Copyright © by: VIDI-TO d.o.o. Sva prava pridržana.