SSTİ / Lab - Live

lyxG

Anka Team Junior
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.

hud76tg.PNG


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;

tplwlp7.PNG

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.

dr3.png



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.

ssti.png


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.
 

ACE Veen

Uzman üye
4 Şub 2023
1,146
577
Belirsiz
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.

hud76tg.PNG


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;

tplwlp7.PNG

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.

dr3.png



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.

ssti.png


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.
eline sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.