Bu çalışmada zafiyetli sickos makinesinin 2. versiyonunu ele aldım. Keyifli okumalar..
Öncelikle zafiyetli makinenin kurulumunu yapıp ardından netdiscover ile ağda ki aktif cihazları taratıp sickos1.2 makinesinin ip adresini tespit ettim. Daha sonra bir nmap taramasıyla açık portların tespitini yaptım.
http portu açık ve ben burada ilk olarak dirb ve nikto araçlarıyla web üzerinde mevcut dizinlerin taramasını gerçekleştirdim.
Nikto taraması sonucunda kayda değer bir şey yoktu. Dirb tarama sonucunda ise index.php ve test adlı iki dizin mevcut olduğunu gördüm.
İndex.php dizinini görüntülediğimde böyle bir ekranla karşılaştım. Başka da birşey yoktu. Dolayısıyla elde ettiğim dizini görüntüledim.
Burada bir index dosyası var ve sürümü lighhttpd/1.4.28. Ayrıca nmap sonucunda da bu versiyon bilgisi görülmektedir. Herhangi bir index sayfasıyla veya herhangi bir dosyayla karşılaştığımızda bunu gözlemleyebilir, test edebiliriz. Curl aracı ile http üzerinden hangi metotlara izin var hangilerini izin yok bunun options’larına bakabiliriz.
Burada PUT metoduna izin verildiğini görüyoruz. Bu nedenle test dizini altına herhangi bir dosya yükleyebiliriz. Yine curl aracını kullanarak bir Shell dosyasını yükledim.
Dosyayı nasıl yüklediğime değinecek olursam, php ile bir cmd diye bir değişken tanımladım. Cmd dosyası içine ne yazarsak sistemde çalıştırılacaktır.
Bunu kontrol ettiğimde php uzantılı shell dosyasının yüklendiğini gördüm. Ardından birkaç basit komut çalıştırdım.
Buraya kadar sorun yok:) Bundan sonrası için bir reverse shell almak istiyorum ve pentest monkey sayfasında python la yazılmış bağlantı kurmamıza olanak tanıyan bir kod mevcut.
Terminal ekranında natcat ile 443 portu üzerinden dinlemeye alıp ardından bu kodu verdiğimiz cmd değişkenine atadım.
Böylelikle bağlantı kurulmuş oldu. Sisteme www-data kullanıcısıyla bağlandığıma ve sistemin hangi işletim sistemini kullandığına dair basit birkaç komut çalıştırdım. Verdiğim komutlara karşılık cevap dönmesi için etkileşimli bir shell aldım.
Bundan sonrası için zafiyet aramak için cron dosyalarına göz atmak istedim. Bunların nerede mevcut olduğunu bilmediğim için locate cron diyerek arattım.
Karşımıza gelen dosyalardan cron.d dizinine geçmek istediğimde izin verilmedi. Diğer bir dizine cron.daily dizinine geçip burdaki dosyaları listelediğimde bir chkrootkit dosyasının mevcut olduğunu gördüm. Chkrootkit genelde zafiyetli bir uygulamadır. Özellikle yetki yükseltme adımları için kullanılmaktadır.
Chkrootkit dosyasının sürümünü öğrenip internette bununla alakalı bir zafiyet var mı araştırdım. Karşıma çıkan aşağıda ki ekranda yapmam gereken bir takım şeylerden bahsedilmiş.
Tmp dizini altına update adında çalıştırılabilir bir dosya koymamız ve daha sonra bu dosyanın chkrootkit tarafından çalıştırılacağı belirtilmektedir. Ayrıca root olarak çalıştırılacağı ve yetki yükseltme aşamasını tamamlayacağımız belirtilmektedir.
Bahsedilenleri uygulamak istediğimde sudoers dosyasının yetkisini değiştirip www-data kullanıcısını tam yetkili yapmasını bunu yaparken de parola sormamasını belirttim. Daha sonra da sudoers dosyasının yetkisini eski haline geri getirmesini ve bunların tmp dizini altında bir ‘update’ dosyası olarak kaydettim.
Update dosyasını oluşturduk fakat henüz çalıştırılabilir bir dosya değil, bunu chmod 777 update komut satırıyla çalıştırabilir yaptım. Sudo su dedikten sonra tam yetkiye eriştim yani hedef sistemde root oldum.
Son olarak root dizini altında ki dosyaları listelediğimde bir txt dosyası farkettim.
Dosyayı görüntülediğimizde “eğer bu dosyayı görüntülediysen sickos 1.2 makinesini başarıyla çözdün” şeklinde bir bildirim almış ve bu makinenin writeup’ını tamamlamış olacağız.