Herkese Selam değerli TurkHackTeam Ailesi Bu Konumda Sizlere Server-side template ( Sunucu tarafı enjeksiyonu ) nedir nasıl yapılır bundan bahsedecegim ilgisi olanlara faydalı olması dilegim ile.
Sunucu tarafı şablon yerleştirme nedir? :
Şablon motorları sabit şablonları geçici verilerle birleştirerek web sayfaları oluşturmak için tasarlanmıştır Sunucu tarafı şablon enjeksiyon saldırıları kullanıcı girişi veri olarak iletilmek yerine dogrudan bir şablona birleştirildiginde gerçekleşebilir. Bu, saldırganların şablon motorunu manipüle etmek için rastgele şablon yönergeleri eklemelerine ve genellikle sunucunun tam kontrolünü ele geçirmelerine olanak tanır. Adından da anlaşılacagı gibi, sunucu tarafı şablon enjeksiyon yükleri sunucu tarafında teslim edilir ve degerlendirilir bu da onları tipik bir istemci tarafı şablon enjeksiyonundan çok daha tehlikeli hale getirebilir.
Sunucu tarafı şablon yerleştirdikten sonra ne gibi etikler görebiliriz? :
bir saldırgan potansiyel olarak uzaktan kod yürütmeyi başarabilir arka uç sunucunun tam kontrolünü ele geçirebilir ve onu dahili altyapıya başka saldırılar gerçekleştirmek için kullanabilir tam olarak uzaktan kod yürütmenin mümkün olmadıgı durumlarda bile, bir saldırgan, potansiyel olarak hassas verilere ve sunucudaki rastgele dosyalara okuma erişimi elde ederek birçok başka saldırının temeli olarak sunucu tarafı şablon enjeksiyonunu kullanmaya devam edebilir.
Bu açıklar nasıl ortaya çıkarlar? :
İçerigin oluşturuldugu statik şablonlar genellikle sunucu tarafı şablon enjeksiyonuna karşı korunaklıdır fakat sizler için Klasik bir örnek. Twig şablonundan alınan aşagıdaki code kısmında belirittigim yer her useri kendi adıyla karşılayan bir e-postadır.
Kod:
$output = $twig->render("Dear {first_name},", array("first_name" => $user.first_name) );
Buda sunucu tarafı şablon enjeksiyonuna karşı korunaklı degildir çünkü kullanıcının adı yalnızca veri olarak şablona aktarılır sonrasında ise Bununla birlikte şablonlar basitçe dizeler oldugundan yazılımcılar bazen kullanıcı girdilerini oluşturmadan önce dogrudan şablonlarla birleştirirler Yukarıdaki code kısmını biraz baz alarak benzer bir şey yapalım fakat bu sefer kullanıcılar e-postanın bölümlerini gönderilmeden önce özelleştirebilirler Örneğin kullanılan ismi seçebilirler.
Kod:
$output = $twig->render("Dear " . $_GET['name']);
Bu örnegimizde ise şablonımuza statik bir deger göndermek yerine şablonun GET parametresi kullanılarak dinamik olarak isim üretilmektedir Şablon sözdizimi sunucu tarafında degerlendirildiginden aşagıdaki code kısmı gibi parametrenin içine sunucu tarafı şablon enjeksiyon yükü yerleştirmesine izin verir.
Kod:
http://vulnerable-website.com/?name={{bad-stuff-here}}
Bu tarz zaafiyetler bazen güvenlik açıklarına pek fazla aşina olmayan yazılımcıların hatalı şablon tasarımlarından kaynaklanıyor. Yukarıdaki code kısmında belirtigim gibi bazıları kullanıcıların giridisini içeren birleştirilmiş ve bir şablona yerleştirilmiş farklı bileşenler görebilirsiniz. biraz SQL inject zaafiyetine benzetilebilir.
Sunucu Tarafı Şablonuna Saldıralım! :
1.Zaafiyeti Bulma;
Sunucu tarafı şablon injecti için zaafiyetlerimiz genellikle karmaşık oldugundan dolayı degil sadece bu açıgı bulmak biraz zordur zaman alabilir ve yorabilir
Kod:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
bu tarz errorlar ile karşılaşabilirsiniz dostlar bu bir sql injection zaafiyetinde aldıgımız errordur.
2.Düz Metin baglacı;
Genel olarak şablonlarda HTML etiketlerini kullanarak veya HTTP yanıtı gönderilmeden önce arka uçta HTML olarak işlenecek şablonun yerel sözdizimini kullanarak içeriği serbestçe girmenize olanak tanır. örnek olarak Freemarkerlerde (Hello ' + username) benzer bir şeye dönüşürdü Hello JİTEM.
Bu Zaafiyet bazen XSS için kullanılabilir ve genellikle basit bir XSS Zaafiyeti ile karıştırılır.
Devam edelim ve şu kodu içeren bir şablon buldugumuzu varsayalım.
Kod:
render('Hello ' + username)
sonrasında aşağıda code kısmında belirtecegim gibi bir URL isteyerek sunucu tarafı şablon inject testi yapabiliriz.
Kod:
http://vulnerable-website.com/?username=${7*7}
Ortaya çıkan bildiri
Kod:
Hello 49
3.Kod Baglacı
Yukarıdaki bellirtigim e-posta örnegimizdeki gibi zaafiyetin kullanıcı girdisinin bir şablon ifadesi ile yerleştirilmesi sonucu ortaya çıkar. aşagıda verecegim code örnegi gibi bir parametrenin içinde olan yada sonradan eklenen kullanıcı tarafından kontrol edilebilen bir degişken olabilir.
Kod:
greeting = getQueryParameter('greeting')
engine.render("Hello {{"+greeting+"}}", data)
Sonrasında URLmiz şu şekilde olacaktır
Kod:
http://vulnerable-website.com/?greeting=data.username
Bu baglaçta sunucu tarafı şablon injectini test etmeni bir diğer yolu önce şablona rastgele HTML ekleyerek parametremizin dogrudan XSS güvenlik açıgı içermedigini belirlemektir
Kod:
http://vulnerable-website.com/?greeting=data.username<tag>
Bir sonraki adımımız ise ortak şablonlama sözdizinini kullanarak ifadeyi denemek ve ondan sonra rastgele HTML injectlemeye çalışmaktır
Kod:
http://vulnerable-website.com/?greeting=data.username}}<tag>
4.Tanıma
Şablonumuzun inject potansiyelini tespit ettiginizde sonraki adım şablon motorunu belirlemektir. Çok fazla şablon dili olmasına ragmen birçogu özellikle HTML karakterleriyle çakışmayacak şekilde seçilmiş çok benzer sözdizimi kullanır. Sonuç olarak, hangi şablon motorunun kullanıldıgını test etmek için sonda yükü oluşturmak nispeten basit olabilir. Yanlızca dizin göndermek genel olarak yeterli oluyor cünkü ortaya çıkan error message size şablon motorunun ne oldugunu ve hangi sürüm oldugunu söylr örnegin olmayan bir ifade <%=foobar%> Ruby tabanlı olan ERB motorundan şu yanıtı alırız.
Kod:
(erb):1:in `<main>': undefined local variable or method `foobar' for main:Object (NameError)
from /usr/lib/ruby/2.5.0/erb.rb:876:in `eval'
from /usr/lib/ruby/2.5.0/erb.rb:876:in `result'
from -e:4:in `<main>'
Evet değerli TurkHackTeam Ailesi Bu Konumda Sizlere Server-side template ( Sunucu tarafı enjeksiyonu ) nedir nasıl yapılır gibi şeylerden bahssetim umarım sizleri bilgilendirmişimdir esen kalın.
İYİ FORUMLAR İYİ EĞLENCELER İYİ ŞANSLAR :diablo
Moderatör tarafında düzenlendi:






