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)
(Utangulizi umetolewa kutoka Apache docs)
SSI (Server Side Includes) ni maagizo ambayo yanapangwa katika kurasa za HTML, na yanakaguliwa kwenye seva wakati kurasa zinatolewa. Yanakuwezesha kuongeza maudhui yanayozalishwa kwa njia ya kidijitali kwenye ukurasa wa HTML uliopo, bila ya lazima kutoa ukurasa mzima kupitia programu ya CGI, au teknolojia nyingine ya kidijitali. Kwa mfano, unaweza kuweka agizo kwenye ukurasa wa HTML uliopo, kama:
<!--#echo var="DATE_LOCAL" -->
Na, wakati ukurasa unapotolewa, kipande hiki kitakaguliwa na kubadilishwa na thamani yake:
Jumanne, 15-Jan-2013 19:28:54 EST
Uamuzi wa lini kutumia SSI, na lini kuwa na ukurasa wako ukizalishwa kabisa na programu fulani, kwa kawaida ni suala la kiasi gani cha ukurasa ni cha kudumu, na kiasi gani kinahitaji kuhesabiwa upya kila wakati ukurasa unapotolewa. SSI ni njia nzuri ya kuongeza vipande vidogo vya taarifa, kama vile wakati wa sasa - ulioonyeshwa hapo juu. Lakini ikiwa sehemu kubwa ya ukurasa wako inazalishwa wakati inapotolewa, unahitaji kutafuta suluhisho lingine.
Unaweza kudhani uwepo wa SSI ikiwa programu ya wavuti inatumia faili zenye kiendelezis.shtml
, .shtm
au .stm
, lakini si hivyo tu.
Msemo wa kawaida wa SSI una muundo ufuatao:
Kuna tatizo la kuficha taarifa au programu za kidinamik kama sehemu ya maudhui ambayo yanaweza kuwa tofauti kwa wakati ujao maudhui yanapopatikana. Hii ndiyo sababu ESI inatumika, kuashiria kutumia lebo za ESI maudhui ya kidinamik ambayo yanahitaji kuzalishwa kabla ya kutuma toleo la cache. Ikiwa mshambuliaji anaweza kuchanganya lebo ya ESI ndani ya maudhui ya cache, basi, anaweza kuwa na uwezo wa kuchanganya maudhui yoyote kwenye hati kabla ya kutumwa kwa watumiaji.
Kichwa kifuatacho katika jibu kutoka kwa seva kinamaanisha kwamba seva inatumia ESI:
Ikiwa huwezi kupata kichwa hiki, seva inaweza kuwa inatumia ESI hata hivyo. Njia ya kulipua kipofu inaweza pia kutumika kwani ombi linapaswa kufika kwenye seva ya washambuliaji:
GoSecure created a table to understand possible attacks that we can try against different ESI-capable software, depending on the functionality supported:
Includes: Inasaidia <esi:includes>
directive
Vars: Inasaidia <esi:vars>
directive. Inatumika kwa kupita XSS Filters
Cookie: Vidakuzi vya hati vinapatikana kwa injini ya ESI
Upstream Headers Required: Programu za surrogates hazitashughulikia taarifa za ESI isipokuwa programu ya juu inatoa vichwa
Host Allowlist: Katika kesi hii, ESI inajumuisha inawezekana tu kutoka kwa wenyeji wa seva walioidhinishwa, na kufanya SSRF, kwa mfano, iwezekane tu dhidi ya wenyeji hao
Software
Includes
Vars
Cookies
Upstream Headers Required
Host Whitelist
Squid3
Yes
Yes
Yes
Yes
No
Varnish Cache
Yes
No
No
Yes
Yes
Fastly
Yes
No
No
No
Yes
Akamai ESI Test Server (ETS)
Yes
Yes
Yes
No
No
NodeJS esi
Yes
Yes
Yes
No
No
NodeJS nodesi
Yes
No
No
No
Optional
The following ESI directive will load an arbitrary file inside the response of the server
Kuiba keki kwa mbali
Pora kidakuzi HTTP_ONLY kwa XSS kwa kulireflect katika jibu:
Usichanganye hii na "Local File Inclusion":
Ifuatayo itaongeza kichwa cha Location
kwenye jibu
Ongeza kichwa katika ombi lililolazimishwa
Ongeza kichwa katika jibu (ni muhimu kupita "Content-Type: text/json" katika jibu lenye XSS)
Hii itatuma taarifa za debug zilizojumuishwa katika jibu:
Inawezekana kutumia eXtensible Stylesheet Language Transformations (XSLT)
sintaksia katika ESI kwa kuashiria thamani ya param dca
kama xslt
. Hii inaweza kuruhusu kutumia XSLT kuunda na kutumia udhaifu wa XML External Entity (XXE):
XSLT faili:
Check the XSLT page:
XSLT Server Side Injection (Extensible Stylesheet Language Transformations)Jifunze & fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze & fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)