# Ubacivanje sa servera/Ubacivanje sa ivice servera
Naučite hakovanje AWS-a od nule do heroja sahtARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
## Osnovne informacije o ubacivanju sa servera
**(Uvod preuzet sa [Apache dokumentacije](https://httpd.apache.org/docs/current/howto/ssi.html))**
SSI (Server Side Includes) su direktive koje se **postavljaju u HTML stranicama i evaluiraju na serveru** dok se stranice serviraju. Omogućavaju vam da **dodajete dinamički generisani sadržaj** postojećoj HTML stranici, bez potrebe da celu stranicu servirate putem CGI programa ili neke druge dinamičke tehnologije.\
Na primer, možete postaviti direktivu u postojeću HTML stranicu, kao što je:
``
I, kada se stranica servira, ovaj fragment će biti evaluiran i zamenjen svojom vrednošću:
`Utorak, 15-Jan-2013 19:28:54 EST`
Odluka o tome kada koristiti SSI, a kada imati celu stranicu generisanu nekim programom, obično je pitanje koliko je stranica statična, a koliko treba ponovo izračunavati svaki put kada se stranica servira. SSI je odličan način da se dodaju male informacije, kao što je trenutno vreme - prikazano iznad. Ali ako većina vaše stranice bude generisana u trenutku kada se servira, trebate potražiti neko drugo rešenje.
Možete zaključiti da postoji SSI ako web aplikacija koristi fajlove sa ekstenzijama \*\* `.shtml`, `.shtm` ili `.stm`\*\*, ali to nije jedini slučaj.
Tipičan SSI izraz ima sledeći format:
```
```
### Provera
Da biste proverili da li je ciljni veb server podložan server-side inclusion (SSI) ili edge-side inclusion (ESI) ubrizgavanju, možete koristiti sledeće metode:
#### 1. Testiranje SSI ubrizgavanja
Da biste proverili da li je ciljni veb server podložan SSI ubrizgavanju, možete koristiti sledeći payload:
```plaintext
```
Ako se rezultat izvršavanja komande `ls` prikaže na stranici, to ukazuje na ranjivost na SSI ubrizgavanje.
#### 2. Testiranje ESI ubrizgavanja
Da biste proverili da li je ciljni veb server podložan ESI ubrizgavanju, možete koristiti sledeći payload:
```plaintext
```
Ako se sadržaj `malicious.xml` fajla prikaže na stranici, to ukazuje na ranjivost na ESI ubrizgavanje.
#### 3. Testiranje kombinovanog SSI i ESI ubrizgavanja
Da biste proverili da li je ciljni veb server podložan kombinovanom SSI i ESI ubrizgavanju, možete koristiti sledeći payload:
```plaintext
```
Ako se sadržaj `malicious.xml` fajla prikaže na stranici, to ukazuje na ranjivost na kombinovano SSI i ESI ubrizgavanje.
#### 4. Automatizovano testiranje
Možete koristiti alate poput `ssishell` ili `esi_scan` za automatizovano testiranje SSI i ESI ubrizgavanja. Ovi alati će vam pomoći da identifikujete ranjivosti i izvršite dalje testove.
```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
Postoji problem sa **keširanjem informacija ili dinamičkih aplikacija** jer se deo sadržaja može **promeniti** do sledećeg puta kada se sadržaj preuzme. To je ono što se koristi **ESI** kako bi se označio dinamički sadržaj koji treba generisati pre slanja keširane verzije.\
Ako **napadač** uspe da **ubaci ESI oznaku** unutar keširanog sadržaja, onda bi mogao da **ubaci proizvoljni sadržaj** u dokument pre nego što ga pošalje korisnicima.
### Detekcija ESI-a
Sledeći **header** u odgovoru sa servera znači da server koristi ESI:
```
Surrogate-Control: content="ESI/1.0"
```
Ako ne možete pronaći ovaj zaglavlje, server **možda i dalje koristi ESI**.\
Takođe se može koristiti **slepa eksploatacijska metoda** jer bi zahtev trebao stići na server napadača:
```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 eksploatacija
[GoSecure je kreirao](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/) tabelu kako bi razumeli moguće napade koje možemo pokušati protiv različitog softvera koji podržava ESI, u zavisnosti od podržane funkcionalnosti:
* **Includes**: Podržava direktivu ``
* **Vars**: Podržava direktivu ``. Korisno za zaobilaženje XSS filtera
* **Cookie**: Kolačići dokumenta su dostupni ESI mašini
* **Upstream Headers Required**: Surrogate aplikacije neće obrađivati ESI izjave osim ako izvorna aplikacija ne obezbedi zaglavlja
* **Host Allowlist**: U ovom slučaju, ESI uključivanje je moguće samo sa dozvoljenih servera, što čini SSRF, na primer, mogućim samo protiv tih servera
| **Softver** | **Includes** | **Vars** | **Cookies** | **Upstream Headers Required** | **Host Whitelist** |
| :--------------------------: | :----------: | :------: | :---------: | :---------------------------: | :----------------: |
| Squid3 | Da | Da | Da | Da | Ne |
| Varnish Cache | Da | Ne | Ne | Da | Da |
| Fastly | Da | Ne | Ne | Ne | Da |
| Akamai ESI Test Server (ETS) | Da | Da | Da | Ne | Ne |
| NodeJS esi | Da | Da | Da | Ne | Ne |
| NodeJS nodesi | Da | Ne | Ne | Ne | Opciono |
#### XSS
Sledeća ESI direktiva će učitati proizvoljni fajl unutar odgovora servera.
```xml
```
#### Zaobilaženje zaštite od XSS napada na klijentskoj strani
In some cases, web applications implement client-side XSS protection mechanisms to prevent the execution of malicious scripts. However, these protections can sometimes be bypassed using various techniques.
U nekim slučajevima, veb aplikacije implementiraju mehanizme zaštite od XSS napada na klijentskoj strani kako bi sprečile izvršavanje zlonamernih skripti. Međutim, ove zaštite ponekad mogu biti zaobiđene korišćenjem različitih tehnika.
One common technique is to encode or obfuscate the payload in a way that it bypasses the client-side XSS filters. This can be done by using different encoding techniques such as URL encoding, HTML entity encoding, or JavaScript escaping.
Jedna uobičajena tehnika je enkodiranje ili obfuskacija payloada na način koji zaobilazi filtere zaštite od XSS napada na klijentskoj strani. Ovo se može postići korišćenjem različitih tehnika enkodiranja kao što su enkodiranje URL-a, enkodiranje HTML entiteta ili eskapiranje JavaScript koda.
Another technique is to use alternative syntax or characters that are not recognized by the client-side XSS filters. This can include using different HTML tags, attributes, or event handlers that are not commonly used or recognized by the filters.
Još jedna tehnika je korišćenje alternativne sintakse ili karaktera koji nisu prepoznati od strane filtera zaštite od XSS napada na klijentskoj strani. Ovo može uključivati korišćenje različitih HTML tagova, atributa ili event handlera koji nisu često korišćeni ili prepoznati od strane filtera.
It is important to note that bypassing client-side XSS protection mechanisms should only be done for ethical hacking purposes and with proper authorization. Unauthorized bypassing of these protections is illegal and unethical.
Važno je napomenuti da zaobilaženje mehanizama zaštite od XSS napada na klijentskoj strani treba vršiti samo u etičke svrhe i uz odgovarajuću autorizaciju. Neovlašćeno zaobilaženje ovih zaštita je ilegalno i neetično.
```xml
x=>alert(/Chrome%20XSS%20filter%20bypass/);>
Use to bypass WAFs:
ipt>alert(1)ript>
error=alert(1)>
```
#### Krađa kolačića
* Udaljena krađa kolačića
```xml
```
* Ukradi kolačić HTTP\_ONLY pomoću XSS-a reflektirajući ga u odgovoru:
```bash
# This will reflect the cookies in the response
# Reflect XSS (you can put '">