# Εισαγωγή στην Ενσωμάτωση Εξυπηρετητή/Ενσωμάτωση Πλευράς Πελάτη
Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με τοhtARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο 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.
## Βασικές Πληροφορίες για την Ενσωμάτωση Εξυπηρετητή
**(Η εισαγωγή προέρχεται από τα [Apache docs](https://httpd.apache.org/docs/current/howto/ssi.html))**
Οι SSI (Server Side Includes) είναι οδηγίες που **τοποθετούνται σε σελίδες HTML και αξιολογούνται στον εξυπηρετητή** κατά την παροχή των σελίδων. Σας επιτρέπουν να **προσθέτετε δυναμικά δημιουργημένο περιεχόμενο** σε μια υπάρχουσα σελίδα HTML, χωρίς να χρειάζεται να παρέχετε ολόκληρη τη σελίδα μέσω ενός προγράμματος CGI ή άλλης δυναμικής τεχνολογίας.\
Για παράδειγμα, μπορείτε να τοποθετήσετε μια οδηγία σε μια υπάρχουσα σελίδα HTML, όπως:
``
Και, όταν η σελίδα παρέχεται, αυτό το απόσπασμα θα αξιολογηθεί και θα αντικατασταθεί με την τιμή του:
`Τρίτη, 15-Ιαν-2013 19:28:54 EST`
Η απόφαση για το πότε να χρησιμοποιήσετε SSI και πότε να έχετε τη σελίδα σας πλήρως δημιουργημένη από κάποιο πρόγραμμα, είναι συνήθως θέμα του πόσο μεγάλο μέρος της σελίδας είναι στατικό και πόσο χρειάζεται να επανυπολογίζεται κάθε φορά που παρέχεται η σελίδα. Η SSI είναι ένας εξαιρετικός τρόπος για να προσθέσετε μικρά κομμάτια πληροφοριών, όπως η τρέχουσα ώρα - που φαίνεται παραπάνω. Αλλά εάν ένα μεγάλο μέρος της σελίδας σας δημιουργείται κατά την παροχή της, πρέπει να αναζητήσετε κάποια άλλη λύση.
Μπορείτε να συμπεράνετε την παρουσία της SSI εάν η web εφαρμογή χρησιμοποιεί αρχεία με τις επεκτάσεις \*\* `.shtml`, `.shtm` ή `.stm`\*\*, αλλά δεν είναι μόνο αυτή η περίπτωση.
Μια τυπική έκφραση SSI έχει την ακόλουθη μορφή:
```
```
### Έλεγχος
Για να ελέγξετε αν μια εφαρμογή είναι ευάλωτη σε επίθεση Server-Side Inclusion (SSI) ή Edge-Side Inclusion (ESI) Injection, μπορείτε να ακολουθήσετε τα παρακάτω βήματα:
1. Ελέγξτε τον κώδικα της εφαρμογής για τυχόν αδυναμίες ασφαλείας που μπορεί να επιτρέπουν την εκτέλεση κακόβουλου κώδικα.
2. Αναζητήστε ενδείξεις ότι η εφαρμογή χρησιμοποιεί SSI ή ESI, όπως τα ακόλουθα στοιχεία:
- Χρήση των διευθύνσεων URL που περιέχουν τον χαρακτήρα "#" ή τον χαρακτήρα "!".
- Χρήση των εντολών SSI, όπως το ``.
- Χρήση των εντολών ESI, όπως το ``.
3. Εκτελέστε δοκιμές εισχώρησης για να ελέγξετε αν μπορείτε να εισχωρήσετε κακόβουλο κώδικα μέσω των εντολών SSI ή ESI. Χρησιμοποιήστε ειδικούς χαρακτήρες, όπως το `` για SSI ή το `` για ESI.
4. Ελέγξτε την απόκριση της εφαρμογής για να δείτε αν ο κακόβουλος κώδικας εκτελέστηκε με επιτυχία.
5. Αναφέρετε τυχόν ευπάθειες που ανακαλύψατε στους υπεύθυνους της εφαρμογής, ώστε να μπορέσουν να ληφθούν τα απαραίτητα μέτρα ασφαλείας.
Αυτές οι διαδικασίες θα σας βοηθήσουν να ελέγξετε την ευπάθεια μιας εφαρμογής σε επίθεση SSI ή ESI Injection. Είναι σημαντικό να είστε προσεκτικοί και να τηρείτε τους κανόνες ασφαλείας κατά την εκτέλεση αυτών των ελέγχων.
```javascript
// Document name
// Date
// File inclusion
// Including files (same directory)
// CGI Program results
// Including virtual files (same directory)
// Modification date of a file
// Command exec
// Command exec
// Reverse shell
// Print all variables
// Setting variables
```
## Edge Side Inclusion
Υπάρχει ένα πρόβλημα με την **προσωρινή αποθήκευση πληροφοριών ή δυναμικών εφαρμογών** καθώς μέρος του περιεχομένου μπορεί να **μεταβληθεί** για την επόμενη φορά που θα ανακτηθεί το περιεχόμενο. Αυτό είναι αυτό που χρησιμοποιείται η **ESI**, για να υποδείξει χρησιμοποιώντας ετικέτες ESI το **δυναμικό περιεχόμενο που πρέπει να δημιουργηθεί** πριν αποσταλεί η αποθηκευμένη έκδοση.\
Εάν ένας **επιτιθέμενος** είναι σε θέση να **εισαγάγει μια ετικέτα ESI** μέσα στο περιεχόμενο της προσωρινής αποθήκευσης, τότε μπορεί να είναι σε θέση να **εισάγει αυθαίρετο περιεχόμενο** στο έγγραφο πριν αποσταλεί στους χρήστες.
### Ανίχνευση ESI
Ο παρακάτω **κεφαλίδα** σε μια απάντηση από τον διακομιστή σημαίνει ότι ο διακομιστής χρησιμοποιεί ESI:
```
Surrogate-Control: content="ESI/1.0"
```
Εάν δεν μπορείτε να βρείτε αυτήν την κεφαλίδα, ο διακομιστής **μπορεί να χρησιμοποιεί ESI ούτως ή άλλως**.\
Μια **τυφλή προσέγγιση εκμετάλλευσης μπορεί επίσης να χρησιμοποιηθεί** καθώς ένα αίτημα θα πρέπει να φτάσει στον διακομιστή του επιτιθέμενου:
```javascript
// Basic detection
hello
// If previous is reflected as "hello", it's vulnerable
// Blind detection
// XSS Exploitation Example
// Cookie Stealer (bypass httpOnly flag)
// Introduce private local files (Not LFI per se)
// Valid for Akamai, sends debug information in the response
```
### Εκμετάλλευση ESI
[Η GoSecure δημιούργησε](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/) έναν πίνακα για να κατανοήσει τις πιθανές επιθέσεις που μπορούμε να δοκιμάσουμε εναντίον διαφορετικού λογισμικού που υποστηρίζει ESI, ανάλογα με την υποστηριζόμενη λειτουργικότητα:
* **Includes**: Υποστηρίζει την οδηγία ``
* **Vars**: Υποστηρίζει την οδηγία ``. Χρήσιμο για την απόφυγη των XSS φίλτρων
* **Cookie**: Τα cookies του εγγράφου είναι προσβάσιμα από τη μηχανή ESI
* **Απαιτούνται επικεφαλίδες από τον πάνω ροή**: Οι εφαρμογές surrogate δεν θα επεξεργαστούν δηλώσεις ESI εκτός αν η πάνω ροή παρέχει τις επικεφαλίδες
* **Λευκή λίστα κεντρικού διακομιστή**: Σε αυτήν την περίπτωση, οι ESI περιλήψεις είναι δυνατές μόνο από επιτρεπόμενους διακομιστές, καθιστώντας δυνατή, για παράδειγμα, την SSRF μόνο εναντίον αυτών των διακομιστών
| **Λογισμικό** | **Includes** | **Vars** | **Cookies** | **Απαιτούνται επικεφαλίδες από τον πάνω ροή** | **Λευκή λίστα κεντρικού διακομιστή** |
| :--------------------------: | :----------: | :------: | :---------: | :-------------------------------------------: | :-----------------------------: |
| Squid3 | Ναι | Ναι | Ναι | Ναι | Όχι |
| Varnish Cache | Ναι | Όχι | Όχι | Ναι | Ναι |
| Fastly | Ναι | Όχι | Όχι | Όχι | Ναι |
| Akamai ESI Test Server (ETS) | Ναι | Ναι | Ναι | Όχι | Όχι |
| NodeJS esi | Ναι | Ναι | Ναι | Όχι | Όχι |
| NodeJS nodesi | Ναι | Όχι | Όχι | Όχι | Προαιρετικό |
#### XSS
Η ακόλουθη οδηγία ESI θα φορτώσει ένα αυθαίρετο αρχείο μέσα στην απόκριση του διακομιστή
```xml
```
#### Παράκαμψη προστασίας XSS του πελάτη
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.
```xml
x=>alert(/Chrome%20XSS%20filter%20bypass/);>
Use to bypass WAFs:
ipt>alert(1)ript>
error=alert(1)>
```
#### Κλοπή Cookie
* Απομακρυσμένη κλοπή cookie
```xml
```
* Κλέψτε το cookie HTTP\_ONLY με XSS ανακλώντας το στην απόκριση:
```bash
# This will reflect the cookies in the response
# Reflect XSS (you can put '">