PortSwigger SSTI Zafiyeti Lab 3

Bu laboratuvar ortamımızda “Template Engine“i bizden bulmamız istenmiş.Bir nevi dokümantasyon araştırması veya keşfediş.Aklınıza bu motoru tanımlamak için birden fazla senaryo gelebilir,sonuç aynı yere çıkıyorsa sorun yoktur.

Hesabımıza giriş yaptıktan sonra kabaca inceliyorum.Bu sefer farklı olarak herhangi bir yazıya giriş yaptıktan sonra “Edit Template” butonunu görüyoruz.

Edit Template dedikten sonra yapıyı inceliyoruz.Arka planda çalışan resmin üst kısmı,bize gösterilen kısmı ise alt kısım.Yani arka planda {product.price} nin karşılığı bizim gördüğümüz tarafta 99.09 oluyor.

Araştırmamız burada biraz daha şekilleniyor,bizden istenen hangi template’in olduğunu bulup kod enjekte etmekti.

Benim yöntemim burada,okuduğum dokümantasyonlara göre (server-side template injection hakkında) bunun bir yöntemide Template’e hata aldırmak,hatadan anlam çıkarmak.

Tahmin ettiğim şey doğru çıktı.Var olan bir değişkeni tahmini olarak olmayan bir değişkene dönüştürdüm ardından Preview dedim.Almak istediğim hatayı aldım ve bana template’in ismini verdi.Freemarker.

Burada üçüncü araştırmamız gereken şey Freemarker dokümantasyonlarını incelemek ardından uygun payload’ı yerleştirmek.

Araştırmamın sonucu ve sık sık ziyaret ettiğim bir github linki ; https://github.com/swisskyrepo/PayloadsAllTheThings/

Bu repo’dan SSTI Payloadlarını(Freemarker) inceledim.

Bu payloadı deneyelim,eğer çalışıyorsa(ki zaten Freemarker dokümantasyonlarına uygun bir payload) kendimize göre uyarlayabiliriz.

Arka planda çalışan kısmın altına payload’u yerleştirdim ve yeniden preview dedim.Bize şuanki kullanıcımızın (yani dışardan erişmemiz durumunda) ismini verdi,carlos.

O halde payloadumuzu düzenliyoruz.

<#assign ex = "freemarker.template.utility.Execute"?new()>${ ex("rm /home/carlos/morale.txt")}
[#assign ex = 'freemarker.template.utility.Execute'?new()]${ ex('rm /home/carlos/morale.txt')}
${"freemarker.template.utility.Execute"?new()("rm /home/carlos/morale.txt")}

Önceki payload’ımızın içinde “id” komutu yani mevcut kullanıcıyı veriyordu. “id“i kaldırıp silmemiz gereken metin dosyasına uygun bir cümlecik yazdık. rm /home/carlos/morale.txt

Yeniden preview dediğinizde lab ortamınız çözülmüş olacak.

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