Server Side Inclusion/Edge Side Inclusion Injection
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
(Uvod preuzet iz Apache docs)
SSI (Server Side Includes) su direktive koje se postavljaju u HTML stranice i evaluiraju na serveru dok se stranice serviraju. Omogućavaju vam da dodate dinamički generisani sadržaj postojećoj HTML stranici, bez potrebe da se cela stranica servira putem CGI programa ili druge dinamičke tehnologije. Na primer, možete postaviti direktivu u postojeću HTML stranicu, kao što je:
<!--#echo var="DATE_LOCAL" -->
I, kada se stranica servira, ovaj fragment će biti evaluiran i zamenjen svojom vrednošću:
Tuesday, 15-Jan-2013 19:28:54 EST
Odluka kada koristiti SSI, a kada imati vašu stranicu potpuno generisanu nekim programom, obično zavisi od toga koliko je stranica statična, a koliko treba da se preračunava svaki put kada se stranica servira. SSI je odličan način da se dodaju mali delovi informacija, kao što je trenutno vreme - prikazano iznad. Ali ako se većina vaše stranice generiše u trenutku kada se servira, trebate potražiti neko drugo rešenje.
Možete pretpostaviti prisustvo SSI ako web aplikacija koristi datoteke sa ekstenzijama .shtml
, .shtm
ili .stm
, ali to nije jedini slučaj.
Tipična SSI ekspresija ima sledeći format:
Postoji problem keširanja informacija ili dinamičkih aplikacija jer deo sadržaja može da bude različit prilikom sledećeg preuzimanja sadržaja. To je ono za šta se ESI koristi, da označi korišćenjem ESI oznaka dinamički sadržaj koji treba da bude generisan pre slanja keširane verzije. Ako napadač može da ubaci ESI oznaku unutar keširanog sadržaja, onda bi mogao da ubaci proizvoljan sadržaj u dokument pre nego što bude poslat korisnicima.
Sledeća zaglavlja u odgovoru sa servera znači da server koristi ESI:
Ako ne možete pronaći ovaj header, server možda koristi ESI u svakom slučaju. Pristup slepom eksploatisanju se takođe može koristiti jer bi zahtev trebao stići do servera napadača:
GoSecure je kreirao tabelu za razumevanje mogućih napada koje možemo pokušati protiv različitih ESI-capable softvera, u zavisnosti od podržane funkcionalnosti:
Includes: Podržava <esi:includes>
direktivu
Vars: Podržava <esi:vars>
direktivu. Korisno za zaobilaženje XSS filtera
Cookie: Kolačići dokumenta su dostupni ESI motoru
Upstream Headers Required: Surrogate aplikacije neće obraditi ESI izjave osim ako upstream aplikacija ne obezbedi zaglavlja
Host Allowlist: U ovom slučaju, ESI uključivanja su moguća samo sa dozvoljenih server hostova, što čini SSRF, na primer, mogućim samo protiv tih hostova
Softver
Includes
Vars
Kolačići
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
Opcionalno
Sledeća ESI direktiva će učitati proizvoljnu datoteku unutar odgovora servera
Daljinsko krađa kolačića
Ukrao kolačić HTTP_ONLY pomoću XSS tako što ga odražava u odgovoru:
Ne mešajte ovo sa "Uključivanjem lokalne datoteke":
Sledeće će dodati Location
header u odgovor
Dodajte zaglavlje u forsiranom zahtevu
Dodajte zaglavlje u odgovor (korisno za zaobilaženje "Content-Type: text/json" u odgovoru sa XSS)
Ovo će poslati informacije za debagovanje uključene u odgovor:
Moguće je koristiti eXtensible Stylesheet Language Transformations (XSLT)
sintaksu u ESI jednostavno tako što ćete postaviti param dca
vrednost na xslt
. Što može omogućiti zloupotrebu XSLT za kreiranje i zloupotrebu ranjivosti XML Eksterne Entitete (XXE):
XSLT datoteka:
Check the XSLT page:
XSLT Server Side Injection (Extensible Stylesheet Language Transformations)Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)