Merhaba Değerli TurkHackTeam Üyeleri,
Bu Konumda Sizlere TryHackMe'de Bulunan RootMe CTF'inin Çözümünü Göstereceğim.
Seviye
1) Keşif
2) Shell Almak
3) Yetki Yükseltme
Çözüme Nmap İle Basit Bir Port Taraması Yaparak Başlayacağım.
Tarama Sonucunda 2 Tane Portun Açık Olduğunu Görüyoruz 22 Ve 80 Portu.
1.1) Makineyi tarayın, kaç bağlantı noktası açık?
Cevap : 2
1.2) Apache'nin Hangi Sürümü Çalışıyor?
Cevap : 2.4.29
1.3) 22 Numaralı Bağlantı Noktasında Hangi Hizmet Çalışıyor?
Cevap : ssh
1.4) Web Sunucusundaki Gizli Dizin Nedir?
Web Sunucumuza Gittiğimizde Bizi Böyle Bir Sayfa Karşılıyor.
Şimdi GoBuster Kullanarak Dizin Taraması Yapacağım.
Ben GoBuster Kullandım Siz Dirb Toolunuda Kullanabilirsiniz.
Taramamız Bitti GoBuster Toolunu Kullanarak Sitedeki Tüm Gizli Dizinleri Buldum.
Tüm Dizinlere Gidip Gezindim Ve İşime Yarayacak Tek Dizinin /panel/ Olduğunu Gördüm.
Cevap: /panel/
Cevap : 2
1.2) Apache'nin Hangi Sürümü Çalışıyor?
Cevap : 2.4.29
1.3) 22 Numaralı Bağlantı Noktasında Hangi Hizmet Çalışıyor?
Cevap : ssh
1.4) Web Sunucusundaki Gizli Dizin Nedir?
Web Sunucumuza Gittiğimizde Bizi Böyle Bir Sayfa Karşılıyor.
Şimdi GoBuster Kullanarak Dizin Taraması Yapacağım.
Ben GoBuster Kullandım Siz Dirb Toolunuda Kullanabilirsiniz.
Taramamız Bitti GoBuster Toolunu Kullanarak Sitedeki Tüm Gizli Dizinleri Buldum.
Tüm Dizinlere Gidip Gezindim Ve İşime Yarayacak Tek Dizinin /panel/ Olduğunu Gördüm.
Cevap: /panel/
/panel/ Dizininden siteye dosya yüklenebileceğini gördüm.
Ve Buradan içeriye shell yükleyeceğim.
Kali Linux'un İçinde Yüklü Gelen WebShell'lerden php-reverse-shell.php'i kullanacağım.
Mousepad shell.php diyerek bağlantı kurmak için shell içerisinde ip adresimi ve portumu değiştirdim
İp Adress olarak openvpn ile bağlantı kurduğum için TryHackMe'de olan ip adresimi kullandım.
Ve Sonra Terminalde nc -nvlp 4444 komutunu kullanarak netcat ile dinleme yapacağımız portu veriyoruz.
Sonra /panel/ dizininden shell'i yüklüyoruz.
Evet Upload Dedikten Sonra Böyle Bir Hatayla Karşılaştık.
Site Üzerinde .php Uzantısı Engellenmiş ondan dolayı yükleyemedik.
Shellin Uzantısını Değiştirip shell.php5 Yaptığım Zaman Shell siteye yüklendi.
Sonra Bağlantıyı Almak İçin /uploads/ dizinine gidip shell.php5 dosyasının üzerine 1 kere tıklayıp aktifleştirdim.
Şu an Sistemin İçindeyiz Whoami yazdığımız Zaman www-data çıktısı alıyoruz
Terminali Temizlemek İçin Clear Yazdığımda TERM environment variable not set. Böyle bi hata aldım
Hatayı Google'a yazıp araştırdım ve bir sitede export TERM=xterm diyerek düzeltildiğini gördüm.
2) user.txt
Ve Buradan içeriye shell yükleyeceğim.
Kali Linux'un İçinde Yüklü Gelen WebShell'lerden php-reverse-shell.php'i kullanacağım.
Mousepad shell.php diyerek bağlantı kurmak için shell içerisinde ip adresimi ve portumu değiştirdim
İp Adress olarak openvpn ile bağlantı kurduğum için TryHackMe'de olan ip adresimi kullandım.
Ve Sonra Terminalde nc -nvlp 4444 komutunu kullanarak netcat ile dinleme yapacağımız portu veriyoruz.
Sonra /panel/ dizininden shell'i yüklüyoruz.
Evet Upload Dedikten Sonra Böyle Bir Hatayla Karşılaştık.
Site Üzerinde .php Uzantısı Engellenmiş ondan dolayı yükleyemedik.
Shellin Uzantısını Değiştirip shell.php5 Yaptığım Zaman Shell siteye yüklendi.
Sonra Bağlantıyı Almak İçin /uploads/ dizinine gidip shell.php5 dosyasının üzerine 1 kere tıklayıp aktifleştirdim.
Şu an Sistemin İçindeyiz Whoami yazdığımız Zaman www-data çıktısı alıyoruz
Terminali Temizlemek İçin Clear Yazdığımda TERM environment variable not set. Böyle bi hata aldım
Hatayı Google'a yazıp araştırdım ve bir sitede export TERM=xterm diyerek düzeltildiğini gördüm.
2) user.txt
Evet bizden user.txt dosyasının içeriği isteniyor.
bunun için find komutunu kullandım;
find / -name user.txt
Komutun Çıktısından user.txt Dosyamızın /var/www/ dizininde olduğunu görüyoruz.
/var/www/ dizinine gidip cat user.txt diyerek ilk bayrağımızı yakalıyoruz.
3.1) SUID İzni Olan Dosyaları Arayın,Hangi Dosya Garip?
bunun için find komutunu kullandım;
find / -name user.txt
Komutun Çıktısından user.txt Dosyamızın /var/www/ dizininde olduğunu görüyoruz.
/var/www/ dizinine gidip cat user.txt diyerek ilk bayrağımızı yakalıyoruz.
3.1) SUID İzni Olan Dosyaları Arayın,Hangi Dosya Garip?
SUID Bizim root olmadan root gibi çalıştırabildiğimiz dosyalar.
SUID İzni Olan Dosyaları Aramak İçin Tekrardan find Komutunu Kullandım;
find / -perm -u=s -type f 2>/dev/null
Bunların İçinden Benim Dikkatimi Çeken /usr/bin/python Oldu
Çünkü Python Dosyasını Kullanarak Root Olabiliriz.
Cevap : /usr/bin/python
3.2) root.txt
SUID İzni Olan Dosyaları Aramak İçin Tekrardan find Komutunu Kullandım;
find / -perm -u=s -type f 2>/dev/null
Bunların İçinden Benim Dikkatimi Çeken /usr/bin/python Oldu
Çünkü Python Dosyasını Kullanarak Root Olabiliriz.
Cevap : /usr/bin/python
3.2) root.txt
Yetki Yükseltme İşleminde Python'u kullacağım.
/usr/bin/ dizinine gidip
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
Komutunu Kullanarak root oldum.
find/ -name root.txt Komutunu kullanarak root.txt dosyasının yerini buldum.
cat /root/root.txt diyerek 2. bayrağıda buldum;
THM{pr1v1l3g3_3sc4l4t10n}
/usr/bin/ dizinine gidip
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
Komutunu Kullanarak root oldum.
find/ -name root.txt Komutunu kullanarak root.txt dosyasının yerini buldum.
cat /root/root.txt diyerek 2. bayrağıda buldum;
THM{pr1v1l3g3_3sc4l4t10n}