Server Side Inclusion/Edge Side Inclusion Injection
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
(Inleiding geneem uit Apache docs)
SSI (Server Side Includes) is riglyne wat in HTML-bladsye geplaas word, en op die bediener geëvalueer word terwyl die bladsye bedien word. Dit laat jou toe om dynamies 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 mag 'n riglyn in 'n bestaande HTML-bladsy plaas, soos:
<!--#echo var="DATE_LOCAL" -->
En, wanneer die bladsy bedien word, sal hierdie fragment geëvalueer word en met sy waarde vervang word:
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 kwessie van hoeveel van die bladsy staties is, en hoeveel elke keer herbereken moet word wanneer die bladsy bedien word. SSI is 'n uitstekende manier om klein stukke inligting by te voeg, soos die huidige tyd - hierbo getoon. Maar as 'n meerderheid van jou bladsy teen die tyd dat dit bedien word, gegenereer word, moet jy na 'n ander oplossing soek.
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:
Daar is 'n probleem met die kasinligting of dinamiese toepassings aangesien die inhoud vir die volgende keer wat die inhoud opgehaal word, verskillend mag wees. Dit is wat ESI gebruik word, om aan te dui met ESI-tags die dinamiese inhoud wat gegenereer moet word voordat die kasweergawe gestuur word. As 'n aanvaller in staat is om 'n ESI-tag binne die kasinhoud te injekteer, kan hy in staat wees om arbitraire inhoud op die dokument in te dien voordat dit aan die gebruikers gestuur word.
Die volgende kop in 'n antwoord van die bediener beteken dat die bediener ESI gebruik:
As jy hierdie kop nie kan vind nie, kan die bediener dalk steeds ESI gebruik. 'n blindeksploitasi benadering kan ook gebruik word aangesien 'n versoek na die aanvallers bediener moet aankom:
GoSecure het geskep 'n tabel om moontlike aanvalle te verstaan wat ons teen verskillende ESI-ondersteunde sagteware kan probeer, afhangende van die funksionaliteit wat ondersteun word:
Includes: Ondersteun die <esi:includes>
riglyn
Vars: Ondersteun die <esi:vars>
riglyn. Nuttig om XSS-filters te omseil
Cookie: Dokumentkoekies is beskikbaar vir die ESI-enjin
Opwaartse Koppe Vereis: Surrogaat toepassings sal nie ESI-verklarings verwerk nie tensy die opwaartse toepassing die koppe verskaf
Gasheer Toegelaatlys: In hierdie geval is ESI-includes slegs moontlik vanaf toegelate bediener-gashere, wat SSRF, byvoorbeeld, slegs teen daardie gashere moontlik maak
Sagteware | Includes | Vars | Koekies | Opwaartse Koppe Vereis | Gasheer 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 |
Die volgende ESI-riglyn sal 'n arbitrêre lêer binne die antwoord van die bediener laai
Afgeleë steel koekie
Steal cookie HTTP_ONLY met XSS deur dit in die antwoord te reflekteer:
Moet dit nie verwar met 'n "Local File Inclusion":
Die volgende sal 'n Location
kop aan die antwoord voeg
Voeg kop in gedwonge versoek
Voeg 'n kop in die antwoord by (nuttig om "Content-Type: text/json" in 'n antwoord met XSS te omseil)
Dit sal foutopsporingsinligting wat in die antwoord ingesluit is, stuur:
Deur die xslt
waarde vir die dca parameter te spesifiseer, is dit haalbaar om eXtensible Stylesheet Language Transformations (XSLT)
gebaseerde ESI in te sluit. Die insluiting veroorsaak dat die HTTP surrogaat die XML en XSLT lêers ophaal, met laasgenoemde wat die eerste filter. Sulke XML lêers is uitbuitbaar vir XML External Entity (XXE) aanvalle, wat aanvallers in staat stel om SSRF aanvalle uit te voer. Die nut van hierdie benadering is egter beperk aangesien ESI reeds as 'n SSRF-vak gebruik word. Vanweë die afwesigheid van ondersteuning in die onderliggende Xalan biblioteek, word eksterne DTD's nie verwerk nie, wat plaaslike lêeruittrekking voorkom.
XSLT-lêer:
Check die XSLT-bladsy:
XSLT Server Side Injection (Extensible Stylesheet Language Transformations)Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)