Content Security Policy (CSP)
Die CSP schränkt den Zugriff auf bestimmte Quellen ein.
Dabei wird auch definiert, welche Skripte ausgeführt werden dürfen.
CSP Direktiven
- style-src: Erlaubte Quellen für stylesheets
- img-src: Erlaubte Quellen für Bilder
- object-src: Erlaubte Quellen für Objekte wie
<object>oder<embed> - connect-src: Erlaubte Quellen für HTTP Anfragen aus Skripten. Beispielsweise von
XMLHttpRequest - default-src: Standard, falls eine Direktive nicht gesetzt ist
- frame-ancestors: Erlaubte Quellen diese Seite einzubetten
- form-action: Erlaubte Quellen für Formular übermittlungen
CSP Werte
*: Alle Quellen Erlaubt'none': Keine Quellen Erlaubt*.benignsite.htb: Alle Subdomains vonbenignsite.htbsind erlaubtunsafe-inline: Alle inline Elemente Erlaubtunsafe-eval: Erlaube dynamische Code Ausführung wie JavascriptsevalFunktionsha256-407e1bf4a1472948aa7b15cafa752fcf8e90710833da8a59dd8ef8e7fe56f22d: Erlaubt ein Element mit bestimmten hashnonce-S0meR4nd0mN0nC3: Erlaubt ein Element mit bestimmten Nonce
Umgehen der SOP mit JSONP
JSONP kann genutzt werden um SOPS zu umgehen. Dafür muss ein für skripts erlaubter Endpunkt JSONP unterstützen. Da JSONP Endpunkte es erlauben Funktionen zu definieren, ist es möglich dynamisch Javascript zu definieren, welcher vom JSONP Endpunkt zurückgegeben wird.
<script src="https://accounts.google.com/o/oauth2/revoke?callback=alert(1);"></script>
Umgehen der script-src 'self' Direktive
Kann der Benutzer Dateien Uploaden, ist es ihm möglich diese Auszuführen, sofern diese Direktive gesetzt ist. Dafür muss dann im Skript die Quelle als relativer Pfad angegeben werden.