Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
SSI (Server Side Includes) είναι εντολές που **τοποθετούνται σε σελίδες HTML και αξιολογούνται στον διακομιστή** ενώ οι σελίδες εξυπηρετούνται. Σας επιτρέπουν να**προσθέσετε δυναμικά παραγόμενο περιεχόμενο** σε μια υπάρχουσα σελίδα HTML, χωρίς να χρειάζεται να εξυπηρετήσετε ολόκληρη τη σελίδα μέσω ενός προγράμματος CGI ή άλλης δυναμικής τεχνολογίας.\
Για παράδειγμα, μπορείτε να τοποθετήσετε μια εντολή σε μια υπάρχουσα σελίδα HTML, όπως:
Η απόφαση για το πότε να χρησιμοποιήσετε SSI και πότε να έχετε τη σελίδα σας να παράγεται εξ ολοκλήρου από κάποιο πρόγραμμα, είναι συνήθως θέμα του πόσο στατική είναι η σελίδα και πόσο χρειάζεται να επαναϋπολογίζεται κάθε φορά που εξυπηρετείται η σελίδα. Το SSI είναι ένας εξαιρετικός τρόπος γιανα προσθέσετε μικρά κομμάτια πληροφοριών, όπως η τρέχουσα ώρα - όπως φαίνεται παραπάνω. Αλλά αν η πλειοψηφία της σελίδας σας παράγεται τη στιγμή που εξυπηρετείται, πρέπει να αναζητήσετε κάποια άλλη λύση.
Μπορείτε να συμπεράνετε την παρουσία του SSI αν η διαδικτυακή εφαρμογή χρησιμοποιεί αρχεία με τις επεκτάσεις **`.shtml`, `.shtm` ή `.stm`**, αλλά δεν είναι μόνο αυτή η περίπτωση.
Υπάρχει ένα πρόβλημα **με την αποθήκευση πληροφοριών ή δυναμικών εφαρμογών** καθώς μέρος του περιεχομένου μπορεί να έχει **διαφορεθεί**για την επόμενη φορά που θα ανακτηθεί το περιεχόμενο. Αυτό είναι που χρησιμοποιείται το **ESI**, γιανα υποδείξει χρησιμοποιώντας ετικέτες ESI το **δυναμικό περιεχόμενο που πρέπει να παραχθεί** πριν από την αποστολή της έκδοσης cache.\
Εάν ένας **επιτιθέμενος** είναι σε θέση να**εισάγει μια ετικέτα ESI** μέσα στο περιεχόμενο cache, τότε θα μπορούσε να είναι σε θέση να**εισάγει αυθαίρετο περιεχόμενο** στο έγγραφο πριν σταλεί στους χρήστες.
[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
* **Upstream Headers Required**: Οι εφαρμογές υποκατάστασης δεν θα επεξεργαστούν δηλώσεις ESI εκτός αν η upstream εφαρμογή παρέχει τις κεφαλίδες
* **Host Allowlist**: Σε αυτή την περίπτωση, οι ESI includes είναι δυνατές μόνο από επιτρεπόμενους διακομιστές, καθιστώντας το SSRF, για παράδειγμα, δυνατό μόνο κατά αυτών των διακομιστών
Με την καθορισμένη τιμή `xslt`για την παράμετρο _dca_, είναι εφικτό να συμπεριληφθεί **`eXtensible Stylesheet Language Transformations (XSLT)`** βασισμένο ESI. Η συμπερίληψη προκαλεί την ανάκτηση των αρχείων XML και XSLT από τον HTTP surrogate, με το δεύτερο να φιλτράρει το πρώτο. Τέτοια αρχεία XML είναι εκμεταλλεύσιμα για επιθέσεις _XML External Entity (XXE)_, επιτρέποντας στους επιτιθέμενους να εκτελούν επιθέσεις SSRF. Ωστόσο, η χρησιμότητα αυτής της προσέγγισης είναι περιορισμένη, καθώς το ESI περιλαμβάνει ήδη ως vector SSRF. Λόγω της απουσίας υποστήριξης στη βασική βιβλιοθήκη Xalan, οι εξωτερικές DTDs δεν επεξεργάζονται, αποτρέποντας την εξαγωγή τοπικών αρχείων.
Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.