mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/clickjacking.md'] to el
This commit is contained in:
parent
60bd844176
commit
48da87fee0
@ -8,14 +8,14 @@
|
||||
|
||||
### Τέχνασμα προεγκατάστασης φορμών
|
||||
|
||||
Μερικές φορές είναι δυνατόν να **συμπληρώσετε την τιμή των πεδίων μιας φόρμας χρησιμοποιώντας παραμέτρους GET κατά τη φόρτωση μιας σελίδας**. Ένας επιτιθέμενος μπορεί να εκμεταλλευτεί αυτή τη συμπεριφορά για να συμπληρώσει μια φόρμα με αυθαίρετα δεδομένα και να στείλει το payload clickjacking ώστε ο χρήστης να πατήσει το κουμπί Υποβολή.
|
||||
Μερικές φορές είναι δυνατόν να **συμπληρωθεί η τιμή των πεδίων μιας φόρμας χρησιμοποιώντας παραμέτρους GET κατά τη φόρτωση μιας σελίδας**. Ένας επιτιθέμενος μπορεί να εκμεταλλευτεί αυτή τη συμπεριφορά για να συμπληρώσει μια φόρμα με αυθαίρετα δεδομένα και να στείλει το payload clickjacking ώστε ο χρήστης να πατήσει το κουμπί Υποβολή.
|
||||
|
||||
### Συμπλήρωση φόρμας με Drag\&Drop
|
||||
|
||||
Αν χρειάζεστε τον χρήστη να **συμπληρώσει μια φόρμα** αλλά δεν θέλετε να του ζητήσετε άμεσα να γράψει κάποιες συγκεκριμένες πληροφορίες (όπως το email και ή συγκεκριμένο κωδικό που γνωρίζετε), μπορείτε απλώς να του ζητήσετε να **Drag\&Drop** κάτι που θα γράψει τα ελεγχόμενα δεδομένα σας όπως σε [**αυτό το παράδειγμα**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
|
||||
Αν χρειάζεστε τον χρήστη να **συμπληρώσει μια φόρμα** αλλά δεν θέλετε να του ζητήσετε άμεσα να γράψει κάποιες συγκεκριμένες πληροφορίες (όπως το email ή συγκεκριμένο κωδικό που γνωρίζετε), μπορείτε απλά να του ζητήσετε να **Drag\&Drop** κάτι που θα γράψει τα ελεγχόμενα δεδομένα σας όπως σε [**αυτό το παράδειγμα**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
|
||||
|
||||
### Βασικό Payload
|
||||
```markup
|
||||
```css
|
||||
<style>
|
||||
iframe {
|
||||
position:relative;
|
||||
@ -35,7 +35,7 @@ z-index: 1;
|
||||
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>
|
||||
```
|
||||
### Πολυδιάστατο Payload
|
||||
```markup
|
||||
```css
|
||||
<style>
|
||||
iframe {
|
||||
position:relative;
|
||||
@ -59,7 +59,7 @@ left:210px;
|
||||
<iframe src="https://vulnerable.net/account"></iframe>
|
||||
```
|
||||
### Drag\&Drop + Click payload
|
||||
```markup
|
||||
```css
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
@ -92,18 +92,27 @@ background: #F00;
|
||||
Αν έχετε εντοπίσει μια **επίθεση XSS που απαιτεί από τον χρήστη να κάνει κλικ** σε κάποιο στοιχείο για να **ενεργοποιήσει** το XSS και η σελίδα είναι **ευάλωτη σε clickjacking**, μπορείτε να το εκμεταλλευτείτε για να παραπλανήσετε τον χρήστη να κάνει κλικ στο κουμπί/σύνδεσμο.\
|
||||
Παράδειγμα:\
|
||||
Βρήκατε μια **self XSS** σε κάποιες ιδιωτικές λεπτομέρειες του λογαριασμού (λεπτομέρειες που **μόνο εσείς μπορείτε να ρυθμίσετε και να διαβάσετε**). Η σελίδα με τη **φόρμα** για να ρυθμίσετε αυτές τις λεπτομέρειες είναι **ευάλωτη** σε **Clickjacking** και μπορείτε να **προκαταλάβετε** τη **φόρμα** με τις παραμέτρους GET.\
|
||||
Ένας επιτιθέμενος θα μπορούσε να προετοιμάσει μια **επίθεση Clickjacking** σε αυτή τη σελίδα **προκαταλαμβάνοντας** τη **φόρμα** με το **XSS payload** και **παραπλανώντας** τον **χρήστη** να **υποβάλει** τη φόρμα. Έτσι, **όταν η φόρμα υποβληθεί** και οι τιμές τροποποιηθούν, ο **χρήστης θα εκτελέσει το XSS**.
|
||||
Ένας επιτιθέμενος θα μπορούσε να προετοιμάσει μια **επίθεση Clickjacking** σε αυτή τη σελίδα **προκαταβάλλοντας** τη **φόρμα** με το **XSS payload** και **παραπλανώντας** τον **χρήστη** να **υποβάλει** τη φόρμα. Έτσι, **όταν η φόρμα υποβληθεί** και οι τιμές τροποποιηθούν, ο **χρήστης θα εκτελέσει το XSS**.
|
||||
|
||||
## Στρατηγικές για την Ελάφρυνση του Clickjacking
|
||||
### DoubleClickjacking
|
||||
|
||||
### Αμυντικές Στρατηγικές Πελάτη
|
||||
Αρχικά [εξηγήθηκε σε αυτή την ανάρτηση](https://securityaffairs.com/172572/hacking/doubleclickjacking-clickjacking-on-major-websites.html), αυτή η τεχνική θα ζητούσε από το θύμα να κάνει διπλό κλικ σε ένα κουμπί μιας προσαρμοσμένης σελίδας τοποθετημένης σε συγκεκριμένη θέση, και να χρησιμοποιήσει τις χρονικές διαφορές μεταξύ των γεγονότων mousedown και onclick για να φορτώσει τη σελίδα του θύματος κατά τη διάρκεια του διπλού κλικ, έτσι ώστε το **θύμα να κάνει στην πραγματικότητα κλικ σε ένα νόμιμο κουμπί στη σελίδα του θύματος**.
|
||||
|
||||
Τα σενάρια που εκτελούνται στην πλευρά του πελάτη μπορούν να εκτελέσουν ενέργειες για να αποτρέψουν το Clickjacking:
|
||||
Ένα παράδειγμα μπορεί να δει κανείς σε αυτό το βίντεο: [https://www.youtube.com/watch?v=4rGvRRMrD18](https://www.youtube.com/watch?v=4rGvRRMrD18)
|
||||
|
||||
> [!WARNING]
|
||||
> Αυτή η τεχνική επιτρέπει να παραπλανηθεί ο χρήστης να κάνει κλικ σε 1 σημείο στη σελίδα του θύματος παρακάμπτοντας κάθε προστασία κατά του clickjacking. Έτσι, ο επιτιθέμενος πρέπει να βρει **ευαίσθητες ενέργειες που μπορούν να γίνουν με μόνο 1 κλικ, όπως οι προτροπές OAuth που αποδέχονται άδειες**.
|
||||
|
||||
## Strategies to Mitigate Clickjacking
|
||||
|
||||
### Client-Side Defenses
|
||||
|
||||
Τα σενάρια που εκτελούνται στην πλευρά του πελάτη μπορούν να εκτελούν ενέργειες για να αποτρέψουν το Clickjacking:
|
||||
|
||||
- Διασφάλιση ότι το παράθυρο της εφαρμογής είναι το κύριο ή το πάνω παράθυρο.
|
||||
- Κάνοντάς τα όλα τα πλαίσια ορατά.
|
||||
- Αποτρέποντας τα κλικ σε αόρατα πλαίσια.
|
||||
- Ανίχνευση και ειδοποίηση των χρηστών για πιθανές απόπειρες Clickjacking.
|
||||
- Ανίχνευση και ειδοποίηση χρηστών για πιθανές απόπειρες Clickjacking.
|
||||
|
||||
Ωστόσο, αυτά τα σενάρια καταστροφής πλαισίων μπορεί να παρακαμφθούν:
|
||||
|
||||
@ -117,7 +126,7 @@ sandbox="allow-forms allow-scripts"></iframe>
|
||||
```
|
||||
Οι τιμές `allow-forms` και `allow-scripts` επιτρέπουν ενέργειες μέσα στο iframe ενώ απενεργοποιούν την πλοήγηση σε ανώτερο επίπεδο. Για να διασφαλιστεί η επιθυμητή λειτουργικότητα της στοχευμένης ιστοσελίδας, μπορεί να είναι απαραίτητες επιπλέον άδειες όπως `allow-same-origin` και `allow-modals`, ανάλογα με τον τύπο της επίθεσης. Τα μηνύματα κονσόλας του προγράμματος περιήγησης μπορούν να καθοδηγήσουν ποιες άδειες να επιτραπούν.
|
||||
|
||||
### Αμυντικές Στρατηγικές Server-Side
|
||||
### Αμυντικές Τεχνικές Server-Side
|
||||
|
||||
#### X-Frame-Options
|
||||
|
||||
@ -128,28 +137,28 @@ sandbox="allow-forms allow-scripts"></iframe>
|
||||
- `X-Frame-Options: allow-from https://trusted.com` - Μόνο η καθορισμένη 'uri' μπορεί να πλαισιώσει τη σελίδα.
|
||||
- Σημειώστε τους περιορισμούς: αν ο περιηγητής δεν υποστηρίζει αυτή τη οδηγία, μπορεί να μην λειτουργήσει. Ορισμένοι περιηγητές προτιμούν την οδηγία CSP frame-ancestors.
|
||||
|
||||
#### Content Security Policy (CSP) frame-ancestors directive
|
||||
#### Οδηγία frame-ancestors της Πολιτικής Ασφαλείας Περιεχομένου (CSP)
|
||||
|
||||
Η **`frame-ancestors` οδηγία στο CSP** είναι η προτεινόμενη μέθοδος για την προστασία από το Clickjacking:
|
||||
Η **οδηγία `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`.
|
||||
- `frame-ancestors 'none'` - Παρόμοιο με `X-Frame-Options: deny`.
|
||||
- `frame-ancestors 'self'` - Παρόμοιο με `X-Frame-Options: sameorigin`.
|
||||
- `frame-ancestors trusted.com` - Παρόμοιο με `X-Frame-Options: allow-from`.
|
||||
|
||||
Για παράδειγμα, το παρακάτω CSP επιτρέπει μόνο την πλαισίωση από το ίδιο domain:
|
||||
Για παράδειγμα, η παρακάτω CSP επιτρέπει μόνο την πλαισίωση από το ίδιο domain:
|
||||
|
||||
`Content-Security-Policy: frame-ancestors 'self';`
|
||||
|
||||
Περισσότερες λεπτομέρειες και σύνθετα παραδείγματα μπορούν να βρεθούν στην [τεκμηρίωση frame-ancestors CSP](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) και στην [τεκμηρίωση frame-ancestors της Mozilla](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors).
|
||||
|
||||
### Content Security Policy (CSP) με `child-src` και `frame-src`
|
||||
### Πολιτική Ασφαλείας Περιεχομένου (CSP) με `child-src` και `frame-src`
|
||||
|
||||
Η **Content Security Policy (CSP)** είναι ένα μέτρο ασφαλείας που βοηθά στην πρόληψη του Clickjacking και άλλων επιθέσεων εισαγωγής κώδικα καθορίζοντας ποιες πηγές πρέπει να επιτρέψει ο περιηγητής να φορτώσουν περιεχόμενο.
|
||||
Η **Πολιτική Ασφαλείας Περιεχομένου (CSP)** είναι ένα μέτρο ασφαλείας που βοηθά στην πρόληψη του Clickjacking και άλλων επιθέσεων εισαγωγής κώδικα καθορίζοντας ποιες πηγές πρέπει να επιτρέψει ο περιηγητής να φορτώσουν περιεχόμενο.
|
||||
|
||||
#### `frame-src` Directive
|
||||
#### Οδηγία `frame-src`
|
||||
|
||||
- Ορίζει έγκυρες πηγές για frames.
|
||||
- Πιο συγκεκριμένο από την οδηγία `default-src`.
|
||||
- Πιο συγκεκριμένη από την οδηγία `default-src`.
|
||||
```
|
||||
Content-Security-Policy: frame-src 'self' https://trusted-website.com;
|
||||
```
|
||||
@ -172,7 +181,7 @@ Content-Security-Policy: child-src 'self' https://trusted-website.com;
|
||||
|
||||
#### Σενάρια JavaScript για Σπάσιμο Πλαισίων
|
||||
|
||||
Αν και δεν είναι εντελώς αδιάβλητα, τα σενάρια JavaScript για σπάσιμο πλαισίων μπορούν να χρησιμοποιηθούν για να αποτρέψουν μια ιστοσελίδα από το να πλαισιωθεί. Παράδειγμα:
|
||||
Αν και δεν είναι εντελώς αδιάβλητα, τα σενάρια σπασίματος πλαισίων που βασίζονται σε JavaScript μπορούν να χρησιμοποιηθούν για να αποτρέψουν μια ιστοσελίδα από το να πλαισιωθεί. Παράδειγμα:
|
||||
```javascript
|
||||
if (top !== self) {
|
||||
top.location = self.location
|
||||
@ -180,7 +189,7 @@ top.location = self.location
|
||||
```
|
||||
#### Χρήση Αντι-CSRF Tokens
|
||||
|
||||
- **Επικύρωση Token:** Χρησιμοποιήστε αντι-CSRF tokens σε διαδικτυακές εφαρμογές για να διασφαλίσετε ότι οι αιτήσεις που αλλάζουν την κατάσταση γίνονται σκόπιμα από τον χρήστη και όχι μέσω μιας Clickjacked σελίδας.
|
||||
- **Επικύρωση Token:** Χρησιμοποιήστε αντι-CSRF tokens σε διαδικτυακές εφαρμογές για να διασφαλίσετε ότι οι αιτήσεις που αλλάζουν κατάσταση γίνονται σκόπιμα από τον χρήστη και όχι μέσω μιας Clickjacked σελίδας.
|
||||
|
||||
## Αναφορές
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user