Herkese merhaba her şeyden önce bu serinin(ileri seviye web güvenliği olmasına rağmen) diğerlerine göre daha eğlenceli olacağını düşünüyorum.
Yazılarımda zafiyetlerin teknik açıklamalarından çok çözümüne odaklanacağım.Ancak ilk kez böyle bir zafiyetin varlığından haberdar olanlar için kısa bir açıklama gerekli.
Eski zamanlara nazaran web yazılımları front-end ve back-end kısımları iç içe olurdu.Web uygulamalarının gelişmesiyle birlikte hayatımıza MVC kavramı girdi. MVC için okuyun ; https://tr.wikipedia.org/wiki/Model-View-Controller
Peki bu laboratuvar ortamımızda ne yapacağız,zafiyeti en verimli şekilde nasıl kullanırız?
Teknik açıklamanın burada yetersiz ve kısa olduğunun farkındayım ancak zaten internette var olan şeyleri tekrarlamayı,tekerleği yeniden icat etmeye gerek duymuyorum. Yapıyı daha iyi anlamanız için her lab ortamında linkler bırakıyorum.
Beğendiğim ve tavsiye ettiğim bir yazı daha ; https://gaissecurity.com/yazi/server-side-template-injection-nedir
Lab ortamımızı sağlayan Port Swigger’in yazılarını ve araştırmalarını öneriyorum.
1 – https://portswigger.net/research/server-side-template-injection
2- https://portswigger.net/web-security/server-side-template-injection
Artık lab ortamımızın çözümüne geçiyoruz.

Paylaştığım linkleri ve lab ortamına girmeden önce gerekli ön bilgileri aldığınızı varsayarak zafiyetli web sitesinin bağlantılarını,kullandığı teknolojileri,get ve post parametrelerini v.b. araştırıyorum ancak henüz 1.lab ortamımızda olduğumuz için web sitesinin kullandığı Template Engine ERB olarak belirlenip bize bilgisi verilmiş. View Details kısmına tıkladığımda mesajı bize GET olarak iletiyor.
Burada önereceğim bir araç var ; https://github.com/epinna/tplmap
Template Injection zafiyetini otomatik olarak tarayıp bize çıktısını verir ama sonuç alamadıysanız bile manuel olarak test etmek her zaman için çok iyidir(zamanınız varsa).
Kullanmadan önce kullanım şekli ve nasıl çalıştığını anlamaya çalışın.İlerideki lab ortamlarını manuel olarak çözeceğimiz için hem aracı sunmak istedim hem de zamandan kazanmış olacağız.
GET isteğimin URL’sini komple alıp test edeceğiz.
Aracı çalıştırıyorum;
root@pentest:/home/secs/tplmap#
python tplmap.py -u ‘https://ac021f8d1f8819aa809e5ba8004b0098.web-security-academy.net/?message=Unfortunately%20this%20product%20is%20out%20of%20stock’
Ve sonuç;

Get parametremizde ERB Engine ile çalışan bir Template Injection buldu. Shell almaya ve dosya okuma,yazmaya müsait olduğunuda görebiliyoruz.Öyleyse lab ortamının bizden istediği şeyi yapalım ve içerideki dosyayı silelim. Yukardaki sorgumuza bir parametre daha ekliyoruz(–os-shell) o da şöyle;
python tplmap.py -u ‘https://ac021f8d1f8819aa809e5ba8004b0098.web-security-academy.net/?message=Unfortunately%20this%20product%20is%20out%20of%20stock’ –os-shell

Ve artık makinenin içindeyiz.

ls komutunu çalıştırıp dizindeki dosyaları kontrol ediyorum.Bizden istenen “morale.txt” dosyasını gördüm.İstenileni yapıp txt dosyasını “rm morale.txt” yazıp siliyorum ve tekrar kontrol ediyorum,silinmiş.
Lab ortamınızı(Web browserdeki portswigger) tekrar kontrol edin,tamamlamış olacaksınız.
Ek olarak not bırakmak istiyorum,belirttiğim makaleleri okumuşsanız bu zafiyetin olduğu yerlerde genellikle XSS zafiyetleride oluyor.Hemen deneyelim;

Sorularınız için yorum yapmayı unutmayın.