Herkese selamlar! Bu yazımda TryHackMe üzerindeki Pickle Rick adlı CTF odasının çözümünü adım adım paylaşacağım. Pickle Rick popüler Rick and Morty dizisinden esinlenerek yapılmış bir CTF ve burada amacımız Pickle Rick karakterinin eski haline dönebilmesi için gereken üç malzemeyi bulmak.
Buraya tıklayarak CTF adresine ulaşabilirsiniz.
Bu CTF özellikle web sunucusu keşfi üzerine odaklanıyor. Web güvenlik açıklarını keşfetmek için nmap ve gobuster gibi araçlar kullandım ve bazı uzaktan komut çalıştırma teknikleri ile Linux komutlarını da devreye soktum.
İlk adım olarak .ovpn uzantılı dosyamızı çalıştırarak VPN bağlantısını kurduk. VPN bağlantısını kurduktan sonra tarayıcımıza hedef IP adresimizi yazarak web sayfasını görüntüledik. Web sayfası içeriğiyle dikkat çekiyor. Sayfanın içeriğini dikkatlice incelememiz gerekebilir çünkü güvenlik açıklarını ve hedefinize dair ipuçlarını buradan bulabiliriz. Diğer yandan nmap taraması başlattık.
nmap -Pn -sS -sV hedef makinanın ip adresi
komutuyla hedef IP adresindeki açık portları ve bu portlara ait servis bilgilerini tespit ettik. -Pn hedefin aktif olduğunu varsayarak ping atılmadan tarama yapılmasını sağlıyor. -sS TCP SYN taraması yapar ve -sV portlara bağlı servis versiyonlarını listeliyor.
Tarama sonuçlarından port 22/tcp: open ssh – SSH servisi açık ve uzaktan erişim sağlanabileceğini söyleyebiliriz. Ve port 80/tcp: open http apache httpd 2.4.41 (Ubuntu) – Apache ile HTTP sunucusu açık versiyon bilgisi 2.4.41 ve Ubuntu üzerinde çalıştığını söyleyebiliriz. Hedefin SSH ve HTTP servisleri sunduğunu ve HTTP sunucusunun Apache olduğunu gösteriyor. Özellikle port 80 üzerinde yapacağımız keşif önemli.
Ön sayfada bir şey bulamayınca sayfanın HTML kaynak koduna baktım ve Ctrl+U ile sayfanın HTML kaynak kodunu açtım. Kaynak kodunu incelediğimde dikkat çeken bir nokta var. Yorum satırlarında bir kullanıcı adı (username) bilgisi yer alıyor.
Bu tür bilgiler genellikle web uygulamalarındaki güvenlik açıklarını keşfetmek için önemli ipuçları olabilir. Yorum satırlarında bulunan username bilgisi ilerleyen adımlarda bir login sayfası için kullanılabilir. Bu bana web sayfasına dizin taraması yapabileceğimi düşündürdü. Username’yi not ederek devam ediyoruz.
Web sayfasına dizin taraması yapmak için Gobuster aracını kullanacağız. Gobuster yüklü değilse Kali Linux üzerinde şu komut ile yüklemeniz gerekiyor.
sudo apt-get install gobuster
Bu komut Gobuster’ı sistemimize kurar. Gobuster web sunucularındaki gizli dizinleri ve dosyaları keşfetmek için kullanılan hızlı ve etkili bir araçtır. Eğer Gobuster önceden yüklenmemişse, bu komut ile yükleyip web sayfasında gizli dizinlere yönelik tarama başlatacağız.
gobuster dir -u hedef-ip -w ../directory-list-2.3-medium.txt -x php,html,txt
Gobuster toolunu yükledikten sonra web sayfasındaki gizli dizinleri ve dosyaları keşfetmek için taramaya başladık. Bu komutta kullandığımız parametreler şu şekilde:
dir
: Gobuster’ı dizin taraması yapmak için kullanacağımızı belirtiyoruz.-u
: Hedef web sayfasının IP adresini belirtiyoruz.-w ../directory-list-2.3-medium.txt
: Dizin isimlerini içeren bir wordlist (kelime listesi) kullanıyoruz. Ben directory-list-2.3-medium.txt dosyasını kullanıyorum.-x php,html,txt
: İlk olarak bu kısım olmadan taradım ama bu parametreleri sonradan ekledim. Çünkü ilk bazı sonuçlar gelmedi. Bu kısım ile aramayı yalnızca .php, .html ve .txt uzantılı dosyalar üzerinde yapacak şekilde sınırlıyoruz ve taramayı daha hedeflenmiş ve hızlı hale getiriyor. Tarama sonucu;
301 – 341B – /assets -> http://ipadresi.p.thmlabs.com/assets/
200 – 1KB – /index.html
200 – 882B – /login.php
200 – 17B – /robots.txt
Bu sonuçlar web sayfasında önemli dizinlerin ve dosyaların bulunduğunu gösteriyor. Özellikle /login.php ve /robots.txt gibi dosyalar potansiyel güvenlik açıkları için önemli birer kaynak olabileceği için direkt dikkatimi çekti.
Hedefin /robots.txt dosyasına göz attık. Dosya anlamsız bir metin içeriyor. Bu tip dosyalar bazen güvenlik açıkları veya ipuçları barındırabileceğinden dolayı not alıp devam ediyoruz.
/login.php sayfasına göz attık ve bir giriş formu ile karşılaştık. Önceden robots.txt dosyasından aldığımız anlamsız metni şifre olarak ve not ettiğimiz username bilgisini kullanıcı adı olarak girerek giriş yaptık. Bu giriş işlemi başarılı oldu ve sisteme erişim sağladık.
Başarılı bir şekilde giriş yaptıktan sonra karşımıza uzak bir sunucuda komut çalıştırabileceğimiz bir ekran çıktı. Bu ekran üzerinden komutlar girerek sistemde keşif yapabildiğimizi farkettim. Sayfanın kaynak kodunu incelediğimizde ise bir yorum satırında şu şifreli bir metin yer alıyordu. Çeşitli şifre convert araçları ile şifreyi çevirdiğimde “rabbit hole” şifresine ulaştım ve bunu not alarak devam ettim.
Uzak sunucuda komut çalıştırma ekranına whoami
komutunu girerek hangi kullanıcıyla işlem yaptığımızı öğrendik. Çıkan sonuç www-data olarak görünüyor bu da şu anda web sunucusunun çalıştığı kullanıcı hesabıyla işlem yaptığımızı gösteriyor.
Uzak sunucuda bulunduğumuz dizindeki dosyaları listelemek için ls -la komutunu kullandık. Listeleme sonucu Sup3rS3cretPickl3Ingred.txt adlı bir dosya dikkatimi çekti. Dosyanın içeriğini görüntülemek için cat komutunu kullanmayı denedik ama bu komutun engellendiğini fark ettim. Komut çalıştırma izinlerimizin sınırlı olduğunu anladım ve dosyayı okuma konusunda alternatif yöntemler aramamız gerektiğini düşündüm. less komutu ile dosyanın içeriğini okudum ve şu çıktıyı aldım.
Ve ilk sorumuzun cevaplamış olduk.
-What is the first ingredient that Rick needs?
-mr. meeseek hair
Ardından aynı işlemi “clue.txt” dosyası için de yaparak aşağıdaki çıktıyı almış oldum.
Look around the file system for the other ingredient. Türkçe’ye çevirdiğimizde “Diğer içerik için dosya sistemine bakın.” ipucunu aldık ve komut satırında sudo ls -la /root
komutunu kullanarak /root dizinindeki dosyaları listeledik. Listeleme sonucunda 3rd.txt adlı bir dosya dikkatimi çekti.
sudo less /root/3rd.txt komutunu kullanarak dosyanın içeriğini görüntüledik. Dosya içinde şu ifadeye rastladım:
“3rd ingredients: fleeb juice“
3rd ingredient’in fleeb juice olduğunu belirtiyor. Bu ipucu ile “What is the last and final ingredient?” sorusunun yanıtını da öğrenmiş olduk: fleeb juice. Sonrasında dosya dizinini incelemeye devam ettim ve /home/rick dizinini farkettim.
Ve içerisinde “second ingredients” kısmıyla karşılaştım.
second ingredients dosyasını less /home/rick/'second ingredients'
komutuyla görüntüledik. Dosyanın içeriği şu şekildeydi:
“1 jerry tear“
Second ingredient’in 1 jerry tear olduğunu belirtiyor. CTF’deki ikinci bileşen hakkında ipucumuzu verdi.
Bu adımla birlikte eksik olan ikinci sorunun cevabını da öğrenmiş olduk.
- ipucu: mr. meeseek hair
- ipucu: 1 jerry tear
- ipucu: fleeb juice.
Çözüm sunucuda yapılan keşifler, web sayfası taramaları ve komut çalıştırma tekniklerini içeriyor. Başarılı bir şekilde tüm malzemeleri bularak Pickle Rick karakterinin eski haline dönebilmesi için gerekli tüm bilgilere ulaşılmış oldu. Ayrıca Rick and Morty çizgifilmini küçükken çok severdim bundan dolayı Pickle Rick temalı bir CTF’yi çözmek benim için keyifliydi. Okuduğunuz için teşekkürler.