PortSwigger SSTI Zafiyeti Lab 2

Link ; https://portswigger.net/web-security/server-side-template-injection/exploiting/lab-server-side-template-injection-basic-code-context

Bu laboratuvar ortamımızda öncekinden farklı olarak “Tornado Engine” ile oluşturulmuş template injection karşımıza çıkıyor.Gerekli ön bilgileri aldıysak incelemeye başlayalım.

Tornado Template genel bilgi için okuyun ; https://www.tornadoweb.org/en/stable/template.html

Injection için bize yararlı olan kısım ise ;

t = template.Template("<html>{{ myvalue }}</html>")
print(t.generate(myvalue="XXX"))

Yani enjektemizi {{myvalue}} olan kısma yapacağız.

Bize ipucu olarak “Preferred Name” kısmına iyice bakmamız istenmiş.

“Nickname” olarak güncellendikten sonra bu sayfada yapacak bir şeyimiz kalmıyor. Bize bir ipucu lazım.Preferred name ile oynamamız gerektiğine göre Blog Anasayfasına gelip herhangi bir gönderiye tıklıyorum ve test mesajı gönderiyorum,her şey normal.

Bu sefer tekrar Burp Suite Proxy’i açıp “preferred name” parametresiyle uğraşalım.Yukarıda Tornado template ile ilgili ipucunu bulmuştuk.My Account kısmına tıklayıp önüme çıkan sayfada submit diyerek isteği yakalıyorum ve Repeater’a gönderiyorum.

Preferred name’in arka plandaki ismi blog-post-author-display.O zaman enjekte işlemimize başlayabiliriz.

PortSwigger’in arayüzünde çıkan seçeneklerden herhangi birini seçebilirsiniz.Ben Nickname’i seçmiştim ve doğal olarak user.first_name olarak karşıma çıktı ve yanına hemen payload’ı enjekte ettim.Basit olarak matematik işlemi yaptırdık..Peki bizim adımız nerede gözüküyordu? Hatırlarsanız test yorumu atmıştık.Orayı bi kontrol etmekte fayda var.

Dikkat ederseniz {{9*9 payloadumuz için ismimizin yanına 81 eklenmiş.Yani doğru yoldayız.

Tornado Engine’nin Python Syntax’ı ile çalıştığını dokümanlardan öğrenmiştik.Lab’da bizden istenen şey bir metin dosyasını silmek. O halde tekrar araştırmaya başlıyoruz.Python’da hangi metodlar işimize yarayabilir ?

https://www.geeksforgeeks.org/python-os-system-method/

O zaman buna göre Repeater’da olan isteğimin parametresini biraz daha değiştirmeli ve geliştirmeliyim.

user.nickname}}{% import os %}{{os.system(‘rm /home/carlos/morale.txt’)}}

Her şeyi doğru yaptıysanız muhtemelen başarılı olacaksınız.

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


Bu yazıyı beğendin mi ?0000

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir