# Clickjacking
{{#include ../banners/hacktricks-training.md}}
## Š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 nepredviđenih posledica za korisnika, kao što su preuzimanje malvera, preusmeravanje na zlonamerne veb stranice, davanje kredencijala ili osetljivih informacija, transfer novca ili online kupovina proizvoda.
### Prepopunjavanje obrazaca trik
Ponekad je moguće **popuniti vrednost polja obrasca koristeći GET parametre prilikom učitavanja stranice**. Napadač može zloupotrebiti ovo ponašanje da popuni obrazac proizvoljnim podacima i pošalje clickjacking payload kako bi korisnik pritisnuo dugme Pošalji.
### Popuni obrazac sa Drag\&Drop
Ako treba da korisnik **popuni obrazac** ali ne želiš da ga direktno pitaš da unese neke specifične informacije (kao što su email ili specifična lozinka koju znaš), možeš ga jednostavno zamoliti da **Drag\&Drop** nešto što će uneti tvoje kontrolisane podatke kao u [**ovom primeru**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
### Osnovni Payload
```css
Click me
```
### Multistep Payload
```css
Click me first
Click me next
```
### Drag\&Drop + Click payload
```css
.
1. Click and press delete button
3.Click me
2.DRAG ME TO THE RED BOX
```
### 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**, mogli biste to iskoristiti da prevarite korisnika da klikne na dugme/link.\
Primer:\
Pronašli ste **self XSS** u nekim privatnim podacima naloga (podaci koje **samo vi možete postaviti i čitati**). Stranica sa **formom** za postavljanje ovih podataka je **ranjiva** na **Clickjacking** i možete **prepopuniti** **formu** sa GET parametrima.\
Napadač bi mogao pripremiti **Clickjacking** napad na tu stranicu **prepopunjavajući** **formu** sa **XSS payload-om** i **varajući** **korisnika** da **pošalje** formu. Tako, **kada se forma pošalje** i vrednosti su izmenjene, **korisnik će izvršiti XSS**.
### DoubleClickjacking
Prvo [objašnjeno u ovom postu](https://securityaffairs.com/172572/hacking/doubleclickjacking-clickjacking-on-major-websites.html), ova tehnika bi tražila od žrtve da dvaput klikne na dugme na prilagođenoj stranici postavljenoj na specifičnoj lokaciji, i koristi razlike u vremenu između mousedown i onclick događaja da učita stranicu žrtve tokom dvostrukog klika tako da **žrtva zapravo klikne na legitimno dugme na stranici žrtve**.
Primer se može videti u ovom videu: [https://www.youtube.com/watch?v=4rGvRRMrD18](https://www.youtube.com/watch?v=4rGvRRMrD18)
Primer koda može se naći na [ovoj stranici](https://www.paulosyibelo.com/2024/12/doubleclickjacking-what.html).
> [!WARNING]
> Ova tehnika omogućava prevaru korisnika da klikne na 1 mesto na stranici žrtve zaobilazeći svaku zaštitu protiv clickjacking-a. Tako da napadač treba da pronađe **osetljive akcije koje se mogu izvršiti sa samo 1 klikom, kao što su OAuth prompte za prihvatanje dozvola**.
## Strategije za ublažavanje Clickjacking-a
### Klijentske odbrane
Skripte koje se izvršavaju na klijentskoj strani mogu izvesti radnje da spreče Clickjacking:
- Osiguranje da je prozor aplikacije glavni ili gornji prozor.
- Činjenje svih okvira vidljivim.
- Sprečavanje klikova na nevidljive okvire.
- Otkrivanje i upozoravanje korisnika na potencijalne pokušaje Clickjacking-a.
Međutim, ovi skripti za razbijanje okvira mogu biti zaobiđeni:
- **Bezbednosne postavke pregledača:** Neki pregledači mogu blokirati ove skripte na osnovu svojih bezbednosnih postavki ili nedostatka podrške za JavaScript.
- **HTML5 iframe `sandbox` atribut:** Napadač može neutralisati skripte za razbijanje okvira postavljanjem `sandbox` atributa sa `allow-forms` ili `allow-scripts` vrednostima bez `allow-top-navigation`. Ovo sprečava iframe da proveri da li je on gornji prozor, npr.,
```html
```
`allow-forms` i `allow-scripts` vrednosti omogućavaju akcije unutar iframe-a dok onemogućavaju navigaciju na vrhunskom nivou. Da bi se osigurala nameravana funkcionalnost ciljanog sajta, dodatne dozvole kao što su `allow-same-origin` i `allow-modals` mogu biti neophodne, u zavisnosti od tipa napada. Poruke u konzoli pretraživača mogu pomoći u određivanju koje dozvole treba dozvoliti.
### Server-Side Defenses
#### X-Frame-Options
**`X-Frame-Options` HTTP odgovor header** obaveštava pretraživače o legitimnosti prikazivanja stranice u `` ili `