From b2acd21fcd02a6e9effc83ea7e303395492da4cf Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 25 Mar 2024 00:46:54 +0000 Subject: [PATCH] Translated ['pentesting-web/cors-bypass.md'] to sw --- pentesting-web/cors-bypass.md | 133 +++++++++++++++++----------------- 1 file changed, 67 insertions(+), 66 deletions(-) diff --git a/pentesting-web/cors-bypass.md b/pentesting-web/cors-bypass.md index 845e329f5..b366dd728 100644 --- a/pentesting-web/cors-bypass.md +++ b/pentesting-web/cors-bypass.md @@ -6,7 +6,7 @@ Njia nyingine za kusaidia HackTricks: -* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)! +* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)! * Pata [**bidhaa rasmi za 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) ya 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)**.** @@ -20,9 +20,9 @@ Mkataba wa Kugawana Rasilmali kati ya Mipaka (CORS) **inaruhusu seva kuamua ni n Sera ya **asili sawa** inahitaji kwamba **seva inayotaka** rasilimali na seva inayohifadhi **rasilimali** washiriki itifaki sawa (k.m., `http://`), jina la kikoa (k.m., `internal-web.com`), na **bandari** (k.m., 80). Chini ya sera hii, kurasa za wavuti kutoka kwa kikoa na bandari sawa tu ndio zinaruhusiwa kupata rasilimali. -Matumizi ya sera sawa ya asili katika muktadha wa `http://normal-website.com/example/example.html` inaonyeshwa kama ifuatavyo: +Matumizi ya sera ya asili sawa katika muktadha wa `http://normal-website.com/example/example.html` inaonyeshwa kama ifuatavyo: -| URL iliyopatikana | Kupatikana kuruhusiwa? | +| URL iliyopatikana | Kupatikana? | | ----------------------------------------- | --------------------------------------- | | `http://normal-website.com/example/` | Ndiyo: Itifaki, kikoa, na bandari sawa | | `http://normal-website.com/example2/` | Ndiyo: Itifaki, kikoa, na bandari sawa | @@ -31,17 +31,17 @@ Matumizi ya sera sawa ya asili katika muktadha wa `http://normal-website.com/exa | `http://www.normal-website.com/example/` | Hapana: Kikoa tofauti | | `http://normal-website.com:8080/example/` | Hapana: Bandari tofauti\* | -\*Internet Explorer haizingatii nambari ya bandari katika kutekeleza sera sawa ya asili, hivyo kuruhusu ufikiaji huu. +\*Internet Explorer haizingatii nambari ya bandari katika kutekeleza sera ya asili sawa, hivyo kuruhusu ufikiaji huu. ### Kichwa cha `Access-Control-Allow-Origin` -Kichwa hiki kinaweza kuruhusu **mizizi mingi**, thamani ya **`null`**, au alama ya mwitikio wa **`*`**. Walakini, **kivinjari hakisaidii mizizi mingi**, na matumizi ya alama ya mwitikio wa `*` yanategemea **vizuizi**. (Alama ya mwitikio wa `*` inapaswa kutumika peke yake, na matumizi yake pamoja na `Access-Control-Allow-Credentials: true` hayaruhusiwi.) +Kichwa hiki kinaweza kuruhusu **mizizi mingi**, thamani ya **`null`**, au alama ya mwitikio **`*`**. Walakini, **kivinjari hakisaidii mizizi mingi**, na matumizi ya alama ya mwitikio `*` yanategemea **vizuizi**. (Alama ya mwitikio inapaswa kutumika peke yake, na matumizi yake pamoja na `Access-Control-Allow-Credentials: true` hayaruhusiwi.) Kichwa hiki **hutolewa na seva** kujibu ombi la rasilimali kati ya mipaka lililoanzishwa na wavuti, na kivinjari kiotomatiki huongeza kichwa cha `Origin`. ### Kichwa cha `Access-Control-Allow-Credentials` -Kwa **chaguo-msingi**, maombi ya mipaka ya kuvuka hufanywa bila sifa kama vidakuzi au kichwa cha Uthibitishaji. Walakini, seva ya mipaka ya kuvuka inaweza kuruhusu kusoma kwa jibu wakati sifa zinatumwa kwa kuweka kichwa cha `Access-Control-Allow-Credentials` kuwa **`kweli`**. +Kwa **chaguo-msingi**, maombi kati ya mipaka hufanywa bila sifa kama vidakuzi au kichwa cha Uthibitishaji. Walakini, seva kati ya mipaka inaweza kuruhusu kusoma kwa jibu wakati sifa zinatumwa kwa kuweka kichwa cha `Access-Control-Allow-Credentials` kuwa **`kweli`**. Ikiwa imewekwa kuwa `kweli`, kivinjari kitatuma sifa (vidakuzi, vichwa vya uthibitishaji, au vyeti vya mteja vya TLS). ```javascript @@ -72,15 +72,15 @@ xhr.send('Arun'); ``` ### Ombi la CSRF la kabla ya safari -### Kuelewa Maombi ya Kabla ya Safari katika Mawasiliano ya Mikoa Tofauti +### Kuelewa Maombi ya Kabla ya Safari katika Mawasiliano ya Kuvuka-Domeini -Unapoanzisha ombi la msalaba-mikoa chini ya hali maalum, kama kutumia **njia ya HTTP isiyo ya kawaida** (chochote kisichokuwa HEAD, GET, POST), kuingiza **vichwa vipya**, au kutumia thamani maalum ya **kichwa cha Aina ya Yaliyomo**, ombi la kabla ya safari linaweza kuhitajika. Ombi hili la awali, likitumia njia ya **`OPTIONS`**, hutumika kumjulisha seva nia ya ombi la msalaba-mwanzo linalokuja, ikiwa ni pamoja na njia za HTTP na vichwa itakavyotumia. +Unapoanzisha ombi la kuvuka-domeini chini ya hali maalum, kama kutumia **njia ya HTTP isiyo ya kawaida** (chochote kisichokuwa HEAD, GET, POST), kuongeza **vichwa vipya**, au kutumia thamani maalum ya **kichwa cha Aina ya Yaliyomo**, ombi la kabla ya safari linaweza kuhitajika. Ombi hili la awali, likitumia njia ya **`OPTIONS`**, hutumika kumjulisha seva nia za ombi la kuvuka asili linalokuja, ikiwa ni pamoja na njia za HTTP na vichwa itakavyotumia. -Itifaki ya **Kugawana Rasilmali kwa Mawasiliano ya Mipaka (CORS)** inahitaji ukaguzi huu wa kabla ya safari ili kubaini uwezekano wa operesheni ya msalaba-mwanzo iliyotakiwa kwa kuthibitisha njia zilizoruhusiwa, vichwa, na uaminifu wa asili. Ili kuelewa kwa undani ni hali gani zinazopuuza haja ya ombi la kabla ya safari, tazama mwongozo kamili uliotolewa na [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests). +Itifaki ya **Kugawana Rasilmali kwa Kuvuka-Mizizi (CORS)** inahitaji ukaguzi huu wa kabla ya safari ili kubaini uwezekano wa operesheni ya kuvuka asili iliyotakiwa kwa kuthibitisha njia zilizoruhusiwa, vichwa, na uaminifu wa asili. Kwa uelewa wa kina wa hali zipi zinazopuuza haja ya ombi la kabla ya safari, tazama mwongozo kamili uliotolewa na [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests). -Ni muhimu kuzingatia kwamba **ukosefu wa ombi la kabla ya safari haimaanishi kwamba jibu halihitaji kubeba vichwa vya idhini**. Bila vichwa hivi, kivinjari kinashindwa kusindika jibu kutoka kwa ombi la msalaba-mwanzo. +Ni muhimu kutambua kwamba **ukosefu wa ombi la kabla ya safari haimaanishi kwamba jibu halihitaji kubeba vichwa vya idhini**. Bila vichwa hivi, kivinjari kimelemazwa katika uwezo wake wa kusindika jibu kutoka kwa ombi la kuvuka asili. -Chukua mfano ufuatao wa ombi la kabla ya safari linalolenga kutumia njia ya `PUT` pamoja na kichwa cha desturi kilichoitwa `Special-Request-Header`: +Chukua mfano ufuatao wa ombi la kabla ya safari lililolenga kutumia njia ya `PUT` pamoja na kichwa cha desturi kilichoitwa `Special-Request-Header`: ``` OPTIONS /info HTTP/1.1 Host: example2.com @@ -100,21 +100,21 @@ Access-Control-Allow-Credentials: true Access-Control-Max-Age: 240 ``` * **`Access-Control-Allow-Headers`**: Kichwa hiki hufafanua ni vichwa vipi vinaweza kutumika wakati wa ombi halisi. Kinasanidiwa na seva kuonyesha vichwa vilivyoidhinishwa katika maombi kutoka kwa mteja. -* **`Access-Control-Expose-Headers`**: Kupitia kichwa hiki, seva inaarifu mteja ni vichwa vipi vinaweza kuwekwa wazi kama sehemu ya majibu isipokuwa vichwa vya majibu ya kawaida. +* **`Access-Control-Expose-Headers`**: Kupitia kichwa hiki, seva inaarifu mteja ni vichwa vipi vinaweza kuwekwa wazi kama sehemu ya majibu mbali na vichwa vya majibu ya kawaida. * **`Access-Control-Max-Age`**: Kichwa hiki kinaonyesha muda gani matokeo ya ombi la awali yanaweza kuhifadhiwa. Seva inaweka muda wa kikomo, kwa sekunde, ambapo habari iliyorudishwa na ombi la awali inaweza kutumika tena. -* **`Access-Control-Request-Headers`**: Kutumika katika maombi ya awali, kichwa hiki kinasanidiwa na mteja kuarifu seva ni vichwa vya HTTP ambavyo mteja anataka kutumia katika ombi halisi. +* **`Access-Control-Request-Headers`**: Kutumika katika maombi ya awali, kichwa hiki kinasanidiwa na mteja kuarifu seva ni vichwa vya HTTP vipi mteja anataka kutumia katika ombi halisi. * **`Access-Control-Request-Method`**: Kichwa hiki, pia kutumika katika maombi ya awali, kinasanidiwa na mteja kuonyesha ni njia ipi ya HTTP itatumika katika ombi halisi. -* **`Origin`**: Kichwa hiki kinasanidiwa moja kwa moja na kivinjari na kuonyesha asili ya ombi la msingi wa msalaba-mzizi. Hutumiwa na seva kutathmini ikiwa ombi linalokuja linapaswa kuruhusiwa au kukataliwa kulingana na sera ya CORS. +* **`Origin`**: Kichwa hiki kinasanidiwa moja kwa moja na kivinjari na kuonyesha asili ya ombi la msingi wa msalaba mipaka. Hutumiwa na seva kutathmini ikiwa ombi linalokuja linapaswa kuruhusiwa au kukataliwa kulingana na sera ya CORS. -Tafadhali kumbuka kwamba kawaida (kulingana na aina ya yaliyomo na vichwa vilivyosanidiwa) katika ombi la **GET/POST hakuna ombi la awali linalotumwa** (ombi linatumiwa **moja kwa moja**), lakini ikiwa unataka kupata **vichwa/mwili wa majibu**, lazima iwe na kichwa cha _Access-Control-Allow-Origin_ kuruhusu hilo.\ +Tambua kwamba kawaida (kulingana na aina ya yaliyomo na vichwa vilivyosanidiwa) katika ombi la **GET/POST hakuna ombi la awali linalotumwa** (ombi linatumwa **moja kwa moja**), lakini ikiwa unataka kupata **vichwa/mwili wa majibu**, lazima iwe na kichwa cha _Access-Control-Allow-Origin_ kuruhusu hilo.\ **Hivyo basi, CORS haitoi ulinzi dhidi ya CSRF (ingawa inaweza kuwa na manufaa).** ### **Ombi la Awali la Mtandao wa Ndani** 1. **`Access-Control-Request-Local-Network`**: Kichwa hiki kinaingizwa katika ombi la mteja kumaanisha kuwa uchunguzi unalenga rasilimali ya mtandao wa ndani. Hutumika kama ishara kuarifu seva kuwa ombi linatoka ndani ya mtandao wa ndani. -2. **`Access-Control-Allow-Local-Network`**: Kama jibu, seva hutumia kichwa hiki kuwasiliana kwamba rasilimali iliyotakiwa inaruhusiwa kushirikishwa na vyama nje ya mtandao wa ndani. Hufanya kama taa ya kijani kwa kushirikisha rasilimali kati ya mipaka tofauti ya mtandao, ikidumisha ufikiaji uliodhibitiwa wakati wa kudumisha itifaki za usalama. +2. **`Access-Control-Allow-Local-Network`**: Kama jibu, seva hutumia kichwa hiki kuwasiliana kwamba rasilimali iliyoombwa inaruhusiwa kushirikishwa na vyama nje ya mtandao wa ndani. Hufanya kama taa ya kijani kwa kushirikisha rasilimali kati ya mipaka tofauti ya mtandao, ikidumisha ufikiaji uliodhibitiwa wakati wa kudumisha itifaki za usalama. -**Jibu halali linaloruhusu ombi la mtandao wa ndani** linapaswa pia kuwa na kichwa `Access-Controls-Allow-Local_network: true`: +**Jibu halali linaloruhusu ombi la mtandao wa ndani** lazima pia liwe na kichwa `Access-Controls-Allow-Local_network: true`: ``` HTTP/1.1 200 OK ... @@ -126,14 +126,14 @@ Content-Length: 0 ... ``` {% hint style="warning" %} -Tafadhali kumbuka kuwa IP ya linux **0.0.0.0** inafanya kazi kwa **kupita** mahitaji haya ili kupata ufikiaji wa localhost kwa sababu anwani hiyo ya IP haichukuliwi kuwa "ya ndani". +Tafadhali kumbuka kuwa IP ya linux **0.0.0.0** inafanya kazi kwa **kupita** mahitaji haya ya kufikia localhost kwa sababu anwani hiyo ya IP haichukuliwi "ya ndani". Pia ni pamoja na **kupita mahitaji ya Mtandao wa Ndani** ikiwa unatumia **anwani ya IP ya umma ya mwisho** (kama vile anwani ya IP ya router). Kwa sababu katika matukio kadhaa, hata kama **anwani ya IP ya umma** inafikiwa, ikiwa ni **kutoka kwenye mtandao wa ndani**, ufikiaji utapewa. {% endhint %} ## Mipangilio Inayoweza Kudukuliwa -Imeonekana kuwa kuweka `Access-Control-Allow-Credentials` kuwa **`kweli`** ni sharti la msingi kwa **mashambulizi halisi** mengi. Mipangilio hii inaruhusu kivinjari kutuma vitambulisho na kusoma majibu, ikiboresha ufanisi wa shambulio. Bila hii, faida ya kufanya kivinjari itoe ombi badala ya kufanya mwenyewe hupungua, kwani kutumia vidakuzi vya mtumiaji kunakuwa sio jambo la kufanyika. +Imeonekana kuwa kuweka `Access-Control-Allow-Credentials` kuwa **`kweli`** ni sharti kwa **mashambulizi halisi** mengi. Mipangilio hii inaruhusu kivinjari kutuma vitambulisho na kusoma majibu, ikiboresha ufanisi wa shambulio. Bila hii, faida ya kufanya kivinjari itoe ombi badala ya kufanya mwenyewe hupungua, kwani kutumia vidakuzi vya mtumiaji kunakuwa sio jambo la kufanyika. ### Ubunifu: Kutumia Mahali pa Mtandao kama Uthibitisho @@ -141,7 +141,7 @@ Kuna ubunifu ambapo mahali pa mtandao wa mwathiriwa unafanya kama aina fulani ya ### Kutafakari `Origin` katika `Access-Control-Allow-Origin` -Hali halisi ambapo thamani ya kichwa cha `Origin` inatafakariwa katika `Access-Control-Allow-Origin` ni nadra kwa nadharia kutokana na vizuizi vya kuunganisha vichwa hivi. Hata hivyo, watengenezaji wanaotaka kuwezesha CORS kwa URL nyingi wanaweza kuzalisha kichwa cha `Access-Control-Allow-Origin` kwa kuchukua thamani ya kichwa cha `Origin`. Mbinu hii inaweza kuleta mapungufu, hasa wakati mshambuliaji anatumia kikoa chenye jina lililoundwa kuonekana halali, hivyo kudanganya mantiki ya uthibitisho. +Hali halisi ambapo thamani ya kichwa cha `Origin` inatafakariwa katika `Access-Control-Allow-Origin` kimsingi ni nadra kutokana na vizuizi vya kuunganisha vichwa hivi. Hata hivyo, watengenezaji wanaotaka kuwezesha CORS kwa URL nyingi wanaweza kuzalisha kwa njia ya kudharura kichwa cha `Access-Control-Allow-Origin` kwa kunakili thamani ya kichwa cha `Origin`. Mbinu hii inaweza kuleta mapungufu, hasa wakati mshambuliaji anatumia kikoa chenye jina lililoundwa kuonekana halali, hivyo kudanganya mantiki ya uthibitisho. ```html