# Clickjacking
{{#include ../banners/hacktricks-training.md}}
## Τι είναι το Clickjacking
Σε μια επίθεση clickjacking, ένας **χρήστης** **παραπλανάται** να **κλικάρει** σε ένα **στοιχείο** σε μια ιστοσελίδα που είναι είτε **αόρατο** είτε μεταμφιεσμένο ως διαφορετικό στοιχείο. Αυτή η χειραγώγηση μπορεί να οδηγήσει σε απρόβλεπτες συνέπειες για τον χρήστη, όπως η λήψη κακόβουλου λογισμικού, ανακατεύθυνση σε κακόβουλες ιστοσελίδες, παροχή διαπιστευτηρίων ή ευαίσθητων πληροφοριών, μεταφορές χρημάτων ή η διαδικτυακή αγορά προϊόντων.
### Τέχνασμα προεγκατάστασης φορμών
Μερικές φορές είναι δυνατόν να **συμπληρώσετε την τιμή πεδίων μιας φόρμας χρησιμοποιώντας παραμέτρους GET κατά τη φόρτωση μιας σελίδας**. Ένας επιτιθέμενος μπορεί να εκμεταλλευτεί αυτή τη συμπεριφορά για να συμπληρώσει μια φόρμα με αυθαίρετα δεδομένα και να στείλει το payload clickjacking ώστε ο χρήστης να πατήσει το κουμπί Υποβολή.
### Συμπλήρωση φόρμας με Drag\&Drop
Αν χρειάζεστε τον χρήστη να **συμπληρώσει μια φόρμα** αλλά δεν θέλετε να του ζητήσετε άμεσα να γράψει κάποιες συγκεκριμένες πληροφορίες (όπως το email και ή συγκεκριμένος κωδικός που γνωρίζετε), μπορείτε απλά να του ζητήσετε να **Drag\&Drop** κάτι που θα γράψει τα ελεγχόμενα δεδομένα σας όπως σε [**αυτό το παράδειγμα**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
### Βασικό Payload
```markup
Click me
```
### Πολυδιάστατο Payload
```markup
Click me first
Click me next
```
### Drag\&Drop + Click payload
```markup
.
1. Click and press delete button
3.Click me
2.DRAG ME TO THE RED BOX
```
### XSS + Clickjacking
Αν έχετε εντοπίσει μια **επίθεση XSS που απαιτεί από έναν χρήστη να κάνει κλικ** σε κάποιο στοιχείο για να **ενεργοποιήσει** το XSS και η σελίδα είναι **ευάλωτη σε clickjacking**, μπορείτε να το εκμεταλλευτείτε για να παραπλανήσετε τον χρήστη να κάνει κλικ στο κουμπί/σύνδεσμο.\
Παράδειγμα:\
NAN;_You βρήκατε ένα **self XSS** σε κάποιες ιδιωτικές λεπτομέρειες του λογαριασμού (λεπτομέρειες που **μόνο εσείς μπορείτε να ρυθμίσετε και να διαβάσετε**). Η σελίδα με τη **φόρμα** για να ρυθμίσετε αυτές τις λεπτομέρειες είναι **ευάλωτη** σε **Clickjacking** και μπορείτε να **προκαταλάβετε** τη **φόρμα** με τις παραμέτρους GET._\
\_\_Ένας επιτιθέμενος θα μπορούσε να προετοιμάσει μια **επίθεση Clickjacking** σε αυτή τη σελίδα **προκαταβάλλοντας** τη **φόρμα** με το **XSS payload** και **παραπλανώντας** τον **χρήστη** να **υποβάλει** τη φόρμα. Έτσι, **όταν η φόρμα υποβληθεί** και οι τιμές τροποποιηθούν, ο **χρήστης θα εκτελέσει το XSS**.
## Στρατηγικές για την Ελάφρυνση του Clickjacking
### Άμυνες Πλευράς Πελάτη
Τα σενάρια που εκτελούνται στην πλευρά του πελάτη μπορούν να εκτελέσουν ενέργειες για να αποτρέψουν το Clickjacking:
- Διασφάλιση ότι το παράθυρο της εφαρμογής είναι το κύριο ή το πάνω παράθυρο.
- Κάνοντάς τα όλα τα πλαίσια ορατά.
- Αποτρέποντας τα κλικ σε αόρατα πλαίσια.
- Ανίχνευση και ειδοποίηση χρηστών για πιθανές απόπειρες Clickjacking.
Ωστόσο, αυτά τα σενάρια καταστροφής πλαισίων μπορεί να παρακαμφθούν:
- **Ρυθμίσεις Ασφαλείας Περιηγητών:** Ορισμένοι περιηγητές μπορεί να αποκλείσουν αυτά τα σενάρια με βάση τις ρυθμίσεις ασφαλείας τους ή την έλλειψη υποστήριξης JavaScript.
- **HTML5 iframe `sandbox` Attribute:** Ένας επιτιθέμενος μπορεί να εξουδετερώσει τα σενάρια καταστροφής πλαισίων ρυθμίζοντας το `sandbox` attribute με τιμές `allow-forms` ή `allow-scripts` χωρίς `allow-top-navigation`. Αυτό αποτρέπει το iframe από το να επαληθεύσει αν είναι το πάνω παράθυρο, π.χ.,
```html
```
Οι τιμές `allow-forms` και `allow-scripts` επιτρέπουν ενέργειες μέσα στο iframe ενώ απενεργοποιούν την πλοήγηση σε ανώτερο επίπεδο. Για να διασφαλιστεί η επιθυμητή λειτουργικότητα της στοχευμένης ιστοσελίδας, μπορεί να είναι απαραίτητες επιπλέον άδειες όπως `allow-same-origin` και `allow-modals`, ανάλογα με τον τύπο της επίθεσης. Τα μηνύματα κονσόλας του προγράμματος περιήγησης μπορούν να καθοδηγήσουν ποιες άδειες να επιτραπούν.
### Αμυντικές Στρατηγικές Server-Side
#### X-Frame-Options
Η **`X-Frame-Options` HTTP response header** ενημερώνει τα προγράμματα περιήγησης σχετικά με τη νομιμότητα της απόδοσης μιας σελίδας σε ένα `` ή `