# Serverkant Insluiting/Edgekant Insluiting Injeksie
Leer AWS-hacking vanaf nul tot held methtARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
## Basiese Inligting oor Serverkant Insluiting
**(Inleiding geneem vanaf [Apache-dokumentasie](https://httpd.apache.org/docs/current/howto/ssi.html))**
SSI (Serverkant Insluitings) is riglyne wat **in HTML-bladsye geplaas word en op die bediener geëvalueer word** terwyl die bladsye bedien word. Dit stel jou in staat om **dinamies gegenereerde inhoud** by 'n bestaande HTML-bladsy te voeg sonder om die hele bladsy via 'n CGI-program of ander dinamiese tegnologie te bedien.\
Byvoorbeeld, jy kan 'n riglyn in 'n bestaande HTML-bladsy plaas, soos:
``
En, wanneer die bladsy bedien word, sal hierdie fragment geëvalueer word en vervang word met sy waarde:
`Dinsdag, 15-Jan-2013 19:28:54 EST`
Die besluit oor wanneer om SSI te gebruik, en wanneer om jou bladsy heeltemal deur 'n program te laat genereer, is gewoonlik 'n saak van hoeveel van die bladsy staties is en hoeveel elke keer as die bladsy bedien word, herbereken moet word. SSI is 'n goeie manier om klein stukkies inligting, soos die huidige tyd - soos hierbo getoon, by te voeg. Maar as 'n meerderheid van jou bladsy op die oomblik van bediening gegenereer word, moet jy na 'n ander oplossing kyk.
Jy kan die teenwoordigheid van SSI aflei as die webtoepassing lêers met die uitbreidings \*\* `.shtml`, `.shtm` of `.stm`\*\* gebruik, maar dit is nie die enigste geval nie.
'n Tipiese SSI-uitdrukking het die volgende formaat:
```
```
### Kontroleer
Om te bepaal of 'n webtoepassing vatbaar is vir 'n server-side insluiting (SSI) of 'n kantlyn insluiting (ESI) inspuiting, kan jy die volgende stappe volg:
1. Identifiseer die invoer veld: Vind die invoer veld wat gebruik word om die insluitingsvermoë van die toepassing te beheer.
2. Voer 'n eenvoudige insluitingsvermoë in: Voer 'n eenvoudige insluitingsvermoë in, soos `` vir SSI of `` vir ESI. As die insluiting korrek verwerk word en die inhoud van die lêer in die respons verskyn, is die toepassing vatbaar vir inspuiting.
3. Voer 'n kwaadwillige insluitingsvermoë in: Voer 'n kwaadwillige insluitingsvermoë in, soos `` vir SSI of `system('ls')` vir ESI. As die insluiting uitgevoer word en die resultate van die kwaadwillige kode in die respons verskyn, is die toepassing kwesbaar vir inspuiting.
4. Analiseer die respons: Analiseer die respons om te bepaal of die insluitingsvermoë suksesvol was en of die kwaadwillige kode uitgevoer is. As die insluiting suksesvol was en die kwaadwillige kode uitgevoer is, is die toepassing kwesbaar vir inspuiting.
Deur hierdie stappe te volg, kan jy die vatbaarheid van 'n webtoepassing vir SSI- of ESI-inspuiting bepaal en potensiële kwesbaarhede identifiseer wat misbruik kan word deur 'n aanvaller.
```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
```
## Randkant-inlywing
Daar is 'n probleem met die **gekasseerde inligting of dinamiese toepassings** aangesien 'n gedeelte van die inhoud mag **varieer** vir die volgende keer dat die inhoud opgehaal word. Dit is waar **ESI** vir gebruik word, om deur middel van ESI-etikette aan te dui watter **dinamiese inhoud gegenereer moet word** voordat die gekasseerde weergawe gestuur word.\
As 'n **aanvaller** in staat is om 'n ESI-etiket in die gekasseerde inhoud in te spuit, kan hy in staat wees om **arbitrêre inhoud in te spuit** in die dokument voordat dit na die gebruikers gestuur word.
### ESI Opmerking
Die volgende **kop** in 'n respons van die bediener beteken dat die bediener ESI gebruik:
```
Surrogate-Control: content="ESI/1.0"
```
As jy hierdie kop nie kan vind nie, **kan die bediener steeds ESI gebruik**.\
'n **Blind uitbuitingsbenadering kan ook gebruik word** aangesien 'n versoek na die aanvaller se bediener moet arriveer:
```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-uitbuiting
[GoSecure het 'n tabel geskep](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/) om moontlike aanvalle te verstaan wat ons kan probeer teen verskillende ESI-bevoegde sagteware, afhangende van die ondersteunde funksionaliteit:
* **Includes**: Ondersteun die `` rigtingaanwysing
* **Vars**: Ondersteun die `` rigtingaanwysing. Nuttig vir die omseil van XSS-filters
* **Cookie**: Dokumentkoekies is toeganklik vir die ESI-enjin
* **Upstream Headers Vereis**: Surrogaat-toepassings sal nie ESI-verklarings verwerk tensy die opwaartse toepassing die koppe voorsien nie
* **Host Allowlist**: In hierdie geval is ESI-insluitings slegs moontlik vanaf toegelate bedienergasheerders, wat byvoorbeeld slegs moontlik is teen daardie gasheerders
| **Sagteware** | **Includes** | **Vars** | **Cookies** | **Upstream Headers Vereis** | **Host Witlys** |
| :--------------------------: | :----------: | :------: | :---------: | :------------------------: | :-------------: |
| Squid3 | Ja | Ja | Ja | Ja | Nee |
| Varnish Cache | Ja | Nee | Nee | Ja | Ja |
| Fastly | Ja | Nee | Nee | Nee | Ja |
| Akamai ESI Toetsbediener (ETS) | Ja | Ja | Ja | Nee | Nee |
| NodeJS esi | Ja | Ja | Ja | Nee | Nee |
| NodeJS nodesi | Ja | Nee | Nee | Nee | Opsioneel |
#### XSS
Die volgende ESI-rigtingaanwysing sal 'n willekeurige lêer laai binne die respons van die bediener.
```xml
```
#### Deur klient XSS-beskerming te omseil
To bypass client XSS protection, you can try the following techniques:
Om klient XSS-beskerming te omseil, kan jy die volgende tegnieke probeer:
1. **HTML encoding**: Encode the malicious payload using HTML entities to bypass client-side XSS filters. For example, `<` can be encoded as `<` and `>` as `>`.
**HTML-kodering**: Kodeer die skadelike lading met behulp van HTML-entiteite om klientkant XSS-filters te omseil. Byvoorbeeld, `<` kan gekodeer word as `<` en `>` as `>`.
2. **JavaScript encoding**: Encode the payload using JavaScript encoding techniques such as Unicode encoding or URL encoding. This can help bypass client-side XSS filters that only look for specific patterns.
**JavaScript-kodering**: Kodeer die lading met behulp van JavaScript-koderingstegnieke soos Unicode-kodering of URL-kodering. Dit kan help om klientkant XSS-filters te omseil wat slegs spesifieke patrone soek.
3. **DOM-based XSS**: Exploit vulnerabilities in the Document Object Model (DOM) to execute malicious JavaScript code. This bypasses client-side XSS filters as they do not analyze the DOM.
**DOM-gebaseerde XSS**: Benut kwesbaarhede in die Document Object Model (DOM) om skadelike JavaScript-kode uit te voer. Dit omseil klientkant XSS-filters omdat hulle nie die DOM analiseer nie.
4. **Polyglot payloads**: Use payloads that can be interpreted as different types of code, such as both JavaScript and HTML. This can bypass client-side XSS filters that only look for specific code patterns.
**Polyglot-ladings**: Gebruik ladings wat geïnterpreteer kan word as verskillende tipes kode, soos beide JavaScript en HTML. Dit kan klientkant XSS-filters omseil wat slegs spesifieke kodepatrone soek.
It is important to note that bypassing client XSS protection may be unethical and illegal without proper authorization. Always ensure you have the necessary permissions before attempting any hacking techniques.
```xml
x=>alert(/Chrome%20XSS%20filter%20bypass/);>
Use to bypass WAFs:
ipt>alert(1)ript>
error=alert(1)>
```
#### Steel Koekie
* Verwyder koekie op afstand
```xml
```
* Steel koekie HTTP_ONLY met XSS deur dit te reflekteer in die respons:
```bash
# This will reflect the cookies in the response
# Reflect XSS (you can put '">