# 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 ```css
Click me
``` ### Πολυδιάστατο Payload ```css
Click me first
Click me next
``` ### Drag\&Drop + Click payload ```css
.
1. Click and press delete button
3.Click me

2.DRAG ME TO THE RED BOX

``` ### XSS + Clickjacking Αν έχετε εντοπίσει μια **επίθεση XSS που απαιτεί από τον χρήστη να κάνει κλικ** σε κάποιο στοιχείο για να **ενεργοποιήσει** το XSS και η σελίδα είναι **ευάλωτη σε clickjacking**, μπορείτε να το εκμεταλλευτείτε για να παραπλανήσετε τον χρήστη να κάνει κλικ στο κουμπί/σύνδεσμο.\ Παράδειγμα:\ Βρήκατε μια **self XSS** σε κάποιες ιδιωτικές λεπτομέρειες του λογαριασμού (λεπτομέρειες που **μόνο εσείς μπορείτε να ορίσετε και να διαβάσετε**). Η σελίδα με τη **φόρμα** για να ορίσετε αυτές τις λεπτομέρειες είναι **ευάλωτη** σε **Clickjacking** και μπορείτε να **προκαταλάβετε** τη **φόρμα** με τις παραμέτρους GET.\ Ένας επιτιθέμενος θα μπορούσε να προετοιμάσει μια **επίθεση Clickjacking** σε αυτή τη σελίδα **προκαταλαμβάνοντας** τη **φόρμα** με το **XSS payload** και **παραπλανώντας** τον **χρήστη** να **υποβάλει** τη φόρμα. Έτσι, **όταν η φόρμα υποβληθεί** και οι τιμές τροποποιηθούν, ο **χρήστης θα εκτελέσει το XSS**. ### DoubleClickjacking Αρχικά [εξηγήθηκε σε αυτή την ανάρτηση](https://securityaffairs.com/172572/hacking/doubleclickjacking-clickjacking-on-major-websites.html), αυτή η τεχνική θα ζητούσε από το θύμα να κάνει διπλό κλικ σε ένα κουμπί μιας προσαρμοσμένης σελίδας τοποθετημένης σε συγκεκριμένη θέση, και να χρησιμοποιήσει τις χρονικές διαφορές μεταξύ των γεγονότων mousedown και onclick για να φορτώσει τη σελίδα του θύματος κατά τη διάρκεια του διπλού κλικ, έτσι ώστε το **θύμα να κάνει στην πραγματικότητα κλικ σε ένα νόμιμο κουμπί στη σελίδα του θύματος**. Ένα παράδειγμα μπορεί να δει κανείς σε αυτό το βίντεο: [https://www.youtube.com/watch?v=4rGvRRMrD18](https://www.youtube.com/watch?v=4rGvRRMrD18) Ένα παράδειγμα κώδικα μπορεί να βρεθεί [σε αυτή τη σελίδα](https://www.paulosyibelo.com/2024/12/doubleclickjacking-what.html). > [!WARNING] > Αυτή η τεχνική επιτρέπει να παραπλανηθεί ο χρήστης να κάνει κλικ σε 1 σημείο στη σελίδα του θύματος παρακάμπτοντας κάθε προστασία κατά του clickjacking. Έτσι, ο επιτιθέμενος πρέπει να βρει **ευαίσθητες ενέργειες που μπορούν να γίνουν με μόνο 1 κλικ, όπως οι προτροπές OAuth που αποδέχονται άδειες**. ## Strategies to Mitigate Clickjacking ### Client-Side Defenses Τα σενάρια που εκτελούνται στην πλευρά του πελάτη μπορούν να εκτελούν ενέργειες για να αποτρέψουν το Clickjacking: - Διασφάλιση ότι το παράθυρο της εφαρμογής είναι το κύριο ή το πάνω παράθυρο. - Κάνοντάς τα όλα τα πλαίσια ορατά. - Αποτρέποντας τα κλικ σε αόρατα πλαίσια. - Ανίχνευση και ειδοποίηση χρηστών για πιθανές απόπειρες Clickjacking. Ωστόσο, αυτά τα σενάρια καταστροφής πλαισίων μπορεί να παρακαμφθούν: - **Ρυθμίσεις Ασφαλείας Περιηγητών:** Ορισμένοι περιηγητές μπορεί να αποκλείσουν αυτά τα σενάρια με βάση τις ρυθμίσεις ασφαλείας τους ή την έλλειψη υποστήριξης JavaScript. - **HTML5 iframe `sandbox` Attribute:** Ένας επιτιθέμενος μπορεί να εξουδετερώσει τα σενάρια καταστροφής πλαισίων ορίζοντας το `sandbox` attribute με τιμές `allow-forms` ή `allow-scripts` χωρίς `allow-top-navigation`. Αυτό αποτρέπει το iframe από το να επαληθεύσει αν είναι το πάνω παράθυρο, π.χ., ```html ``` The `allow-forms` και `allow-scripts` τιμές επιτρέπουν ενέργειες μέσα στο iframe ενώ απενεργοποιούν την πλοήγηση σε ανώτερο επίπεδο. Για να διασφαλιστεί η επιθυμητή λειτουργικότητα της στοχευμένης ιστοσελίδας, μπορεί να είναι απαραίτητες επιπλέον άδειες όπως `allow-same-origin` και `allow-modals`, ανάλογα με τον τύπο της επίθεσης. Τα μηνύματα κονσόλας του προγράμματος περιήγησης μπορούν να καθοδηγήσουν ποιες άδειες να επιτραπούν. ### Άμυνες Από Διακομιστή #### X-Frame-Options Η **`X-Frame-Options` HTTP απάντηση κεφαλίδας** ενημερώνει τα προγράμματα περιήγησης σχετικά με τη νομιμότητα της απόδοσης μιας σελίδας σε ένα `` ή `