Neler yeni

InfoSecWarrior CTF – 02 | WriteUp (1 Viewer)

Arık Böke

Grafiker
majorrr
Mesajlar
356
Credits
0
Merhabalar arkadaşlar, bu yazımda sizlerle InfoSecWarriorCTF – 02 isimli zafiyetli makinenin WriteUp’ını paylaşacağım. Adım adım ekran görüntülerini ekleyerek ve açıklamalar yaparak detaylı bir WriteUp hazırlamaya çalıştım. İyi okumalar dilerim.

Okumanıza başlamadan önce sizlere küçük bir uyarı vermek istiyorum. InfoSecWarriorCTF makinelerinin WriteUp’larını özellikle teknik bilgi gereksinimini en alçak seviyede tutarak hazırlıyorum. Bu sebepten dolayı belirli bir teknik bilgiye sahip kişiler için fazla detay ve açıklama içeren bu InfoSecWarriorCTF WriteUp’ları sıkıcı gelebilir.

O hâlde başlayalım :)

Step 1 : Öncelikle kendi saldırgan makinemizin IP’sini öğrendik.

screenshot_1-1.png

Step 2 : “netdiscover” tool’unu kullanarak kurban makinesini tespit ettik.

screenshot_2-2.png

Step 3 : Kurban makinesi üzerinde çalışan servisleri ve bu servislerin version bilgilerini öğreneceğimiz nmap komutunu çalıştırdık. Nmap çıktısına göre 22. Portta bir SSH servisi çalışıyor ve 56563 portunda ne servisi olduğu nmap tarafından tespit edilemeyen bir servis çalışıyor.

screenshot_3-1.png

Step 4 : InfoSecWarrior CTF – 01 Makinesi çözümünde SSH ile bağlantı yapmaya çalışırken “isw0” isimli bir kullanıcı hesabı kullanmıştık. Belki bir bağlantısı olabilir diye bu kullanıcıyı kullanarak SSH portuna bağlantı yapmaya çalıştık. Burada bize troll yapılmakla beraber bir ipucu bırakılmış. Makinenin hostname’ine ve Distro(Dağıtım) isimlerine bakın ve bunu “Secure Shell” almak için kullanın diyor.

screenshot_4-1.png

Step 5 : Makinede 56563. portta çalışan servisi merak ettiğimiz için bir tarayıcı üzerinden gitmeye çalıştık. Saçma bir ekran çıktısı aldık, burada ping atabildiğimiz bir kod parçacığı çalışmakta sanırım. İnternetten 56563 portu ile ilgili biraz araştırma yaptığımızda bir TCP/UDP iletişimi için kullanıldığına dair bir şeyler gördük.

screenshot_5-1.png

Step 6 : Netcat tool’unu kullanarak ilgili porta erişmek istediğimizde kod parçacığını düzgün şekilde çalıştırabilmiş olduk. Bize kaç adet ping göndermek istediğimizi soruyor.

screenshot_6-1.png

Step 7 : 3 değerini girdikten sonra 3 adet ping gönderildiğini görüyoruz.

screenshot_7-1.png

Step 8 : Burada komut çalıştığı için basit “Command Injection” denemeleri yaptık. Fakat her defasında sadece integer(sayısal) değer girmemizi söyleyen bir hata mesajı ile karşılaştık. Ayrıca burada bir terminal değilde “/script.py” isimli bir python dosyasının çalıştığını öğrenmiş olduk.

screenshot_8-1.png

Step 9 : Python dilinde yazılmış olan scriptlerde input(girdi) zafiyetleri için google üzerinden araştırmalar yaptık ve şu internet sitesine denk geldik.

screenshot_9-1.png

Step 10 : Input girebileceğimiz kod parçacıklarında RCE(Remote Code Execution) yapmamızı sağlayan örnek bir komut’a denk geldik.

screenshot_10-1.png

Step 11 : Normalde sayısal bir değer girmemiz gerekirken biz şu komutu yazdık ve gönderdik;
< __import__(“os”).system(“uname -a”) >
Bu komut ile kurban makinesinde “uname -a” komutunu çalıştırmayı denemiş olduk. Ve aynı zamanda çalıştırabildik :)

screenshot_11-1.png

Step 12 : Kurban makinesi üzerinde bir bash’e sahip olabilmek için yazdığımız komut şu şekilde;
< __import__(‘os’).system(“bash”) >
Bu komut sayesinde kurban makine üzerinde bir bash’e sahip olduk. Şimdi kurban makinesine sahipmişiz gibi terminal komutları çalıştırabiliriz.

screenshot_12-1.png

Step 13 : Erişmiş olduğumuz dizinde bir “ls” çalıştırdık ve dizinde var olan dosyaları görüntüledik. “bla2-note” dosyasını görüntülediğimizde “My group password is czNjcjN0. I encoded my gpasswd :p” gibi bir çıktı ile karşılaştık.

screenshot_13-1.png

Step 14 : czNjcjN0 değerini farklı decode türleri ile denedik ve sonunda “Base64” ile decode ettiğimizde “s3cr3t” isimli bir değer elde ettik.

screenshot_14-1.png

Step 15 : Ayrıca “cat /etc/passwd” komutu ile kullanıcı listesini görüntüledik ve şu kullanıcıları görüntüledik.

screenshot_15-1.png
 

Bu konuyu görüntüleyen kullanıcılar