XSLT Server Side Injection (Extensible Stylesheet Language Transformations)
Βασικές Πληροφορίες
Το XSLT είναι μια τεχνολογία που χρησιμοποιείται για τον μετασχηματισμό εγγράφων XML σε διάφορες μορφές. Έρχεται σε τρεις εκδόσεις: 1, 2 και 3, με την έκδοση 1 να είναι η πιο συνηθισμένη. Ο διαδικασία μετασχηματισμού μπορεί να εκτελεστεί είτε στον διακομιστή είτε μέσα στον περιηγητή.
Τα πλαίσια που χρησιμοποιούνται συχνότερα περιλαμβάνουν:
Libxslt από το Gnome,
Xalan από το Apache,
Saxon από την Saxonica.
Για την εκμετάλλευση των ευπαθειών που σχετίζονται με το XSLT, είναι απαραίτητο να αποθηκεύονται ετικέτες xsl στην πλευρά του διακομιστή, ακολουθούμενες από την πρόσβαση σε αυτό το περιεχόμενο. Ένα παράδειγμα μιας τέτοιας ευπάθειας καταγράφεται στην παρακάτω πηγή: https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/.
Παράδειγμα - Οδηγός
Εκτέλεση:
Αναγνώριση
Και εκτέλεσε
Διάβασμα Τοπικού Αρχείου
SSRF
Η SSRF (Server-Side Request Forgery) είναι μια ευπάθεια ασφάλειας που επιτρέπει σε έναν επιτιθέμενο να προκαλέσει τον διακομιστή να κάνει αιτήσεις προς άλλους εσωτερικούς ή εξωτερικούς πόρους. Αυτό μπορεί να οδηγήσει σε εκθέσεις ευαίσθητων δεδομένων, εκτέλεση κακόβουλου κώδικα ή ακόμη και στην εκμετάλλευση άλλων ευπαθειών στο σύστημα.
Οι SSRF ευπάθειες συνήθως εκμεταλλεύονται την ανεπαρκή επαλήθευση των εισόδων χρήστη που χρησιμοποιούνται για τη δημιουργία των αιτήσεων. Ο επιτιθέμενος μπορεί να χρησιμοποιήσει διάφορες τεχνικές, όπως την εκμετάλλευση ευπαθειών στον κώδικα της εφαρμογής ή την ανακάτευση των αιτήσεων μέσω εξωτερικών πόρων, όπως τον DNS resolver ή τον HTTP client.
Για να προστατευθείτε από τις SSRF ευπαθείες, πρέπει να εφαρμόσετε αυστηρές ελέγχους επαλήθευσης των εισόδων χρήστη, να περιορίσετε τις εξωτερικές αιτήσεις που μπορεί να κάνει ο διακομιστής και να παρακολουθείτε την κίνηση του δικτύου για ανιχνεύσεις ανεπιθύμητων δραστηριοτήτων.
Είναι σημαντικό να αντιμετωπίσετε τις SSRF ευπαθείες με σοβαρότητα, καθώς μπορούν να έχουν σοβαρές συνέπειες για την ασφάλεια του συστήματός σας.
Εκδόσεις
Μπορεί να υπάρχουν περισσότερες ή λιγότερες λειτουργίες ανάλογα με την έκδοση του XSLT που χρησιμοποιείται:
Αποτύπωση
Μεταφορτώστε αυτό και πάρτε πληροφορίες
SSRF
Η SSRF (Server-Side Request Forgery) είναι μια ευπάθεια ασφάλειας που επιτρέπει σε έναν επιτιθέμενο να προκαλέσει τον διακομιστή να κάνει αιτήσεις προς άλλους εσωτερικούς ή εξωτερικούς πόρους. Αυτό μπορεί να οδηγήσει σε εκθέσεις ευαίσθητων δεδομένων, εκτέλεση κακόβουλου κώδικα ή ακόμη και στην εκμετάλλευση άλλων ευπαθειών.
Οι SSRF ευπάθειες μπορούν να εκμεταλλευτούνται μέσω διάφορων τεχνικών, όπως η χρήση ανεπαρκών ελέγχων εισόδου, η ανάγνωση αρχείων από απομακρυσμένους διακομιστές ή η εκτέλεση εντολών στον εσωτερικό διακομιστή.
Για να προστατευθείτε από SSRF ευπάθειες, μπορείτε να υιοθετήσετε τις εξής πρακτικές ασφαλείας:
Επιβεβαιώστε την εγκυρότητα των εισερχόμενων URL πριν τις χρησιμοποιήσετε σε αιτήσεις.
Περιορίστε τους πόρους που ο διακομιστής μπορεί να αποκτήσει πρόσβαση.
Χρησιμοποιήστε λευκές λίστες για να περιορίσετε τους επιτρεπόμενους προορισμούς αιτημάτων.
Ενημερώστε το λογισμικό σας για να αποκτήσετε τις τελευταίες ενημερώσεις ασφαλείας.
Είναι σημαντικό να είστε ευαισθητοποιημένοι σχετικά με την SSRF και να λάβετε τα απαραίτητα μέτρα για να προστατεύσετε τον διακομιστή σας από αυτήν την ευπάθεια.
Εισαγωγή κώδικα Javascript
Η εισαγωγή κώδικα Javascript είναι μια τεχνική που χρησιμοποιείται στον χώρο του χάκινγκ για να εκτελέσει κακόβουλος κώδικας Javascript σε μια ιστοσελίδα. Αυτό μπορεί να γίνει μέσω ευπάθειών στην εφαρμογή ή μέσω εισαγωγής κώδικα σε είσοδο που αντιμετωπίζεται από τον φυλλομετρητή ως κώδικας Javascript.
Ο κακόβουλος κώδικας Javascript μπορεί να χρησιμοποιηθεί για να προκαλέσει διάφορες επιθέσεις, όπως η παρακολούθηση των χρηστών, η κλοπή προσωπικών πληροφοριών ή ακόμη και η παραπλάνηση των χρηστών για να αποκτήσουν πρόσβαση σε ευαίσθητα δεδομένα.
Για να προστατευθείτε από την εισαγωγή κώδικα Javascript, είναι σημαντικό να εφαρμόζετε κατάλληλες πρακτικές ασφαλείας, όπως η επικύρωση της εισόδου, η αποφυγή της εκτέλεσης μη αξιόπιστου κώδικα και η χρήση των κατάλληλων μηχανισμών ασφαλείας στον φυλλομετρητή.
Κατάλογος καταχώρησης (PHP)
Opendir + readdir
Επιβεβαίωση (var_dump + scandir + false)
Η τεχνική της επιβεβαίωσης (assert) χρησιμοποιείται για να εκτελέσει κώδικα PHP σε ένα σύστημα που είναι ευάλωτο σε επιθέσεις εκτέλεσης κώδικα από απομακρυσμένους χρήστες. Η τεχνική αυτή εκμεταλλεύεται την αδυναμία επαρκούς ελέγχου των εισόδων και την ανεπάρκεια των μηχανισμών ασφαλείας.
Η επιβεβαίωση (assert) συνδυάζει τις συναρτήσεις var_dump
και scandir
για να εκτελέσει κακόβουλο κώδικα. Η συνάρτηση var_dump
χρησιμοποιείται για να εμφανίσει τις τιμές και τους τύπους μεταβλητών, ενώ η συνάρτηση scandir
χρησιμοποιείται για να επιστρέψει το περιεχόμενο ενός φακέλου.
Με τη χρήση της τεχνικής αυτής, ο επιτιθέμενος μπορεί να εκτελέσει κακόβουλο κώδικα και να αποκτήσει ανεξέλεγκτη πρόσβαση στο σύστημα. Είναι σημαντικό να ληφθούν μέτρα ασφαλείας για να αποτραπεί η εκμετάλλευση αυτής της ευπάθειας.
Διάβασμα αρχείων
Εσωτερικό - PHP
Εσωτερικό - XXE
XXE (Εξωτερική Επέκταση Αντικειμένου) είναι μια ευπάθεια που επιτρέπει σε επιτιθέμενους να εκμεταλλευτούν την επεξεργασία XML σε εφαρμογές ιστού. Αυτή η ευπάθεια συμβαίνει όταν η εφαρμογή δέχεται εισόδους XML από τον χρήστη και επιτρέπει την επεξεργασία τους χωρίς να ελέγχει την ασφάλεια. Ο επιτιθέμενος μπορεί να εκμεταλλευτεί αυτήν την ευπάθεια για να διαβάσει αρχεία στον διακομιστή, να εκτελέσει κακόβουλο κώδικα ή να προκαλέσει άλλες επιθέσεις.
Για να εκμεταλλευτεί έναν XXE ευπάθεια, ο επιτιθέμενος μπορεί να χρησιμοποιήσει μια εξωτερική οντότητα για να αναφέρει ένα εξωτερικό αρχείο που θέλει να διαβάσει. Επίσης, μπορεί να χρησιμοποιήσει μια ενσωματωμένη οντότητα για να εκτελέσει κακόβουλο κώδικα.
Για να προστατευθείτε από επιθέσεις XXE, πρέπει να ελέγξετε την είσοδο XML που δέχεστε και να απενεργοποιήσετε την επεξεργασία εξωτερικών οντοτήτων. Επίσης, πρέπει να χρησιμοποιήσετε την τελευταία έκδοση των βιβλιοθηκών XML και να εφαρμόσετε τις συστάσεις ασφαλείας που παρέχονται από τον κατασκευαστή της εφαρμογής.
Μέσω HTTP
Μια από τις πιο συνηθισμένες μεθόδους για την εκτέλεση επιθέσεων XSLT Server-Side Injection είναι μέσω του πρωτοκόλλου HTTP. Αυτή η μέθοδος εκμεταλλεύεται την ικανότητα του διακομιστή να εκτελεί επεξεργασία XSLT σε εξωτερικά αρχεία.
Για να εκτελέσετε μια επίθεση XSLT Server-Side Injection μέσω HTTP, ακολουθήστε τα παρακάτω βήματα:
Εντοπίστε μια ευπάθεια στην εφαρμογή που επιτρέπει την εισαγωγή εξωτερικών αρχείων XSLT.
Δημιουργήστε ένα εξωτερικό αρχείο XSLT που περιέχει τον κακόβουλο κώδικα που θέλετε να εκτελέσετε.
Ανεβάστε το εξωτερικό αρχείο XSLT σε έναν εξωτερικό διακομιστή ή χρησιμοποιήστε έναν υπάρχοντα διακομιστή.
Στείλτε μια αίτηση HTTP στον διακομιστή που περιέχει την ευπάθεια, περνώντας το URL του εξωτερικού αρχείου XSLT ως παράμετρο.
Ο διακομιστής θα εκτελέσει τον κακόβουλο κώδικα που περιέχεται στο εξωτερικό αρχείο XSLT και θα επιστρέψει τα αποτελέσματα στον επιτιθέμενο.
Με αυτόν τον τρόπο, ο επιτιθέμενος μπορεί να αποκτήσει πρόσβαση σε ευαίσθητες πληροφορίες, να εκτελέσει κακόβουλες ενέργειες ή να προκαλέσει διάφορα προβλήματα στον διακομιστή.
Εσωτερική (συνάρτηση PHP)
Σάρωση θυρών
Η σάρωση θυρών είναι μια τεχνική που χρησιμοποιείται για να εντοπιστούν ανοιχτές θύρες σε έναν υπολογιστή ή ένα δίκτυο. Με την σάρωση θυρών, ο χάκερ μπορεί να εντοπίσει πιθανά ευπάθειες ή αδυναμίες στην ασφάλεια του συστήματος και να εκμεταλλευτεί αυτές τις ευκαιρίες για να προβεί σε επιθέσεις. Η σάρωση θυρών μπορεί να γίνει με τη χρήση ειδικών εργαλείων όπως το Nmap, το οποίο ανιχνεύει τις ανοιχτές θύρες και τις υπηρεσίες που εκτελούνται σε αυτές. Με αυτόν τον τρόπο, ο χάκερ μπορεί να αποκτήσει πληροφορίες για το σύστημα και να προχωρήσει σε επόμενα βήματα για να εισβάλει στο σύστημα ή το δίκτυο.
Εγγραφή σε ένα αρχείο
XSLT 2.0
Για να εκτελέσετε μια εντολή εγγραφής σε ένα αρχείο χρησιμοποιώντας το XSLT 2.0, μπορείτε να χρησιμοποιήσετε την εντολή xsl:result-document
. Αυτή η εντολή σας επιτρέπει να δημιουργήσετε ένα νέο αρχείο και να γράψετε περιεχόμενο σε αυτό.
Για παράδειγμα, η παρακάτω εντολή XSLT δημιουργεί ένα νέο αρχείο με όνομα "output.txt" και γράφει το κείμενο "Hello, world!" μέσα σε αυτό:
Μπορείτε να προσαρμόσετε το όνομα του αρχείου και το περιεχόμενο που θέλετε να γράψετε ανάλογα με τις ανάγκες σας.
Επέκταση Xalan-J
Η επέκταση Xalan-J είναι μια ευπάθεια που αφορά την εκτέλεση κακόβουλου κώδικα μέσω ενός επιθέτου XSLT (Extensible Stylesheet Language Transformations) σε έναν διακομιστή Xalan-J. Ο κακόβουλος κώδικας εκτελείται στην πλευρά του διακομιστή, επιτρέποντας στον επιτιθέμενο να αποκτήσει ανεξέλεγκτη πρόσβαση και να εκτελέσει επιθέσεις όπως τη διαρροή δεδομένων.
Για να εκμεταλλευτείτε αυτήν την ευπάθεια, μπορείτε να δημιουργήσετε έναν επιθέτο XSLT που περιέχει κακόβουλο κώδικα και να τον αποστείλετε στον διακομιστή Xalan-J. Ο κακόβουλος κώδικας θα εκτελεστεί αυτόματα από τον διακομιστή, παρέχοντας στον επιτιθέμενο πρόσβαση σε ευαίσθητες πληροφορίες ή δυνατότητα εκτέλεσης επιθέσεων.
Για να προστατευθείτε από αυτήν την ευπάθεια, πρέπει να ενημερώσετε τον διακομιστή Xalan-J σας στην τελευταία έκδοση και να εφαρμόσετε τις συστάσεις ασφαλείας που παρέχονται από τον προμηθευτή.
Άλλοι τρόποι για να γράψετε αρχεία στο PDF
Συμπερίληψη εξωτερικού XSL
Εκτέλεση κώδικα
php:function
Εκτέλεση κώδικα χρησιμοποιώντας άλλα πλαίσια στο PDF
Περισσότερες Γλώσσες
Σε αυτήν τη σελίδα μπορείτε να βρείτε παραδείγματα RCE σε άλλες γλώσσες: https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt_injection#C%23%2FVB.NET%2FASP.NET (C#, Java, PHP)
Πρόσβαση σε στατικές συναρτήσεις PHP από κλάσεις
Η παρακάτω συνάρτηση θα καλέσει τη στατική μέθοδο stringToUrl
της κλάσης XSL:
(Παράδειγμα από http://laurent.bientz.com/Blog/Entry/Item/using_php_functions_in_xsl-7.sls)
Περισσότερα Payloads
Λίστα Ανίχνευσης Brute-Force
Αναφορές
Last updated