.. | ||
cookie-bomb.md | ||
cookie-jar-overflow.md | ||
cookie-tossing.md | ||
README.md |
Udukuzi wa Vidakuzi
Jifunze udukuzi wa 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 inayotangazwa katika HackTricks au kupakua HackTricks katika PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi ya PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa kipekee wa NFTs
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za udukuzi kwa kuwasilisha PR kwa HackTricks na HackTricks Cloud repos za github.
Pata udhaifu unaowajali zaidi ili uweze kuzirekebisha haraka. Intruder inafuatilia eneo lako la shambulio, inafanya uchunguzi wa vitisho wa kujitokeza, inapata masuala katika mfumo wako wa teknolojia mzima, kutoka kwa APIs hadi programu za wavuti na mifumo ya wingu. Jaribu bure leo.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
Vigezo vya Vidakuzi
Vidakuzi huja na vigezo kadhaa vinavyodhibiti tabia yao kwenye kivinjari cha mtumiaji. Hapa kuna muhtasari wa vigezo hivi kwa sauti ya kupitisha zaidi:
Inatimia na Max-Age
Tarehe ya kumalizika ya kuki inategemea sifa ya Inatimia
. Kwa upande mwingine, sifa ya Max-age
inafafanua wakati katika sekunde hadi kuki ifutwe. Chagua Max-age
kwani inaonyesha mazoea ya kisasa zaidi.
Kikoa
Wenyeji wanaopokea kuki hupangwa na sifa ya Kikoa
. Kwa chaguo-msingi, hii imewekwa kwa mwenyeji ambaye alitoa kuki hiyo, bila kujumuisha subdomains yake. Walakini, wakati sifa ya Kikoa
inawekwa wazi, inajumuisha pia subdomains. Hii inafanya kuweka sifa ya Kikoa
kuwa chaguo lisilokuwa na kizuizi, inayofaa kwa hali ambapo kushiriki kuki kati ya subdomains ni muhimu. Kwa mfano, kuweka Kikoa=mozilla.org
kunafanya vidakuzi kupatikana kwenye subdomains kama developer.mozilla.org
.
Njia
Njia maalum ya URL ambayo lazima iwe wazi kwenye URL ili kichwa cha Kuki
kitumwe inaonyeshwa na sifa ya Njia
. Sifa hii inazingatia herufi ya /
kama kipambanuzi cha saraka, kuruhusu mechi katika saraka za ndani pia.
Kanuni za Upangaji
Wakati vidakuzi viwili vina jina sawa, kile kinachochaguliwa kutumwa kinategemea:
- Kuki inayolingana na njia ndefu zaidi kwenye URL iliyoombwa.
- Kuki iliyoanzishwa hivi karibuni zaidi ikiwa njia zinafanana.
SameSite
- Sifa ya
SameSite
inaamuru ikiwa vidakuzi vitatumwa kwenye maombi yanayotoka kwenye vikoa vya tatu. Inatoa mipangilio mitatu: - Strict: Inazuia kuki kutumwa kwenye maombi ya vikoa vya tatu.
- Lax: Inaruhusu kuki kutumwa na maombi ya GET yaliyoanzishwa na tovuti za vikoa vya tatu.
- None: Inaruhusu kuki kutumwa kutoka kwa kikoa chochote cha tatu.
Kumbuka, wakati unapoweka vidakuzi, kuelewa sifa hizi kunaweza kusaidia kuhakikisha kuwa vinatenda kama inavyotarajiwa katika hali tofauti.
Aina ya Ombi | Nambari ya Mfano | Vidakuzi Vinavyotumwa Wakati |
---|---|---|
Kiungo | <a href="..."></a> | NotSet*, Lax, None |
Prerender | <link rel="prerender" href=".."/> | NotSet*, Lax, None |
Fomu GET | <form method="GET" action="..."> | NotSet*, Lax, None |
Fomu POST | <form method="POST" action="..."> | NotSet*, None |
iframe | <iframe src="..."></iframe> | NotSet*, None |
AJAX | $.get("...") | NotSet*, None |
Picha | <img src="..."> | NetSet*, None |
Jedwali kutoka Invicti na limebadilishwa kidogo.
Vidakuzi vyenye sifa ya SameSite vitasaidia kupunguza mashambulizi ya CSRF ambapo kikao kilichosajiliwa kinahitajika.
*Tafadhali kumbuka kuwa kutoka Chrome80 (Feb/2019) tabia ya msingi ya kuki bila sifa ya samesite ya kuki itakuwa lax (https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/).
Tafadhali kumbuka kuwa kwa muda, baada ya kufanya mabadiliko haya, vidakuzi bila sera ya SameSite katika Chrome vitatibiwa kama None kwa dakika 2 za kwanza na kisha kama Lax kwa ombi za POST za kiwango cha juu cha tovuti.
Bendera za Vidakuzi
HttpOnly
Hii inazuia mteja kufikia kuki (Kupitia Javascript kwa mfano: document.cookie
)
Kuvuka
- Ikiwa ukurasa unatuma vidakuzi kama jibu la ombi (kwa mfano katika ukurasa wa PHPinfo), inawezekana kutumia XSS kupeleka ombi kwenye ukurasa huu na kuiba vidakuzi kutoka kwa jibu (angalia mfano katika https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/.
- Hii inaweza kuvukwa na ombi za TRACE HTTP kama majibu kutoka kwa seva (ikiwa njia hii ya HTTP inapatikana) yataonyesha vidakuzi vilivyotumwa. Mbinu hii inaitwa Ufuatiliaji wa Msalaba-Site.
- Mbinu hii inazuiliwa na vivinjari vya kisasa kwa kutokuruhusu kutuma ombi la TRACE kutoka kwa JS. Walakini, njia kadhaa za kuvuka hii zimepatikana katika programu maalum kama kutuma
\r\nTRACE
badala yaTRACE
kwa IE6.0 SP2. - Njia nyingine ni kutumia udhaifu wa siku sifuri wa vivinjari.
- Inawezekana kubadilisha vidakuzi vya HttpOnly kwa kutekeleza shambulio la kujaza kuki:
{% content-ref url="cookie-jar-overflow.md" %}
Vipimo vya Vidakuzi
Vidakuzi vilivyopewa kipengele cha __Secure-
vinahitajika kuwekwa pamoja na bendera ya secure
kutoka kwenye kurasa zilizolindwa na HTTPS.
Kwa vidakuzi vilivyopewa kipengele cha __Host-
, lazima kutosheleza masharti kadhaa:
- Lazima viwekwe na bendera ya
secure
. - Lazima vianze kutoka kwenye ukurasa uliolindwa na HTTPS.
- Hairuhusiwi kutoa kikoa, kuzuia usambazaji wao kwa subdomains.
- Njia ya vidakuzi hivi lazima iwekwe kuwa
/
.
Ni muhimu kuzingatia kwamba vidakuzi vilivyopewa kipengele cha __Host-
haviruhusiwi kutumwa kwa superdomains au subdomains. Kizuizi hiki kinawasaidia kudhibiti vidakuzi vya programu. Hivyo, kutumia kipengele cha __Host-
kwa vidakuzi vyote vya programu kunaweza kuchukuliwa kama mazoea mazuri ya kuimarisha usalama na kudhibiti.
Mashambulizi ya Vidakuzi
Ikiwa kuna data nyeti katika kidakuzi cha desturi, ichunguze (hasa ikiwa unashiriki CTF), kwani inaweza kuwa na udhaifu.
Kuvunja na Kubadilisha Vidakuzi
Data nyeti iliyowekwa kwenye vidakuzi lazima iangaliwe kwa umakini. Vidakuzi vilivyofichwa kwa muundo wa Base64 au muundo sawa mara nyingi vinaweza kuvunjwa. Udhaifu huu unaruhusu wadukuzi kubadilisha maudhui ya kidakuzi na kujifanya kuwa watumiaji wengine kwa kuweka data yao iliyo na mabadiliko kwenye kidakuzi.
Udukuzi wa Kikao
Shambulio hili linahusisha kuiba kidakuzi cha mtumiaji ili kupata ufikiaji usiohalali kwenye akaunti yao ndani ya programu. Kwa kutumia kidakuzi kilichoporwa, mshambuliaji anaweza kujifanya kuwa mtumiaji halali.
Kurekebisha Kikao
Katika hali hii, mshambuliaji anadanganya mhanga kutumia kidakuzi maalum ili kuingia. Ikiwa programu haiweki kidakuzi kipya baada ya kuingia, mshambuliaji, akiwa na kidakuzi cha awali, anaweza kujifanya kuwa mhanga. Mbinu hii inategemea mhanga kuingia kwa kutumia kidakuzi kilichotolewa na mshambuliaji.
Ikiwa umepata XSS kwenye subdomain au unadhibiti subdomain, soma:
{% content-ref url="cookie-tossing.md" %} cookie-tossing.md {% endcontent-ref %}
Kuchangia Kikao
Hapa, mshambuliaji anamshawishi mhanga kutumia kidakuzi cha kikao cha mshambuliaji. Mhanga, akiamini kuwa ameingia kwenye akaunti yake mwenyewe, atafanya vitendo kwa niaba ya akaunti ya mshambuliaji bila kujua.
Ikiwa umepata XSS kwenye subdomain au unadhibiti subdomain, soma:
{% content-ref url="cookie-tossing.md" %} cookie-tossing.md {% endcontent-ref %}
Vidakuzi vya JWT
Bonyeza kiungo kilichotangulia ili kupata ukurasa unaelezea dosari zinazowezekana katika JWT.
Vidakuzi vya JSON Web Tokens (JWT) vilivyotumika katika vidakuzi pia vinaweza kuwa na udhaifu. Ili kupata habari kamili kuhusu dosari zinazowezekana na jinsi ya kuzitumia, inashauriwa kufikia hati iliyolinkishwa kuhusu kudukua JWT.
Udukuzi wa Ombi la Kuvunja Tovuti (CSRF)
Shambulio hili linawalazimisha watumiaji walioingia kwenye tovuti kutekeleza vitendo visivyotakiwa kwenye programu ya wavuti ambayo wamehakikiwa kwa sasa. Wadukuzi wanaweza kutumia vidakuzi ambavyo huletwa moja kwa moja na kila ombi kwa tovuti yenye udhaifu.
Vidakuzi Tupu
(Angalia maelezo zaidi katika utafiti asilia) Vivinjari huruhusu uundaji wa vidakuzi bila jina, ambavyo vinaweza kuonyeshwa kupitia JavaScript kama ifuatavyo:
document.cookie = "a=v1"
document.cookie = "=test value;" // Setting an empty named cookie
document.cookie = "b=v2"
Matokeo katika kichwa cha habari cha kuki kilichotumwa ni a=v1; thibitisha thamani; b=v2;
. Kwa kushangaza, hii inaruhusu kudhibiti kuki nyingine ikiwa kuki tupu ya jina imewekwa, ikidhibiti kuki nyingine kwa kuweka kuki tupu kwa thamani maalum:
function setCookie(name, value) {
document.cookie = `${name}=${value}`;
}
setCookie("", "a=b"); // Setting the empty cookie modifies another cookie's value
Hii inasababisha kivinjari kutuma kichwa cha kidakuzi kinachotafsiriwa na kila seva ya wavuti kama kidakuzi kinachoitwa a
na thamani b
.
Kosa la Chrome: Tatizo la Kipengele cha Kipengele cha Unicode
Katika Chrome, ikiwa kipengele cha kipengele cha Unicode kipo katika kidakuzi kilichowekwa, document.cookie
inaharibika, ikirudisha kamba tupu baadaye:
document.cookie = "\ud800=meep";
Hii inasababisha document.cookie
kutoa matokeo ya herufi tupu, ikionyesha uharibifu wa kudumu.
Kusafirisha Kuki Kutokana na Matatizo ya Uchambuzi
(Angalia maelezo zaidi katika utafiti asilia) Seva kadhaa za wavuti, ikiwa ni pamoja na zile za Java (Jetty, TomCat, Undertow) na Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), hazishughulikii vizuri herufi za kuki kutokana na msaada uliochakaa wa RFC2965. Zinasoma thamani ya kuki iliyofungwa kwa alama mbili za nukuu kama thamani moja hata kama ina vikolezo, ambavyo kawaida vinapaswa kutenganisha jozi za funguo-na-thamani.
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
Mianya ya Kuingiza Vidukizo vya Kuki
(Angalia maelezo zaidi katika utafiti asilia)
Uchanganuzi usio sahihi wa vidukizo vya kuki na seva, hasa Undertow, Zope, na wale wanaotumia http.cookie.SimpleCookie
na http.cookie.BaseCookie
ya Python, hutoa fursa za mashambulizi ya kuingiza vidukizo vya kuki. Seva hizi hazitenganishi kwa usahihi mwanzo wa vidukizo vipya, kuruhusu wadukuzi kuiga vidukizo vya kuki:
- Undertow inatarajia vidukizo vipya mara moja baada ya thamani iliyonukuliwa bila kuwa na kipande cha nukta na koma.
- Zope inatafuta koma ili kuanza uchanganuzi wa vidukizo vya kuki vifuatavyo.
- Darasa la kuki la Python linaanza uchanganuzi kwenye herufi ya nafasi.
Mianya hii ni hatari hasa katika programu za wavuti zinazotegemea ulinzi wa CSRF kwa kutumia kuki, kwani inaruhusu wadukuzi kuingiza vidukizo vya kuki vya CSRF vilivyodanganyifu, na hivyo kupitisha hatua za usalama. Tatizo hili linazidishwa na namna Python inavyoshughulikia majina ya vidukizo vinavyorudia, ambapo tukio la mwisho linapuuza yale ya awali. Pia inaleta wasiwasi kwa vidukizo vya __Secure-
na __Host-
katika muktadha usio salama na inaweza kusababisha kuepuka idhini wakati vidukizo vinapitishwa kwa seva za nyuma zinazoweza kudanganywa.
Uchunguzi wa Ziada wa Vidukizo Vya Kuki
Uchunguzi wa Msingi
- Kuki ni sawa kila wakati unapofanya kuingia.
- Fanya kuingia nje na jaribu kutumia kuki hiyo hiyo.
- Jaribu kuingia kwa kutumia vifaa 2 (au vivinjari) kwenye akaunti moja kwa kutumia kuki hiyo hiyo.
- Angalia ikiwa kuki ina habari yoyote ndani yake na jaribu kuihariri.
- Jaribu kuunda akaunti kadhaa zenye majina ya mtumiaji yanayofanana na angalia ikiwa unaweza kuona mfanano.
- Angalia chaguo la "kumbuka mimi" ikiwepo ili uone jinsi inavyofanya kazi. Ikiwepo na inaweza kuwa na udhaifu, tumia kuki ya kumbuka mimi bila kuki nyingine yoyote.
- Angalia ikiwa kuki ya awali inafanya kazi hata baada ya kubadilisha nenosiri.
Mashambulizi ya Vidukizo Vya Kuki ya Juu
Ikiwa kuki inabaki sawa (au karibu sawa) unapofanya kuingia, hii inamaanisha labda kuki hiyo inahusiana na uga fulani wa akaunti yako (labda jina la mtumiaji). Kisha unaweza:
- Jaribu kuunda akaunti nyingi na majina ya mtumiaji yanayofanana sana na jaribu kudhanisha jinsi algorithm inavyofanya kazi.
- Jaribu kuvunja nguvu jina la mtumiaji. Ikiwa kuki inahifadhi tu kama njia ya uwakilishi wa jina lako la mtumiaji, basi unaweza kuunda akaunti na jina la mtumiaji "Bmin" na kuvunja nguvu kila biti ya kuki yako kwa sababu moja ya vidukizo utakavyojaribu itakuwa inayomilikiwa na "admin".
- Jaribu Padding Oracle (unaweza kufichua maudhui ya kuki). Tumia padbuster.
Padding Oracle - Mifano ya Padbuster
padbuster <URL/path/when/successfully/login/with/cookie> <COOKIE> <PAD[8-16]>
# When cookies and regular Base64
padbuster http://web.com/index.php u7bvLewln6PJPSAbMb5pFfnCHSEd6olf 8 -cookies auth=u7bvLewln6PJPSAbMb5pFfnCHSEd6olf
# If Base64 urlsafe or hex-lowercase or hex-uppercase --encoding parameter is needed, for example:
padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6
7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2
Padbuster itafanya majaribio kadhaa na itakuuliza hali gani ni hali ya kosa (ile ambayo sio sahihi).
Kisha itaanza kufichua cookie (inaweza kuchukua dakika kadhaa)
Ikiwa shambulio limefanikiwa, basi unaweza kujaribu kuficha herufi ya uchaguzi wako. Kwa mfano, ikiwa ungependa kuficha mtumiaji=msimamizi
padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator
Utekelezaji huu utakupa kuki iliyosimbwa na kuwekwa kwenye string user=administrator.
CBC-MAC
Labda kuki inaweza kuwa na thamani na kusainiwa kwa kutumia CBC. Kwa hivyo, uadilifu wa thamani ni saini iliyoumbwa kwa kutumia CBC na thamani ile ile. Kwa kuwa inashauriwa kutumia IV kama vector tupu, aina hii ya ukaguzi wa uadilifu inaweza kuwa na udhaifu.
Shambulio
- Pata saini ya jina la mtumiaji administ = t
- Pata saini ya jina la mtumiaji rator\x00\x00\x00 XOR t = t'
- Weka thamani administrator+t' katika kuki (t' itakuwa saini halali ya (rator\x00\x00\x00 XOR t) XOR t = rator\x00\x00\x00
ECB
Ikiwa kuki imefichwa kwa kutumia ECB inaweza kuwa na udhaifu.
Unapojiingiza, kuki unayopokea lazima iwe ile ile daima.
Jinsi ya kugundua na kushambulia:
Unda watumiaji 2 na data sawa (jina la mtumiaji, nenosiri, barua pepe, nk.) na jaribu kugundua mchoro fulani ndani ya kuki iliyotolewa
Unda mtumiaji aitwaye kwa mfano "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" na angalia ikiwa kuna mchoro wowote katika kuki (kwa kuwa ECB inaficha kwa kutumia ufunguo sawa kila kizuizi, herufi zilizofichwa sawa zinaweza kuonekana ikiwa jina la mtumiaji limefichwa).
Inapaswa kuwepo mchoro (wenye ukubwa wa kizuizi kilichotumiwa). Kwa hivyo, ukiwa na ufahamu wa jinsi "a" nyingi zilizofichwa unaweza kuunda jina la mtumiaji: "a"*(ukubwa wa kizuizi)+"admin". Kisha, unaweza kufuta mchoro uliofichwa wa kizuizi cha "a" kutoka kwenye kuki. Na utakuwa na kuki ya jina la mtumiaji "admin".
Marejeo
- https://blog.ankursundara.com/cookie-bugs/
- https://www.linkedin.com/posts/rickey-martin-24533653_100daysofhacking-penetrationtester-ethicalhacking-activity-7016286424526180352-bwDd
Tafuta udhaifu unaofaa zaidi ili uweze kuyatatua haraka. Intruder inafuatilia eneo lako la shambulio, inafanya uchunguzi wa vitisho wa kujikinga, inapata masuala katika mfumo wako mzima wa teknolojia, kutoka kwa APIs hadi programu za wavuti na mifumo ya wingu. Jaribu bure leo.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
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 ikitangazwa kwenye 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](https://t.me/peass) au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa HackTricks na HackTricks Cloud github repos.