- 15 Ocak 2019
- 248
- 27
Selamlar, ben Grey Hat klübünden LyxG bugün sizlerle birlikte TyrHackMe platformu üzerinde zeno adlı ctf'i çözeceğiz. Öncelikle makine ve ağ ayarlarını yaptığımızı varsayarak nmap aracı ile aldığımız ip adresinin kullanıdığı aktif servisleri öğrenelim.
Resimde gördüğümüz üzere aktif olan yalnızca 2 adet portu bulunmakta, ssh servisine dair username v.b bilgimiz olmadığı için direkt olarak çalışan web servisinden ilerleyeceğiz. Öncelikle bizleri böyle bir web sitesi karşılıyor.
Web sitesine girdiğim zaman beni herhangi ilgi çekici bir içerik karşılamadı. Bunun yerine source okumayı ve network modunda herhangi bir haraketlilik de göremedim. Bunun için aktif olan web servisin dizin taramasını yapacağım. Bunun için öncelikle dirb aracının varsayılan common wordlistini kullansam'da hiçbirşey elde edemedim, bunun yerine daha farklı bir wordlist kullanıyorum.
Görüldüğü üzere bir adet dizin buluyoruz, aynı işlemleri subdomain'i fuzz etmek istedim lakin herhangi bir veri yoktu. Buradan devam etmemizin kesin olduğu görülüyor, ilgili path'e girdiğimde hotel sitesi görüyorum.
Artık ; ürün seçme, iletişim, giriş gibi input verebileceğim yerleri görünce sevindiğimi fark ettim. Şuan burp adlı aracım ile manuel testler yapmayı deeyeceğiz. İdor, lfi, rfi testlerini gerçekleştirdiğimde bir sonuç elde edemedim. Lakin requestleri takip ettiğimde ürünleri silme menüsünde id değerlerine sql testi yaptım ve sonuç başarılıydı. "AND" "OR" kullandım, harici olarak order by - grup by işe yaramadığını fark ettim.
Buradan sonra hatalı kolumları bulup içeriden "user()" "database()" gibi temel infolar alabiliriz. Testin bu sürecindnen sonra RMS adlı scriptin kullandığı kullanıcı adını adminolduğunu biliyorum. Sql açığı sayesinde şifresini elde ettikten sonra admin olarak içeri girmek için testlerimize devam edeceğiz.
Elimde 3-4 adet user bilgisi olmasına rağmen tek kıramadığım şey adminin md5 hash'i oldu. Morelimi bozmadım ve internette RMS exploit diye araştırırken RCE açığından faydalanıp reverse shell atılabileceğini öğrendim. Bunun için zaman kaybetmeden exploiti çalıştıralım.
Basit bir php tabanlı cmd get methodla "shellexec" çağıran bir shell attık. İlgili url'e gidince herhangi bir veri görünmeksizin .php?cmd=..... vererek serverdan komut çalıştırabiliriz. Bunun üstüne , serverdan kendimize reverse shell koymayı deneyip yetki yükseltme işlemine geçebiliriz.
Python üzerinden PTY shell aldıktan sonra sistem hakkında verilere baktığımda kernel 3.10x sürümü kullandığı ve /home klasörü altında "edward" adlı bir kullanıcı olduğunu öğreniyoruz. /tmp klasöründe yazma iznimiz var lakin derleme imkanımız olmadığı için crontablar & SUID yardımı ile devam etmeyi denedim lakin tık demiyor. Bende priv. esc. için kullanılan bir araç kullandım ve ;
Tekrardan database in içerisine giriyorum, kendi haslediğim kullanıcı şifrelerini oraya koyacakken linpeas adlı aracın verdiği info yardımıma koşuyor ve gördüğünüz gibi user'ı kencimize çekeceğim.
İlk başta zeno useri ile deneme yapabilirsiniz lakin /etc/passwd içerisinde öyle bir kullanıcı bulunmamakta. Bizde su edward dedikten sonra edward'ın hesabına giriş yapmış bulunmaktayız. Edward hesabı üzerinde "sudo -l" verdiğimizde editleyebileceğimiz bir alan görüyorum.
Bunun ardından editleme yapmak için önce nano'yu deniyorum lakin sistemde olmadığı ve yükleme izinim olmadığı için mecburi olarak vim editöründen editlemek zorunda kaldım.
Bu işlem ardından sistemde çalışan ssh servisine bağlanıyorum, ve gördüğünüz gibi SUID'den yararlanarak en son işlemde ./root -p verdikten sonra yetkim root'a geçiyor. Ve artık /root klasöründe işlem yapma iznimi alıyorum.