Server Side Inclusion/Edge Side Inclusion Injection
Server Side Inclusion Basic Information
(Introduction taken from Apache docs)
SSI (Server Side Includes) είναι εντολές που τοποθετούνται σε σελίδες HTML και αξιολογούνται στον διακομιστή ενώ οι σελίδες εξυπηρετούνται. Σας επιτρέπουν να προσθέσετε δυναμικά παραγόμενο περιεχόμενο σε μια υπάρχουσα σελίδα HTML, χωρίς να χρειάζεται να εξυπηρετήσετε ολόκληρη τη σελίδα μέσω ενός προγράμματος CGI ή άλλης δυναμικής τεχνολογίας. Για παράδειγμα, μπορείτε να τοποθετήσετε μια εντολή σε μια υπάρχουσα σελίδα HTML, όπως:
<!--#echo var="DATE_LOCAL" -->
Και, όταν η σελίδα εξυπηρετείται, αυτό το τμήμα θα αξιολογηθεί και θα αντικατασταθεί με την τιμή του:
Tuesday, 15-Jan-2013 19:28:54 EST
Η απόφαση για το πότε να χρησιμοποιήσετε SSI και πότε να έχετε τη σελίδα σας να παράγεται εξ ολοκλήρου από κάποιο πρόγραμμα, είναι συνήθως θέμα του πόσο στατική είναι η σελίδα και πόσο χρειάζεται να επαναϋπολογίζεται κάθε φορά που εξυπηρετείται η σελίδα. Το SSI είναι ένας εξαιρετικός τρόπος για να προσθέσετε μικρά κομμάτια πληροφοριών, όπως η τρέχουσα ώρα - όπως φαίνεται παραπάνω. Αλλά αν η πλειοψηφία της σελίδας σας παράγεται τη στιγμή που εξυπηρετείται, πρέπει να αναζητήσετε κάποια άλλη λύση.
Μπορείτε να συμπεράνετε την παρουσία του SSI αν η διαδικτυακή εφαρμογή χρησιμοποιεί αρχεία με τις επεκτάσεις ** .shtml
, .shtm
ή .stm
**, αλλά δεν είναι μόνο αυτή η περίπτωση.
Μια τυπική έκφραση SSI έχει την εξής μορφή:
Έλεγχος
Edge Side Inclusion
Υπάρχει ένα πρόβλημα με την αποθήκευση πληροφοριών ή δυναμικών εφαρμογών καθώς μέρος του περιεχομένου μπορεί να έχει διαφορεθεί για την επόμενη φορά που θα ανακτηθεί το περιεχόμενο. Αυτό είναι που χρησιμοποιείται το ESI, για να υποδείξει χρησιμοποιώντας ετικέτες ESI το δυναμικό περιεχόμενο που πρέπει να παραχθεί πριν από την αποστολή της έκδοσης cache. Εάν ένας επιτιθέμενος είναι σε θέση να εισάγει μια ετικέτα ESI μέσα στο περιεχόμενο cache, τότε θα μπορούσε να είναι σε θέση να εισάγει αυθαίρετο περιεχόμενο στο έγγραφο πριν σταλεί στους χρήστες.
ESI Detection
Η παρακάτω κεφαλίδα σε μια απάντηση από τον διακομιστή σημαίνει ότι ο διακομιστής χρησιμοποιεί ESI:
Αν δεν μπορείτε να βρείτε αυτή την κεφαλίδα, ο διακομιστής μπορεί να χρησιμοποιεί ESI ούτως ή άλλως. Μια προσέγγιση τυφλής εκμετάλλευσης μπορεί επίσης να χρησιμοποιηθεί καθώς ένα αίτημα θα πρέπει να φτάσει στον διακομιστή των επιτιθεμένων:
ESI exploitation
GoSecure δημιούργησε έναν πίνακα για να κατανοήσουμε τις πιθανές επιθέσεις που μπορούμε να δοκιμάσουμε σε διάφορα λογισμικά που υποστηρίζουν ESI, ανάλογα με τη λειτουργικότητα που υποστηρίζουν:
Includes: Υποστηρίζει την εντολή
<esi:includes>
Vars: Υποστηρίζει την εντολή
<esi:vars>
. Χρήσιμο για την παράκαμψη φίλτρων XSSCookie: Τα cookies του εγγράφου είναι προσβάσιμα στον κινητήρα ESI
Upstream Headers Required: Οι εφαρμογές υποκατάστασης δεν θα επεξεργαστούν δηλώσεις ESI εκτός αν η upstream εφαρμογή παρέχει τις κεφαλίδες
Host Allowlist: Σε αυτή την περίπτωση, οι ESI includes είναι δυνατές μόνο από επιτρεπόμενους διακομιστές, καθιστώντας το SSRF, για παράδειγμα, δυνατό μόνο κατά αυτών των διακομιστών
Software | Includes | Vars | Cookies | Upstream Headers Required | Host Whitelist |
Squid3 | Yes | Yes | Yes | Yes | No |
Varnish Cache | Yes | No | No | Yes | Yes |
Fastly | Yes | No | No | No | Yes |
Akamai ESI Test Server (ETS) | Yes | Yes | Yes | No | No |
NodeJS esi | Yes | Yes | Yes | No | No |
NodeJS nodesi | Yes | No | No | No | Optional |
XSS
Η παρακάτω εντολή ESI θα φορτώσει ένα αυθαίρετο αρχείο μέσα στην απόκριση του διακομιστή
Παράκαμψη προστασίας XSS πελάτη
Κλοπή Cookie
Απομακρυσμένη κλοπή cookie
Κλέψτε το cookie HTTP_ONLY με XSS αντανακλώντας το στην απάντηση:
Ιδιωτικό Τοπικό Αρχείο
Μην το συγχέετε με μια "Τοπική Συμπερίληψη Αρχείου":
CRLF
Open Redirect
Το παρακάτω θα προσθέσει ένα Location
header στην απάντηση
Προσθήκη Κεφαλίδας
Προσθήκη κεφαλίδας σε αναγκαστικό αίτημα
Προσθέστε κεφαλίδα στην απάντηση (χρήσιμο για να παρακάμψετε το "Content-Type: text/json" σε μια απάντηση με XSS)
CRLF στο Add header (CVE-2019-2438)
Akamai debug
Αυτό θα στείλει πληροφορίες αποσφαλμάτωσης που περιλαμβάνονται στην απάντηση:
ESI + XSLT = XXE
Με την καθορισμένη τιμή xslt
για την παράμετρο dca, είναι εφικτό να συμπεριληφθεί eXtensible Stylesheet Language Transformations (XSLT)
βασισμένο ESI. Η συμπερίληψη προκαλεί την ανάκτηση των αρχείων XML και XSLT από τον HTTP surrogate, με το δεύτερο να φιλτράρει το πρώτο. Τέτοια αρχεία XML είναι εκμεταλλεύσιμα για επιθέσεις XML External Entity (XXE), επιτρέποντας στους επιτιθέμενους να εκτελούν επιθέσεις SSRF. Ωστόσο, η χρησιμότητα αυτής της προσέγγισης είναι περιορισμένη, καθώς το ESI περιλαμβάνει ήδη ως vector SSRF. Λόγω της απουσίας υποστήριξης στη βασική βιβλιοθήκη Xalan, οι εξωτερικές DTDs δεν επεξεργάζονται, αποτρέποντας την εξαγωγή τοπικών αρχείων.
XSLT αρχείο:
Check the XSLT page:
XSLT Server Side Injection (Extensible Stylesheet Language Transformations)Αναφορές
Λίστα Ανίχνευσης Brute-Force
Last updated