V tem članku boste od aplikacije pridobili zahtevane informacije, da boste vedeli, kaj mora storiti napadalno mesto za pošiljanje veljavnih zahtev ranljivemu strežniku. Nato boste ustvarili stran, ki simulira zakonite zahteve in uporabnika zvabi, da obišče to stran med preverjanjem pristnosti. Naredili boste tudi nekaj ponovitev osnovnega dokaza koncepta, da bo videti bolj kot napad iz resničnega sveta, kjer ga žrtev ne opazi. Upoštevajte, da je kodno datoteko tega članka mogoče najti v avtorjevem githubu.
Pripravljati se
Za ta članek boste potrebovali veljaven uporabniški račun v BodgeIt. Ta članek uporablja [e-pošta zaščitena]
kot žrtev:
Kako narediti…
Najprej morate analizirati prošnjo, ki jo želite prisiliti žrtev. Če želite to narediti, potrebujete Burp Suite ali drug strežnik proxy, konfiguriran v brskalniku:
- Prijavite se v BodgeIt kot kateri koli uporabnik in kliknite uporabniško ime, da odprete profil.
- Spremenite geslo. Oglejte si, kako je videti zahteva v strežniku proxy:
Torej je
OBJAVI
zahteva dohttp: // 192.168.56.11 / bodgeit / geslo.jsp,
in ima v telesu samo geslo in njegovo potrditev. - Poskusite narediti zelo preprosto HTML stran, ki podvaja to zahtevo. Ustvari datoteko (poimenuj jo
csrf-change-password.html
) z naslednjo vsebino:
- Zdaj naložite to datoteko v isti brskalnik kot prijavljena seja:
- Kliknite »Pošlji« in preusmerjeni boste na stran s profilom uporabnika. Povedal vam bo, da je bilo geslo uspešno posodobljeno.
- Čeprav to dokazuje bistvo, lahko zunanje spletno mesto (ali lokalna stran HTML kot v tem primeru) izvede zahtevo za spremembo gesla v aplikaciji. Še vedno je malo verjetno, da bo uporabnik kliknil na Pošlji Lahko ga avtomatizirate in skrijete vnosna polja, tako da je zlonamerna vsebina skrita. Zdaj naredite novo stran na podlagi prejšnje; pokliči
csrf-change-password-script.html
:Popolnoma neškodljiva stran
To stran lahko zaupate.
Z vami ali vašim računom BodgeIt se ne bo zgodilo nič slabega.
Tokrat ima obrazec parameter ID in na strani je skript, ki bo poslal svojo vsebino, ko bo stran v celoti naložena.
- Če naložite to stran v isti brskalnik, v katerem je bila uvedena seja BodgeIt, bo samodejno poslala zahtevo in po tem se bo prikazala stran s profilom uporabnika. Na naslednjem posnetku zaslona brskalnika Razhroščevalecnastavite točko prekinitve tik pred zahtevo:
- Ta zadnji poskus je videti boljši z vidika napadalca. Žrtev potrebujete samo za nalaganje strani in zahteva bo poslana samodejno, nato pa bo žrtev videla Vaše geslo je bilo spremenjenosporočilo in to bo zagotovo opozorilo.
- Napadajočo stran lahko še izboljšate tako, da naloži odgovor v neviden okvir znotraj iste strani. Za to obstaja veliko načinov; hitra in umazana je nastavitev velikosti 0 za okvir. Vaša datoteka bi izgledala takole:
Popolnoma neškodljiva stran
To stran lahko zaupate.
Z vami ali vašim računom BodgeIt se ne bo zgodilo nič slabega.
Upoštevajte, kako je ciljna lastnost obrazca iframe, definiran tik pod njim, in da ima tak okvir 0% višine in širine.
- Novo stran naložite v brskalnik, kjer je bila seja začeta. Ta posnetek zaslona prikazuje, kako izgleda stran, ko jo pregledate z brskalnikom Orodja za razvijalce: Opazite, da je objekt iframe samo črna črta na strani in v programu Inspector lahko vidite, da vsebuje stran s profilom uporabnika BodgeIt.
- Če analizirate omrežne komunikacije, ki jih izvaja vaša stran CSRF, lahko vidite, da dejansko pošilja zahteve za spremembo gesla BodgeIt:
Kako deluje…
Ko pošljete zahtevo iz brskalnika in že imate shranjen piškotek, ki pripada ciljni domeni, bo brskalnik priložil piškotek zahtevi, preden bo poslana. To je tisto, zaradi česar so piškotki tako priročni kot identifikatorji sej, vendar je zaradi tega, kako deluje HTTP, tudi ranljiv za napad, kakršnega ste videli v tem članku.
Ko naložite stran v isti brskalnik, kjer imate aktivno aplikacijo, brskalnik samodejno priloži sejni piškotek tej zahtevi. To se zgodi, tudi če gre za drug zavihek ali okno in ta stran pošlje zahtevo domeni, v kateri se seja začne.
Če strežnik ne preveri, ali zahteve, ki jih prejema, dejansko izvirajo iz aplikacije, zlonamernemu spletnemu mestu omogoča klicanje v imenu zakonitih, aktivnih uporabnikov, ki obiščejo to zlonamerno spletno mesto, medtem ko so overjeni v ciljni domeni.
V preizkusu penetracije spletne aplikacije prva koda, ki ste jo uporabili, tista z dvema besedilnima polji in Pošlji gumb lahko zadostuje za dokazovanje prisotnosti varnostne napake. Vendar pa je testiranje penetracije aplikacije lahko del drugega posla, kot je socialni inženiring ali vaja rdeče ekipe. V tem primeru bo treba nekaj dodatnih naporov preprečiti, da bi žrtev uporabnik sumil, da se nekaj dogaja.
V tem članku ste z JavaScriptom avtomatizirali pošiljanje zahteve tako, da ste na strani nastavili dogodek ob nalaganju in izvedli način oddaje obrazca v funkciji obdelave dogodkov. Za nalaganje odziva na spremembo gesla ste uporabili tudi skriti iframe, tako da žrtev nikoli ne vidi sporočila, da se je njegovo / njeno geslo spremenilo.
Če se vam zdi ta članek zanimiv, lahko raziščete Kuharska knjiga za preizkušanje spletnega prodiranja Kali Linux - druga izdaja odkriti najpogostejše spletne ranljivosti in preprečiti, da bi postale nevarne za varnost vašega spletnega mesta. Kuharska knjiga za preizkušanje spletnega prodiranja Kali Linux - druga izdaja vam daje veščine, ki jih potrebujete za pokrivanje vseh stopenj preizkusa penetracije - od zbiranja informacij o sistemu in aplikaciji do prepoznavanja ranljivosti z ročnim testiranjem.