Translated ['src/pentesting-web/hacking-with-cookies/README.md'] to sw

This commit is contained in:
Translator 2025-05-18 03:22:09 +00:00
parent 3f30810561
commit a814b2a15e

View File

@ -8,11 +8,11 @@ Cookies zina sifa kadhaa ambazo zinadhibiti tabia yao katika kivinjari cha mtumi
### Expires and Max-Age
Tarehe ya kumalizika kwa cookie inamuliwa na sifa ya `Expires`. Kinyume chake, sifa ya `Max-age` inaelezea muda kwa sekunde hadi cookie ifutwe. **Chagua `Max-age` kwani inaakisi mazoea ya kisasa zaidi.**
Tarehe ya kumalizika kwa cookie inamuliwa na sifa ya `Expires`. Kinyume chake, sifa ya `Max-age` inaelezea muda kwa sekunde hadi cookie ifutwe. **Chagua `Max-age` kwani inawakilisha mazoea ya kisasa zaidi.**
### Domain
Wenyeji wa kupokea cookie wanaelezwa na sifa ya `Domain`. Kwa kawaida, hii imewekwa kwa mwenyeji aliyeanzisha cookie, bila kujumuisha subdomains zake. Hata hivyo, wakati sifa ya `Domain` imewekwa wazi, inajumuisha subdomains pia. Hii inafanya uwekaji wa sifa ya `Domain` kuwa chaguo lenye ukomo mdogo, muhimu kwa hali ambapo kushiriki cookie kati ya subdomains kunahitajika. Kwa mfano, kuweka `Domain=mozilla.org` kunafanya cookies zipatikane kwenye subdomains zake kama `developer.mozilla.org`.
Wenyeji wa kupokea cookie wanaelezwa na sifa ya `Domain`. Kwa kawaida, hii imewekwa kwa mwenyeji aliyeitoa cookie, bila kujumuisha subdomains zake. Hata hivyo, wakati sifa ya `Domain` imewekwa wazi, inajumuisha subdomains pia. Hii inafanya ufafanuzi wa sifa ya `Domain` kuwa chaguo lenye ukomo mdogo, muhimu kwa hali ambapo kushiriki cookie kati ya subdomains kunahitajika. Kwa mfano, kuweka `Domain=mozilla.org` kunafanya cookies zipatikane kwenye subdomains zake kama `developer.mozilla.org`.
### Path
@ -72,24 +72,24 @@ cookie-jar-overflow.md
### Secure
Ombi litatumia **tu** cookie katika ombi la HTTP ikiwa ombi linatumwa kupitia njia salama (kawaida **HTTPS**).
Ombi litatumwa **tu** kutuma cookie katika ombi la HTTP ikiwa ombi linatumwa kupitia njia salama (kawaida **HTTPS**).
## Cookies Prefixes
Cookies zilizo na awali `__Secure-` zinahitajika kuwekwa pamoja na bendera ya `secure` kutoka kurasa ambazo zimehakikishwa na HTTPS.
Cookies zilizo na prefix `__Secure-` zinahitajika kuwekwa pamoja na bendera ya `secure` kutoka kurasa ambazo zimehakikishwa na HTTPS.
Kwa cookies zilizo na awali `__Host-`, masharti kadhaa yanapaswa kutimizwa:
Kwa cookies zilizo na prefix `__Host-`, masharti kadhaa yanapaswa kutimizwa:
- Lazima ziwe zimewekwa na bendera ya `secure`.
- Lazima zianze kutoka ukurasa uliohakikishwa na HTTPS.
- Lazima zitoke kwenye ukurasa uliohakikishwa na HTTPS.
- Zinakatazwa kuainisha domain, kuzuia usafirishaji wao kwa subdomains.
- Njia ya cookies hizi lazima iwekwe kwa `/`.
Ni muhimu kutambua kwamba cookies zilizo na awali `__Host-` haziruhusiwi kutumwa kwa superdomains au subdomains. Kizuizi hiki kinasaidia katika kutenga cookies za programu. Hivyo, kutumia awali ya `__Host-` kwa cookies zote za programu inaweza kuzingatiwa kama mazoea mazuri ya kuboresha usalama na kutengwa.
Ni muhimu kutambua kwamba cookies zilizo na prefix `__Host-` haziruhusiwi kutumwa kwa superdomains au subdomains. Kizuizi hiki kinasaidia katika kutenga cookies za programu. Hivyo, kutumia prefix `__Host-` kwa cookies zote za programu inaweza kuzingatiwa kama mazoea mazuri ya kuboresha usalama na kutengwa.
### Overwriting cookies
Hivyo, moja ya ulinzi wa cookies zilizo na awali `__Host-` ni kuzuia ziweze kufutwa kutoka subdomains. Kuzuia kwa mfano [**Cookie Tossing attacks**](cookie-tossing.md). Katika mazungumzo [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F_wAzF4a7Xg) ([**paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) inawasilishwa kwamba ilikuwa inawezekana kuweka cookies zilizo na awali \_\_HOST- kutoka subdomain, kwa kudanganya parser, kwa mfano, kuongeza "=" mwanzoni au mwishoni...:
Hivyo, moja ya ulinzi wa cookies zilizo na prefix `__Host-` ni kuzuia zisifutwe kutoka subdomains. Kuzuia kwa mfano [**Cookie Tossing attacks**](cookie-tossing.md). Katika mazungumzo [**Cookie Crumbles: Unveiling Web Session Integrity Vulnerabilities**](https://www.youtube.com/watch?v=F_wAzF4a7Xg) ([**paper**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) inawasilishwa kwamba ilikuwa inawezekana kuweka cookies zilizo na prefix \_\_HOST- kutoka subdomain, kwa kudanganya parser, kwa mfano, kuongeza "=" mwanzoni au mwishoni...:
<figure><img src="../../images/image (6) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
@ -103,7 +103,7 @@ Ikiwa cookie maalum ina data nyeti angalia hiyo (hasa ikiwa unacheza CTF), kwani
### Decoding and Manipulating Cookies
Data nyeti iliyojumuishwa katika cookies inapaswa daima kuchunguzwa. Cookies zilizowekwa katika Base64 au mifumo inayofanana mara nyingi zinaweza kufichuliwa. Udhaifu huu unaruhusu washambuliaji kubadilisha maudhui ya cookie na kujifanya watumiaji wengine kwa kuandika data zao zilizobadilishwa tena ndani ya cookie.
Data nyeti iliyowekwa katika cookies inapaswa daima kuchunguzwa. Cookies zilizowekwa katika Base64 au mifumo inayofanana mara nyingi zinaweza kufichuliwa. Udhaifu huu unaruhusu washambuliaji kubadilisha maudhui ya cookie na kujifanya watumiaji wengine kwa kuandika data zao zilizobadilishwa tena ndani ya cookie.
### Session Hijacking
@ -131,13 +131,13 @@ cookie-tossing.md
### [JWT Cookies](../hacking-jwt-json-web-tokens.md)
Bonyeza kwenye kiungo kilichotangulia ili kufikia ukurasa unaoelezea udhaifu unaowezekana katika JWT.
Bonyeza kwenye kiungo kilichotangulia kupata ukurasa unaofafanua udhaifu unaowezekana katika JWT.
JSON Web Tokens (JWT) zinazotumiwa katika cookies pia zinaweza kuonyesha udhaifu. Kwa maelezo ya kina kuhusu udhaifu unaowezekana na jinsi ya kuyatumia, inashauriwa kufikia hati iliyo kwenye kuhamasisha JWT.
### Cross-Site Request Forgery (CSRF)
Shambulio hili linamfanya mtumiaji aliyeingia kutekeleza vitendo visivyotakikana kwenye programu ya wavuti ambayo kwa sasa wanaidhinishwa. Washambuliaji wanaweza kutumia cookies ambazo zinasafirishwa kiotomatiki na kila ombi kwa tovuti iliyo hatarini.
Shambulio hili linamfanya mtumiaji aliyeingia kutekeleza vitendo visivyotakikana kwenye programu ya wavuti ambayo kwa sasa wameidhinishwa. Washambuliaji wanaweza kutumia cookies ambazo zinasafirishwa kiotomatiki na kila ombi kwa tovuti iliyo hatarini.
### Empty Cookies
@ -165,9 +165,9 @@ document.cookie = "\ud800=meep"
```
Hii inasababisha `document.cookie` kutoa string tupu, ikionyesha uharibifu wa kudumu.
#### Uhamasishaji wa Keki kutokana na Masuala ya Uchambuzi
#### Uhamasishaji wa Keki kutokana na Masuala ya Ufafanuzi
(Tazama maelezo zaidi katika [utafiti wa asili](https://blog.ankursundara.com/cookie-bugs/)) Seva kadhaa za wavuti, ikiwa ni pamoja na zile za Java (Jetty, TomCat, Undertow) na Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), zinashughulikia nyuzi za keki vibaya kutokana na msaada wa zamani wa RFC2965. Wanasoma thamani ya keki iliyo na nukuu mbili kama thamani moja hata kama inajumuisha alama za semikolon, ambazo kawaida zinapaswa kutenganisha jozi za funguo-thamani:
(Tazama maelezo zaidi katika [utafiti wa asili](https://blog.ankursundara.com/cookie-bugs/)) Seva kadhaa za wavuti, ikiwa ni pamoja na zile za Java (Jetty, TomCat, Undertow) na Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), zinashughulikia nyuzi za keki vibaya kutokana na msaada wa zamani wa RFC2965. Wanaweza kusoma thamani ya keki iliyo na nukuu mbili kama thamani moja hata kama inajumuisha alama za semikolon, ambazo kawaida zinapaswa kutenganisha jozi za funguo-thamani:
```
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
```
@ -179,7 +179,7 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
- Zope inatafuta koma ili kuanza kufafanua keki inayofuata.
- Madarasa ya keki ya Python yanaanza kufafanua kwenye herufi ya nafasi.
Uthibitisho huu ni hatari sana katika programu za wavuti zinazotegemea ulinzi wa CSRF wa keki, kwani unaruhusu washambuliaji kuingiza keki za CSRF-token zilizoghushi, na hivyo kuweza kupita hatua za usalama. Tatizo hili linazidishwa na jinsi Python inavyoshughulikia majina ya keki yanayojirudia, ambapo tukio la mwisho linazidi yale ya awali. Pia linaibua wasiwasi kwa keki za `__Secure-` na `__Host-` katika muktadha usio salama na linaweza kusababisha kupita kwa mamlaka wakati keki zinapopelekwa kwa seva za nyuma zinazoweza kudanganywa.
Uthibitisho huu ni hatari sana katika programu za wavuti zinazotegemea ulinzi wa CSRF wa keki, kwani unaruhusu washambuliaji kuingiza keki za CSRF-token zilizoghushi, na hivyo kuweza kupita hatua za usalama. Tatizo hili linazidishwa na jinsi Python inavyoshughulikia majina ya keki yanayojirudia, ambapo tukio la mwisho linabadilisha yale ya awali. Pia linaibua wasiwasi kwa keki za `__Secure-` na `__Host-` katika muktadha usio salama na linaweza kusababisha kupita kwa mamlaka wakati keki zinapopelekwa kwa seva za nyuma zinazoweza kudanganywa.
### Keki $version
@ -187,12 +187,12 @@ Uthibitisho huu ni hatari sana katika programu za wavuti zinazotegemea ulinzi wa
Kulingana na [**hiki blogpost**](https://portswigger.net/research/bypassing-wafs-with-the-phantom-version-cookie), inaweza kuwa inawezekana kutumia sifa ya keki **`$Version=1`** ili kufanya backend itumie mantiki ya zamani kufafanua keki kutokana na **RFC2109**. Zaidi ya hayo, thamani nyingine kama **`$Domain`** na **`$Path`** zinaweza kutumika kubadilisha tabia ya backend na keki.
#### Shambulio la Keki Sandwich
#### Shambulio la Sandwich ya Keki
Kulingana na [**hiki blogpost**](https://portswigger.net/research/stealing-httponly-cookies-with-the-cookie-sandwich-technique) inawezekana kutumia mbinu ya keki sandwich kuiba keki za HttpOnly. Hizi ndizo mahitaji na hatua:
Kulingana na [**hiki blogpost**](https://portswigger.net/research/stealing-httponly-cookies-with-the-cookie-sandwich-technique) inawezekana kutumia mbinu ya sandwich ya keki kuiba keki za HttpOnly. Hizi ndizo mahitaji na hatua:
- Pata mahali ambapo **keki isiyo na maana inarejelewa katika jibu**
- **Unda keki inayoitwa `$Version`** yenye thamani `1` (unaweza kufanya hivi katika shambulio la XSS kutoka JS) yenye njia maalum ili ipate nafasi ya awali (mifumo mingine kama python haitahitaji hatua hii)
- **Unda keki inayoitwa `$Version`** yenye thamani `1` (unaweza kufanya hivi katika shambulio la XSS kutoka JS) yenye njia maalum ili ipate nafasi ya awali (mifumo mingine kama python haitaji hatua hii)
- **Unda keki inayorejelewa** yenye thamani inayowacha **nukuu mbili wazi** na yenye njia maalum ili iwe katika hifadhidata ya keki baada ya ile ya awali (`$Version`)
- Kisha, keki halali itafuata katika mpangilio
- **Unda keki ya dummy inayofunga nukuu mbili** ndani ya thamani yake
@ -219,11 +219,11 @@ Hii parsing inaonyesha kuondoa uakifishaji wa thamani ndani ya cookies, hivyo "\
#### Bypassing cookie-name blocklists
Katika RFC2109 inabainishwa kuwa **koma inaweza kutumika kama separator kati ya thamani za cookie**. Na pia inawezekana kuongeza **nafasi na tab kabla na baada ya alama ya sawa**. Hivyo cookie kama `$Version=1; foo=bar, abc = qux` haisababishi cookie `"foo":"bar, admin = qux"` bali cookies `foo":"bar"` na `"admin":"qux"`. Angalia jinsi cookies 2 zinavyoundwa na jinsi admin alivyondolewa nafasi kabla na baada ya alama ya sawa.
Katika RFC2109 inabainishwa kuwa **comma inaweza kutumika kama separator kati ya thamani za cookie**. Na pia inawezekana kuongeza **nafasi na tabs kabla na baada ya alama ya sawa**. Hivyo cookie kama `$Version=1; foo=bar, abc = qux` haisababishi cookie `"foo":"bar, admin = qux"` bali cookies `foo":"bar"` na `"admin":"qux"`. Angalia jinsi cookies 2 zinavyoundwa na jinsi admin alivyondolewa nafasi kabla na baada ya alama ya sawa.
#### Bypassing value analysis with cookie splitting
Hatimaye backdoors tofauti zingeunganishwa katika string cookies tofauti zilizopitishwa katika vichwa tofauti vya cookie kama katika:
Hatimaye backdoors tofauti zitaungana katika string cookies tofauti zilizopitishwa katika vichwa tofauti vya cookie kama katika:
```
GET / HTTP/1.1
Host: example.com
@ -237,27 +237,27 @@ Cookie: comment')
Resulting cookie: name=eval('test//, comment') => allowed
```
### Extra Vulnerable Cookies Checks
### Ukaguzi wa Keki Zenye Uthibitisho wa Ziada
#### **Basic checks**
#### **Ukaguzi wa Msingi**
- **Keki** ni **ile ile** kila wakati unapo **ingia**.
- Toka na jaribu kutumia keki ile ile.
- Toka nje na jaribu kutumia keki ile ile.
- Jaribu kuingia na vifaa 2 (au vivinjari) kwenye akaunti ile ile ukitumia keki ile ile.
- Angalia kama keki ina taarifa yoyote ndani yake na jaribu kuibadilisha.
- Jaribu kuunda akaunti kadhaa zikiwa na jina la mtumiaji karibu sawa na angalia kama unaweza kuona kufanana.
- Angalia chaguo la "**nikumbuke**" ikiwa ipo ili kuona jinsi inavyofanya kazi. Ikiwa ipo na inaweza kuwa na udhaifu, daima tumia keki ya **nikumbuke** bila keki nyingine yoyote.
- Angalia kama keki ya awali inafanya kazi hata baada ya kubadilisha nenosiri.
#### **Advanced cookies attacks**
#### **Mashambulizi ya Keki ya Juu**
Ikiwa keki inabaki kuwa ile ile (au karibu) unapoingia, hii huenda ikamaanisha kwamba keki inahusiana na uwanja fulani wa akaunti yako (labda jina la mtumiaji). Kisha unaweza:
Ikiwa keki inabaki kuwa ile ile (au karibu) unapoingia, hii ina maana kwamba keki inahusiana na uwanja fulani wa akaunti yako (labda jina la mtumiaji). Kisha unaweza:
- Jaribu kuunda akaunti nyingi zikiwa na majina ya mtumiaji yanayofanana sana na jaribu **kukisia** jinsi algorithimu inavyofanya kazi.
- Jaribu **bruteforce jina la mtumiaji**. Ikiwa keki inahifadhiwa tu kama njia ya uthibitishaji kwa jina lako la mtumiaji, basi unaweza kuunda akaunti yenye jina la mtumiaji "**Bmin**" na **bruteforce** kila **bit** ya keki yako kwa sababu moja ya keki ambazo utajaribu itakuwa ile inayomilikiwa na "**admin**".
- Jaribu kuunda akaunti nyingi za **mtumiaji** zikiwa na majina yanayofanana sana na jaribu **kukisia** jinsi algorithimu inavyofanya kazi.
- Jaribu **kuvunjavunja jina la mtumiaji**. Ikiwa keki inahifadhiwa tu kama njia ya uthibitisho kwa jina lako la mtumiaji, basi unaweza kuunda akaunti yenye jina la mtumiaji "**Bmin**" na **kuvunjavunja** kila **kipande** cha keki yako kwa sababu moja ya keki ambazo utajaribu itakuwa ile inayomilikiwa na "**admin**".
- Jaribu **Padding** **Oracle** (unaweza kufichua maudhui ya keki). Tumia **padbuster**.
**Padding Oracle - Padbuster examples**
**Padding Oracle - Mifano ya Padbuster**
```bash
padbuster <URL/path/when/successfully/login/with/cookie> <COOKIE> <PAD[8-16]>
# When cookies and regular Base64
@ -271,15 +271,15 @@ Padbuster itafanya majaribio kadhaa na itakuuliza ni hali ipi ndiyo hali ya mako
Kisha itaanza kufungua siri cookie (inaweza kuchukua dakika kadhaa)
Ikiwa shambulio limefanywa kwa mafanikio, basi unaweza kujaribu kuandika upya mfuatano wa chaguo lako. Kwa mfano, ikiwa ungependa **kuandika upya** **user=administrator**
Ikiwa shambulio limefanikiwa, basi unaweza kujaribu kuandika upya mfuatano wa chaguo lako. Kwa mfano, ikiwa ungependa **encrypt** **user=administrator**
```
padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator
```
Hii utekelezaji itakupa cookie iliyosimbwa na kuandikwa kwa usahihi na mfuatano **user=administrator** ndani.
Hii utekelezaji itakupa cookie iliyosimbwa na kuandikwa kwa usahihi ikiwa na mfuatano **user=administrator** ndani.
**CBC-MAC**
Labda cookie inaweza kuwa na thamani fulani na inaweza kusainiwa kwa kutumia CBC. Kisha, uaminifu wa thamani hiyo ni saini iliyoundwa kwa kutumia CBC na thamani hiyo hiyo. Kama inavyopendekezwa kutumia kama IV vector isiyo na kitu, aina hii ya ukaguzi wa uaminifu inaweza kuwa na hatari.
Labda cookie inaweza kuwa na thamani fulani na inaweza kusainiwa kwa kutumia CBC. Kisha, uadilifu wa thamani ni saini iliyoundwa kwa kutumia CBC na thamani hiyo hiyo. Kama inavyopendekezwa kutumia kama IV vector ya sifuri, aina hii ya ukaguzi wa uadilifu inaweza kuwa na hatari.
**Shambulio**
@ -289,18 +289,18 @@ Labda cookie inaweza kuwa na thamani fulani na inaweza kusainiwa kwa kutumia CBC
**ECB**
Ikiwa cookie imefungwa kwa kutumia ECB inaweza kuwa na hatari.\
Unapojisajili, cookie unayopokea inapaswa kuwa kila wakati sawa.
Ikiwa cookie imesimbwa kwa kutumia ECB inaweza kuwa na hatari.\
Wakati unapoingia, cookie unayopokea inapaswa kuwa kila wakati sawa.
**Jinsi ya kugundua na kushambulia:**
Unda watumiaji 2 wenye takwimu karibu sawa (jina la mtumiaji, nywila, barua pepe, nk.) na jaribu kugundua muundo wowote ndani ya cookie iliyotolewa.
Unda watumiaji 2 wenye takwimu karibu sawa (jina la mtumiaji, nenosiri, barua pepe, nk.) na jaribu kugundua muundo wowote ndani ya cookie iliyotolewa.
Unda mtumiaji anayeitwa kwa mfano "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" na angalia ikiwa kuna muundo wowote katika cookie (kama ECB inasimbwa kwa kutumia funguo sawa kila block, bytes sawa zilizofungwa zinaweza kuonekana ikiwa jina la mtumiaji linapangiliwa).
Unda mtumiaji anayeitwa kwa mfano "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" na angalia ikiwa kuna muundo wowote katika cookie (kama ECB inasimba kwa kutumia funguo sawa kila block, bytes sawa zilizosimbwa zinaweza kuonekana ikiwa jina la mtumiaji linasimbwa).
Inapaswa kuwa na muundo (ukubwa wa block inayotumika). Hivyo, ukijua jinsi kundi la "a" linavyosimbwa unaweza kuunda jina la mtumiaji: "a"\*(ukubwa wa block)+"admin". Kisha, unaweza kufuta muundo wa kusimbwa wa block ya "a" kutoka kwa cookie. Na utakuwa na cookie ya jina la mtumiaji "admin".
Inapaswa kuwa na muundo (kwa ukubwa wa block inayotumika). Hivyo, ukijua jinsi kundi la "a" linavyosimbwa unaweza kuunda jina la mtumiaji: "a"\*(ukubwa wa block)+"admin". Kisha, unaweza kufuta muundo wa kisimbaji wa block ya "a" kutoka kwa cookie. Na utakuwa na cookie ya jina la mtumiaji "admin".
## Marejeo
## Marejeleo
- [https://blog.ankursundara.com/cookie-bugs/](https://blog.ankursundara.com/cookie-bugs/)
- [https://www.linkedin.com/posts/rickey-martin-24533653_100daysofhacking-penetrationtester-ethicalhacking-activity-7016286424526180352-bwDd](https://www.linkedin.com/posts/rickey-martin-24533653_100daysofhacking-penetrationtester-ethicalhacking-activity-7016286424526180352-bwDd)