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)
(Giriş, Apache belgelerinden** alınmıştır)**
SSI (Server Side Includes), HTML sayfalarına yerleştirilen ve sayfalar sunulurken sunucuda değerlendirilen direktiflerdir. Mevcut bir HTML sayfasına dinamik olarak üretilen içerik eklemenizi sağlar, tüm sayfayı bir CGI programı veya diğer dinamik teknoloji aracılığıyla sunmak zorunda kalmadan. Örneğin, mevcut bir HTML sayfasına şu şekilde bir direktif yerleştirebilirsiniz:
<!--#echo var="DATE_LOCAL" -->
Ve sayfa sunulduğunda, bu parça değerlendirilecek ve değeri ile değiştirilecektir:
Tuesday, 15-Jan-2013 19:28:54 EST
SSI kullanma kararı, sayfanızın ne kadarının statik olduğu ve sayfa her sunulduğunda ne kadarının yeniden hesaplanması gerektiği ile genellikle ilgilidir. SSI, yukarıda gösterilen mevcut zaman gibi küçük bilgi parçaları eklemek için harika bir yoldur. Ancak sayfanızın çoğunluğu sunulduğu anda üretiliyorsa, başka bir çözüm aramanız gerekir.
Web uygulaması .shtml
, .shtm
veya .stm
uzantılı dosyalar kullanıyorsa, SSI'nin varlığını çıkarabilirsiniz, ancak bu sadece bir durum değildir.
Tipik bir SSI ifadesinin aşağıdaki formatı vardır:
Dinamik uygulamaların veya bilgilerin önbelleğe alınması ile ilgili bir sorun vardır, çünkü içeriğin bir kısmı bir sonraki içerik alındığında değişebilir. Bu, ESI'nin kullanılma amacıdır; ESI etiketlerini kullanarak önbellek versiyonundan önce oluşturulması gereken dinamik içeriği belirtmek için. Eğer bir saldırgan önbellek içeriğine bir ESI etiketi enjekte edebilirse, o zaman, kullanıcılar için gönderilmeden önce belgede rastgele içerik enjekte edebilir.
Sunucudan gelen bir yanıttaki aşağıdaki header, sunucunun ESI kullandığını gösterir:
Eğer bu başlığı bulamazsanız, sunucu her durumda ESI kullanıyor olabilir. Bir kör istismar yaklaşımı da kullanılabilir çünkü bir isteğin saldırganın sunucusuna ulaşması gerekir:
GoSecure oluşturdu farklı ESI uyumlu yazılımlar üzerinde deneyebileceğimiz olası saldırıları anlamak için bir tablo:
Includes: <esi:includes>
direktifini destekler
Vars: <esi:vars>
direktifini destekler. XSS Filtrelerini atlatmak için kullanışlıdır
Cookie: Belge çerezleri ESI motoruna erişilebilir
Upstream Headers Required: Surrogate uygulamaları, upstream uygulama başlıkları sağlamadıkça ESI ifadelerini işleme almayacaktır
Host Allowlist: Bu durumda, ESI dahil etmeleri yalnızca izin verilen sunucu ana bilgisayarlarından mümkündür, bu da örneğin SSRF'yi yalnızca bu ana bilgisayarlara karşı mümkün kılar
Yazılım
Includes
Vars
Cookies
Upstream Headers Required
Host Whitelist
Squid3
Evet
Evet
Evet
Evet
Hayır
Varnish Cache
Evet
Hayır
Hayır
Evet
Evet
Fastly
Evet
Hayır
Hayır
Hayır
Evet
Akamai ESI Test Server (ETS)
Evet
Evet
Evet
Hayır
Hayır
NodeJS esi
Evet
Evet
Evet
Hayır
Hayır
NodeJS nodesi
Evet
Hayır
Hayır
Hayır
Opsiyonel
Aşağıdaki ESI direktifi, sunucunun yanıtı içinde rastgele bir dosya yükleyecektir
Uzaktan çerez çalma
HTTP_ONLY çerezini XSS ile çalıp yanıt içinde yansıtarak:
Bunu "Yerel Dosya Dahil Etme" ile karıştırmayın:
Aşağıdaki, yanıta bir Location
başlığı ekleyecektir.
Zorunlu istekte başlık ekle
Yanıtın başlığına ekle (XSS içeren bir yanıtta "Content-Type: text/json" atlatmak için faydalıdır)
Bu, yanıtta yer alan hata ayıklama bilgilerini gönderecektir:
eXtensible Stylesheet Language Transformations (XSLT)
sözdizimini ESI'de kullanmak mümkündür, sadece dca
değerini xslt
olarak belirtmek yeterlidir. Bu, XSLT'yi kötüye kullanarak bir XML Dış Varlık açığı (XXE) oluşturmayı ve kötüye kullanmayı mümkün kılabilir:
XSLT dosyası:
Check the XSLT page:
XSLT Server Side Injection (Extensible Stylesheet Language Transformations)AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)