Post

VulnHub | Who Wants To Be King WriteUp

VulnHub | Who Wants To Be King WriteUp

Özet

Game of Thrones dizisi temalı bu meydan okumada, belli başlı dosyaları inceleyerek kullanıcılar arasında geçiş yapacağız.

Keşif aşaması

Nmap taraması

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ nmap -sVC -T4 192.168.111.13
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 7f:55:2d:63:a8:86:4f:90:1f:05:3c:c9:9f:40:b3:f2 (RSA)
|   256 e9:71:11:ed:17:fa:48:06:a7:6b:5b:b6:0e:1b:11:b8 (ECDSA)
|_  256 db:74:42:c4:37:c3:ae:a0:5c:30:26:cb:1a:ef:76:52 (ED25519)
80/tcp open  http    Apache httpd 2.4.41
|_http-title: Index of /
|_http-server-header: Apache/2.4.41 (Ubuntu)
| http-ls: Volume /
| SIZE  TIME              FILENAME
| 31K   2020-12-01 11:23  skeylogger
|_
Service Info: Host: 127.0.1.1; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Tarama sonucuna göz attığımızda HTTP servisi üzerinde skeylogger isimli bir dosyanın listelendiğini görüyoruz. Bu dosyayı indirip, inceleyelim.

skeylogger isimli dosyanın incelenmesi

1
2
$ file skeylogger 
skeylogger: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=ba22a62cfb23e5f98841e89718b9d3f5e76bdf94, for GNU/Linux 3.2.0, with debug_info, not stripped

Elimizdeki dosyanın bir elf dosyası yani linux sistemlerinde çalıştırılabilir bir dosya olduğunu biliyoruz. Dosyanın içerisindeki okunabilir metinleri incelediğimizde base64 ile kodlanmış gibi görünen bir metin ve dosyanın indirildiği dizin ile karşılaşıyoruz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ strings skeylogger
...
Could not determine keyboard device file
ZHJhY2FyeXMK
Usage: skeylogger [OPTION]
Logs pressed keys
  -h, --help		Displays this help message
  -v, --version		Displays version information
  -l, --logfile		Path to the logfile
  -d, --device		Path to device file (/dev/input/eventX)
Simple Key Logger version 0.0.1
grep -E 'Handlers|EV' /proc/bus/input/devices |grep -B1 120013 |grep -Eo event[0-9]+ |tr '\n' '\0'
...
/home/sunita/Descargas/simple-key-logger-master
...

Dosyanın indirildiği dizin yolundan yola çıkarak sistemde sunita adında bir kullanıcı olduğunu düşünebiliriz. Base64 ile kodlanmış veriyi çözdüğümüzde ise Game of Thrones dizisinden bir ejderhanın adı ile karşılaşıyoruz. Diziyi izlemedim ama meşhur sahnelerinden birinde bu adı duymuştum.

1
2
$ echo "ZHJhY2FyeXMK" | base64 -d
dracarys

Bu isim, sunita adlı kullanıcının parolası olabilir diye düşündüm ama denediğimde giriş yapamadım. Ghidra ile dosyanın ne işe yaradığını anlamaya/çözmeye çalıştım. Kendisi, dosyanın root haklarında çalıştırılıp çalıştırılmadığını kontrol ediyor ve hak sağlandığı durumda, bulduğumuz base64 kodlaması adında bir dosya oluşturuyor. Oluşturduğu dosyanın içerisinde önemli bir bilgi yok.

dracarys kelimesini googleda aradığımda bu kelimenin Valyrian dilinde ejderha ateşi anlamına geldiğini öğrendim. Ejderhaların ateş püskürtmesi istenildiğinde bu kelime kullanılıyormuş. Dizide bu kelimeyi daenerys targaryen karakteri kullanıyormuş. İsminden yola çıkarak SSH servisine, dracarys parolasını kullanarak giriş yapabiliyoruz.

Yetki yükseltme

root

Sistemde sunita adında bir kullanıcı bulunmuyor, kandırılmışız. Home dizininde secret adında bir dosya ile karşılaşıyoruz. İçerisinde aşağıdaki mesaj bulunuyor.

1
2
3
4
daenerys@osboxes:~$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  secret  Templates  Videos
daenerys@osboxes:~$ cat secret 
find home, pls

sudo -l komutunu kullandığımızda ise root haklarıyla birkaç dosyayı çalıştırma yetkimizin olduğunu öğreniyoruz.

1
2
3
4
5
6
7
8
daenerys@osboxes:/var/www/html$ sudo -l
Matching Defaults entries for daenerys on osboxes:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, pwfeedback

User daenerys may run the following commands on osboxes:
    (root) NOPASSWD: /usr/bin/mint-refresh-cache
    (root) NOPASSWD: /usr/lib/linuxmint/mintUpdate/synaptic-workaround.py
    (root) NOPASSWD: /usr/lib/linuxmint/mintUpdate/dpkg_lock_check.sh

Tabi bu dosyaların hiçbiri sistemde bulunmuyor. Home dizinindeki .bash_history dosyasını kontrol ettiğimizde ise .local/share dizinindeki djkdsnkjdsn isimli dosyayı sildiğini görüyoruz.

1
2
3
4
5
6
7
8
9
10
11
daenerys@osboxes:~$ cat .bash_history 
cd .local/
ls
cd share/
ls
rm djkdsnkjdsn 
cd
ls
ls -la
rm .bash_history 
...

Bulunduğu dizine gittiğimizde daenerys.zip dosyası ile karşılaşıyoruz. İçerisinde silindiğini öğrendiğimiz dosya bulunuyor. Bu dosyanın içerisinde ise başka bir dizindeki dosya referans verilmiş.

1
2
3
4
5
6
7
8
9
daenerys@osboxes:~/.local/share$ unzip daenerys.zip 
Archive:  daenerys.zip
 extracting: djkdsnkjdsn             
daenerys@osboxes:~/.local/share$ ls
daenerys.zip  djkdsnkjdsn  evolution  flatpak  gnote  nano
daenerys@osboxes:~/.local/share$ cat djkdsnkjdsn 
/usr/share/sounds/note.txt
daenerys@osboxes:~/.local/share$ cat /usr/share/sounds/note.txt
I'm khal.....

Dosyanın içerisindeki khal... ismini GOT dizisinden yola çıkarak tamamladıktan sonra parola olarak kullanıyor ve root kullanıcısına geçiş yapıyoruz.

1
2
3
4
5
6
7
8
9
10
11
daenerys@osboxes:~/.local/share$ su root
Password: 
root@osboxes:/home/daenerys/.local/share# cd 
root@osboxes:~# ls -la
...
-rw-r--r--  1 root root  106 Dec  1  2020 nice.txt
...
root@osboxes:~# cat nice.txt 
¡Congratulation!
You have a good day!
aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1nTjhZRjBZZmJFawo=
This post is licensed under CC BY 4.0 by the author.