- 15 Ocak 2019
- 303
- 71
SSTİ, güvenlik açığı template motorlarında çıkan buglardan rce alma dosya okuma veya php üzerinde hassas bilgileri okuma gibi karşımıza çıkan tehlikli açıklardandır. Daha çok yeni nesil front end sitelerinde karşınıza çıkarlar, kullanıcıdan aldığı inputu şablon motoru kendi işlemlerine göre en son kullanıcıya göstermektedir. Bu durumu araştırmak için sayfanın kaynak kodları ve erişebildiğiniz dosyaları okumanızda fayda var.
İlk olarak ufak bir lab çözümü ile başlıyalım portswigger üzerinden giriş yapıyorum. Labımı açtıktan sonra karşıma 1 input verebileceğim sadece product ıd var ordan birşey çıkmadı derken http history alanında message kısmını gördüm yani /?message= kısmı çıkıyor.
Bu alandan sonra size aşağıda verdiğim payload listesi ile burp üzerinden /?message= parametresinde inturder aracılığı $$ koyarak payloadları bu alanda deniyorum ve testlerime başlarken ERB kullandığını anlayabiliyoruz şöyle örneği verelim;
İlk olarak ufak bir lab çözümü ile başlıyalım portswigger üzerinden giriş yapıyorum. Labımı açtıktan sonra karşıma 1 input verebileceğim sadece product ıd var ordan birşey çıkmadı derken http history alanında message kısmını gördüm yani /?message= kısmı çıkıyor.
Bu alandan sonra size aşağıda verdiğim payload listesi ile burp üzerinden /?message= parametresinde inturder aracılığı $$ koyarak payloadları bu alanda deniyorum ve testlerime başlarken ERB kullandığını anlayabiliyoruz şöyle örneği verelim;
Bizden carlos adlı kişinin dosyasını silmemizi istediği için hemen ERB kullanımına baktım ve şu kodu çalıştırmamız gerektiğini anladım <%= system("rm /home/dreambully/ambatukam-never-be-die.txt") %> lakin system ile birlikte gerçek bir senaryo üzerinde rahatça reverse shell alabilir ve pivoting işlemleri yürütebilirdik.
Test yapan kişinin hangi şablon motorunu kullandığını bilmemesi durumunda aşağıdaki payload girdisini kullanabilir. Çıkan sonuçlara göre Freemaker, Tornado, Ninjava.. gibi payload'da kullanılan şablon motorunu öğrenebilir. Bunun için sizlere ufak bir payload seti sunacağım kullanılan template lere özel hangisini kullandığını anlamanız için ;
paylaod
Şimdi ise örnek bir saldırıya bakalım. Bir kullanıcı kayıt formum var ve request i incelediğimde profile.icerik_ambatukam içeriğini görebiliyorum ve aklıma ssti denemek geliyor. Lakin payloadı yazdırdığımda beklendiği gibi template engine da syntax hatasını gördüm ve var olan bir işlemi kapatmak için Kullanmış olduğum }} parametresi şablonun işlemini bitirip kendi işlemime geçmem içindir.
Ufak bir payload testi ardından sistemin tornado kullandığını anladık ve privil esc. işlemi için {{os.system('whoami')}} yazıp testlere devam etmek yeterli olacaktır.