NinjaJc01 tarafından hazırlanan Wonderland, TryHackMe’de bulunan ücretsiz bir odadır ve Alice Harikalar Diyarı serisinin ilk aşamasıdır.
Network Taraması
İlk başta, Wonderland CTF odasına nmap taraması yaparak başlıyorum.
Nmap, hedef makinede çalışan 2 hizmetin açık olduğunu gösterdi. Bunlar SSH (22) ve HTTP (80) idi. SSH Hizmetine kimlik bilgileri eksikliği nedeniyle erişemedim, bu nedenle HTTP Hizmetine bakmaya karar verdim.
Bilgi Toplama Süreci
Web tarayıcısına göz attım. Tavşan görüntüsü ve birkaç düzyazı vardı. Bunun dışında, bu web sayfasında bir şey bulamadım.
Daha sonra, aklıma ilk gelen şey dizin keşfi yapmak oldu.
/img dizinine baktığımda birkaç resim vardı ve steghide ile içinde saklanmış metin belgesi olup olmadığına baktım. Ardından hint.txt dosyasına ulaştım, metinde ¨follow the r a b b i t¨ yazıyordu.
Böylelikle, ipucuna bakarak bunun bir dizin olduğunu varsayarak /r/a/b/b/i/t dizinine gittim.
Sayfanın kaynak koduna baktığımda <credential> bilgilere sahip oldum. Artık ssh ile bağlantısı kurabilirim.
Sistemi Sızma Aşaması
Kullanıcı adı alice ve şifre HowDothTheLittleCrocodileImproveHisShiningTail idi. Şimdi bu kimlik bilgilerini kullanarak oturum açmayı deneyebilirim.
Giriş yaptıktan sonra, dizinin içeriğini listeledim ve root.txt adında bir metin dosyası ve walrus_and_the_carpenter.py adında bir python dosyası vardı. root.txt dosyasını flag zannederek okumaya çalıştım, fakat okuma iznimin olmadığını söyledi.
Hangi haklara sahip olduğumu öğrenmek için sudo -l komutunu çalıştırıyorum.
Walrus_and_the_carpenter.py python komut dosyasını kullanıcı rabbit olarak çalıştırabileceğimizi buldum. Daha sonra, cat komutuyla python komut dosyanın içeriğini görüntüledim.
Python library hijacking yaparak ayrıcalık yükseltmeye çalışacağız. Bunu ise, random isimli modülü manipüle ederek yapacağız. Bunun nedeni, python’ın modül arama stratejisinde yatıyor: Python dosyasını çalıştırdığınızda, Python o dosyanın içindeki ek modülleri önce bulunduğunuz klasörde arar. Eğer bu modüller burada bulunamazsa, Python kendi içindeki özel klasörlerde bu modülleri arar.
<strong>nano random.py
import os
import pty
pty.spawn("/bin/bash")</strong>
Böylelikle rabbit kullanıcısı olduk. Rabbit dizinine giderek neler olup olmadığına baktım ama user.txt dosyasını yine bulamadım ve sorudan bir ipucu oldum.
İpucunda her şeyin alt üst olduğunu söylüyor. Demek ki flag’ ın root dizininde olabileceğini düşündüm.
İlk olarak, SUID bitine sahip olan teaParty isimli dosyaya bakalım. Dosya türünü kontrol ettiğimde çalıştırılabilir dosya olduğunu gördüm. Dosyayı çalıştırdığım zaman; input olarak ne giriyorsam gireyim “Segmentation fault (core dumped)” hata mesajıyla karşılaştım.
TeaParty adlı bu program, saat ve zamanla ilgili işler yapmak için bir “date” adlı komut kullanıyor. Biraz oyun oynayarak, bu programın içine kendi “date” komutumuzu ekleyebilir ve bu sayede programın düşündüğümüzden farklı bir iş yapmasını sağlayabilirim.
Yetki Yükseltme Aşaması
PATH değişkenini ayarladıktan sonra teaParty programı çalıştırdım ve hatter kullanıcısına erişim sağladık.
Daha sonra, bu kullanıcının ana dizini altında ne olduğunu inceledim ve password.txt adlı bir dosya ile karşılaştım.
Özel bir şifre var gibi görünüyor ve bu şifreyi kullanarak bilgisayara giriş yapabiliriz. SSH adlı bir bağlantı yöntemini kullanarak ‘hatter’ adlı kullanıcı olarak bilgisayara erişim sağlayabiliriz.
Aşağıdaki komutu çalıştırdım bunun temel amacı, sistemde hangi dosyaların veya programların özel yeteneklere sahip olduğunu gösterir.
<strong>getcap -r / 2>/dev/null</strong>
Perl’in CAP_SETUID
özelliğine sahip olduğunu gördük. Bu özellik, kullanıcı kimliğini değiştirebilmemize olanak tanır. GTFOBins kaynak olarak işimize yarayacak.
Artık root olduk. Elde ettiğimiz root yetkisiyle Alice kullanıcısının home dizini içinde bulunan root.txt dosyasını okuyabiliriz.
Writeup kategorisinde bu yazımızı da inceleyebilirsiniz.