Merhabalar herkese. Bu yazıda sizlerle beraber UA serisinin Literally Vulnerable isimli zafiyetli makinenin çözümünü inceleyeceğiz.
https://www.vulnhub.com/entry/ua-literally-vulnerable,407/
Makine ismi: Literally Vulnerable
Yayınlanma Tarihi: 6 Aralık 2019
Yapan: Syed Umar Arfeen
Boyut/Format: 967MB/VMDK
Zorluk: Kolay-Orta
İşletim Sistemi: Linux
Seri: UA
Açıklama: Makinedeki 3 flag dosyasını bul. (local.txt-user.txt-root.txt)
İlk olarak makinemizin ip adresini öğrenmek için terminale arp-scan -l yazalım.
IP adresimizi öğrendikten sonra nmap taraması ile makinemizde hangi portlar açıkmış bakalım.
Makinemizde 4 farklı port açıkmış. -A parametresi sayesinde detaylı bir taramayıda bizlere sunduğundan portlarla alakalı ufak bilgileri de öğrenmiş olduk. 21 (ftp) portuna anonymous ile bağlantı sağlanabiliyormuş. Makinemizin ftp'sine bağlanmak için terminale aşağıdaki komutu yazınız.
backupPasswords isimli bir dosya bulduk. Bunu kendi bilgisayarımıza indirmek için get komutunu kullandık ve daha sonra ftpden çıktık. İndirdiğimiz dosyayı incelemek için terminale cat komutuyla içeriği yazdıralım.
Bir metin ve bir password list bulduk. Bize metinde anlattığı kısaca "Şifreni gene mi unuttun! Aşağıdaki listede şifrenle birlikte bir liste bırakıyorum sana." şeklinde. Yani bize bruteforce atak yapabilmemiz için kısa bir password listesi sundu. Şimdi sırada bunu nerede kullanacağımızı bulmakta. nmap taramasında 80 (http) portuna bakmak için tarayıcı açıp ipyi girelim.
İlk açtığımda düzensiz bir yapı ile karşılaşıyorum. Daha önceki tecrübelerime dayanarak burada css,js dosyalarını localhost/... şeklinde çağırmış olabilir ve bu yüzden düzensiz kalmış olabileceği geliyor hemen aklıma. Bunu öğrenmek için yüklenemeyen dosyaları tarayıcıdan faydalanarak öğreniyoruz. Tahminim isim hariç doğru çıktı. Bunu düzgün bir hale getirebilmemiz için /etc/hosts dosyasına ufak bir satır eklememiz gerekiyor. Dosyası editör ile açmak için;
Tarayıcımıza dönüp sayfayı yenilediğimizde düzenli bir hale döndüğünü göreceksiniz. Siteye baktığım zaman wordpress olduğunu anlıyorum. wpscan ile eklenti, user, bruteforce derken bu sitede hiçbir şey bulamadım. Anasayfada da başka bir wordpress sitesinden bahsettiği için diğer porttaki http servisini kontrol edelim.
Bu web saysafı üzerinde neler olduğunu öğrenmek için dizin taraması yapalım. Terminale aşağıdaki gibi dirb komutunu girelim.
/phpcms dizini altında wordpress dosyalarını bulabildik. Tarayıcımızdan wordpress sayfasını kontrol edelim.
Bu site ile alakalı user bilgilerini öğrenmek için terminale aşağıdaki komutu girelim.
2 tane kullanıcı bulduk. Bunları bir dosya içine yazalım. Bunun için terminal üzerinden bir dosya oluşturup (user.txt) editör yardımıyla user bilgilerini girelim. Yan yana yazmayınız. Alt alta gelecek şekilde yazınız.
Şimdi elimde user list ve password list bir de wordpress site olduğuna göre wpscan yardımıyla bruteforce atak yapabilirim. Bunun için terminale aşağıdaki komutu girebilirsiniz.
Bruteforce ataktan sonra wpscan bize giriş bilgilerini bulduğunu söylüyor.
Kullanıcı adı: maybeadmin
Password: $EPid%J2L9Luf05
Giriş bilgilerini http://192.168.189.136:65535/phpcms/wp-login.php üzerinden girip panele erişebilirsiniz.
Panele girdiğimde maybeadmin kullanıcısının kısıtlı erişimi olduğunu (editör grubu) farkediyorum. Panelde herhangi bişi bulabilir miyim diye dolaşırken konular arasında garip bir konu mevcut. İçerisini girdiğimde diğer kullanıcının (wpscan de bulduğumuz diğer kullanıcı-> notadmin) bilgilerini bana sunmakta.
Wordpress üzerinde yetkili bir kullanıcının bilgilerine eriştiğime göre wp_admin_shell_upload ile sisteme girebilirim. Aşağıdaki komutları sırasıyla girerek sisteme sızabilirsiniz.
meterpreter yazısını gördüğünüzde shell yazarak içeri girebilirsiniz. Daha rahat komut yazıp görebilmek için bin/bash komutumuzu yazalım.
Sisteme www-data kullanıcı olarak girebildik. Bu CTF çözümünde 3 farklı flag dosyasına ulaşmamız beklenmekteydi. Fakat hiçbirine ulaşamamaktayım. Permision denied hatası alıyoruz hepsinde.
Bizde yetki yükseltme işlemi yapmamız gerekiyor. Sistemde bişiler ararken /home/doe dizin altında -rws... izinlerine sahip çalıştırılabilir bir dosya fark ediyorum. Bunu çalıştırdığımızda ne yaptığını öğrenmek için terminal üzerinde çalıştırdığımızda bize bulunduğumuz dizinin ne olduğunu döndüren bir komut içermekte olduğunu anlayabiliyoruz. Peki bu super kullanıcı dosyasını ben yetkisiz kullanıcı (www-data) bile çalıştırabildiğime göre okuma-yazma (rw) izinleri de mevcut. O halde bu dosya üzerinden ben kullanıcı geçişi yapabilirim belki. Denemek için terminal üzerinde aşağıdaki komutları girelim.
Gördüğünüz gibi john kullanıcına geçiş yapabildik. Fakat ne komut yazarsanız yazın geri dönüşü göremiyoruz. Yinede john kullanıcısı üzerindeyken john için bir ssh-keygen oluşturup ssh ile bağlantı kurabiliriz. Bunu için yeni bir terminal açıp ssh key oluşturalım.
Sisteme sızdığımız terminale geri dönüp john için gerekli ssh dosyalasını oluşturmamız gerekiyor. Bunun için aşağıdaki komutları sırasıyla giriniz.
Şimdi yeni bir terminal açıp ssh bağlantısı yapalım.
Ssh ile giriş sağladık. Fakat sudo -l komutunu çalıştırabilmemiz için john kullanıcısının gerçek şifresini bilmemiz gerekiyor. Bunun için sistemde bir arama yapalım.
Arama sonunda bir dosya bulduk. Bulduğumuz dosyada bize çözülebilir bir b64 (base64) olduğunu söylüyor. Bize verdiği hash değerini çözümlemek için terminalden yardım aldık ve john kullanıcısının gerçek şifresini öğrenebildik. Şimdi sudo -l komutu için elimde şifre var. Terminale komutu girdiğimde bana /var/www/html/test.html dosyası çalıştırılabilir olduğunu söylüyor. Dosya üzerinde bash komutu yerleştirmek için sisteme sızdığımız terminale dönüp aşağıdaki komutları sırasıyla girelim
Ssh ile bağlantı kurduğumuz terminale geri dönüp şimdi bu html dosyasını çalıştırmak kalıyor. Bunun için aşağıdaki komutları sırasıyla girelim.
Ve sonunda makinede root kullanıcısına yükselebildik. Şimdi flag dosyalarımızı okumak kalıyor geriye
H4ck3njoy
Elimden geldiğince çözümü anlatmaya çalıştım. Umarım faydalı ve doğru anlatabilmişimdir. Bir başka CTF çözümünde buluşmak üzere Allah'a emanet olun
https://www.vulnhub.com/entry/ua-literally-vulnerable,407/
Makine ismi: Literally Vulnerable
Yayınlanma Tarihi: 6 Aralık 2019
Yapan: Syed Umar Arfeen
Boyut/Format: 967MB/VMDK
Zorluk: Kolay-Orta
İşletim Sistemi: Linux
Seri: UA
Açıklama: Makinedeki 3 flag dosyasını bul. (local.txt-user.txt-root.txt)
İlk olarak makinemizin ip adresini öğrenmek için terminale arp-scan -l yazalım.
IP adresimizi öğrendikten sonra nmap taraması ile makinemizde hangi portlar açıkmış bakalım.
Kod:
nmap -A -p- 192.168.189.136
Makinemizde 4 farklı port açıkmış. -A parametresi sayesinde detaylı bir taramayıda bizlere sunduğundan portlarla alakalı ufak bilgileri de öğrenmiş olduk. 21 (ftp) portuna anonymous ile bağlantı sağlanabiliyormuş. Makinemizin ftp'sine bağlanmak için terminale aşağıdaki komutu yazınız.
Kod:
ftp 192.168.189.136
Kod:
ls -al
Kod:
get backupPasswords
Kod:
bye
backupPasswords isimli bir dosya bulduk. Bunu kendi bilgisayarımıza indirmek için get komutunu kullandık ve daha sonra ftpden çıktık. İndirdiğimiz dosyayı incelemek için terminale cat komutuyla içeriği yazdıralım.
Kod:
cat backupPasswords
Bir metin ve bir password list bulduk. Bize metinde anlattığı kısaca "Şifreni gene mi unuttun! Aşağıdaki listede şifrenle birlikte bir liste bırakıyorum sana." şeklinde. Yani bize bruteforce atak yapabilmemiz için kısa bir password listesi sundu. Şimdi sırada bunu nerede kullanacağımızı bulmakta. nmap taramasında 80 (http) portuna bakmak için tarayıcı açıp ipyi girelim.
İlk açtığımda düzensiz bir yapı ile karşılaşıyorum. Daha önceki tecrübelerime dayanarak burada css,js dosyalarını localhost/... şeklinde çağırmış olabilir ve bu yüzden düzensiz kalmış olabileceği geliyor hemen aklıma. Bunu öğrenmek için yüklenemeyen dosyaları tarayıcıdan faydalanarak öğreniyoruz. Tahminim isim hariç doğru çıktı. Bunu düzgün bir hale getirebilmemiz için /etc/hosts dosyasına ufak bir satır eklememiz gerekiyor. Dosyası editör ile açmak için;
Kod:
mousepad /etc/hosts
Kod:
192.168.189.136 literally.vulnerable
Tarayıcımıza dönüp sayfayı yenilediğimizde düzenli bir hale döndüğünü göreceksiniz. Siteye baktığım zaman wordpress olduğunu anlıyorum. wpscan ile eklenti, user, bruteforce derken bu sitede hiçbir şey bulamadım. Anasayfada da başka bir wordpress sitesinden bahsettiği için diğer porttaki http servisini kontrol edelim.
Bu web saysafı üzerinde neler olduğunu öğrenmek için dizin taraması yapalım. Terminale aşağıdaki gibi dirb komutunu girelim.
Kod:
dirb http://192.168.189.136:65535/ /usr/share/wordlists/dirb/big.txt
/phpcms dizini altında wordpress dosyalarını bulabildik. Tarayıcımızdan wordpress sayfasını kontrol edelim.
Bu site ile alakalı user bilgilerini öğrenmek için terminale aşağıdaki komutu girelim.
Kod:
wpscan --url http://192.168.189.136:65535/phpcms/ -e u
2 tane kullanıcı bulduk. Bunları bir dosya içine yazalım. Bunun için terminal üzerinden bir dosya oluşturup (user.txt) editör yardımıyla user bilgilerini girelim. Yan yana yazmayınız. Alt alta gelecek şekilde yazınız.
Şimdi elimde user list ve password list bir de wordpress site olduğuna göre wpscan yardımıyla bruteforce atak yapabilirim. Bunun için terminale aşağıdaki komutu girebilirsiniz.
Kod:
wpscan --url http://192.168.189.135:65535/phpcms/ -U user.txt -P backupPasswords
Bruteforce ataktan sonra wpscan bize giriş bilgilerini bulduğunu söylüyor.
Kullanıcı adı: maybeadmin
Password: $EPid%J2L9Luf05
Giriş bilgilerini http://192.168.189.136:65535/phpcms/wp-login.php üzerinden girip panele erişebilirsiniz.
Panele girdiğimde maybeadmin kullanıcısının kısıtlı erişimi olduğunu (editör grubu) farkediyorum. Panelde herhangi bişi bulabilir miyim diye dolaşırken konular arasında garip bir konu mevcut. İçerisini girdiğimde diğer kullanıcının (wpscan de bulduğumuz diğer kullanıcı-> notadmin) bilgilerini bana sunmakta.
Wordpress üzerinde yetkili bir kullanıcının bilgilerine eriştiğime göre wp_admin_shell_upload ile sisteme girebilirim. Aşağıdaki komutları sırasıyla girerek sisteme sızabilirsiniz.
Kod:
msfconsole
Kod:
search wp_admin
Kod:
use 0
Kod:
set RHOSTS 192.168.189.136
Kod:
set RPORT 65535
Kod:
set TARGETURI /phpcms
Kod:
set USERNAME notadmin
Kod:
set PASSWORD Pa$$w0rd13!&
Kod:
exploit
meterpreter yazısını gördüğünüzde shell yazarak içeri girebilirsiniz. Daha rahat komut yazıp görebilmek için bin/bash komutumuzu yazalım.
Kod:
python3 -c 'import pty;pty.spawn("/bin/bash")'
Sisteme www-data kullanıcı olarak girebildik. Bu CTF çözümünde 3 farklı flag dosyasına ulaşmamız beklenmekteydi. Fakat hiçbirine ulaşamamaktayım. Permision denied hatası alıyoruz hepsinde.
Bizde yetki yükseltme işlemi yapmamız gerekiyor. Sistemde bişiler ararken /home/doe dizin altında -rws... izinlerine sahip çalıştırılabilir bir dosya fark ediyorum. Bunu çalıştırdığımızda ne yaptığını öğrenmek için terminal üzerinde çalıştırdığımızda bize bulunduğumuz dizinin ne olduğunu döndüren bir komut içermekte olduğunu anlayabiliyoruz. Peki bu super kullanıcı dosyasını ben yetkisiz kullanıcı (www-data) bile çalıştırabildiğime göre okuma-yazma (rw) izinleri de mevcut. O halde bu dosya üzerinden ben kullanıcı geçişi yapabilirim belki. Denemek için terminal üzerinde aşağıdaki komutları girelim.
Kod:
export PWD=\$\(/bin/bash\)
Kod:
./itseasy
Gördüğünüz gibi john kullanıcına geçiş yapabildik. Fakat ne komut yazarsanız yazın geri dönüşü göremiyoruz. Yinede john kullanıcısı üzerindeyken john için bir ssh-keygen oluşturup ssh ile bağlantı kurabiliriz. Bunu için yeni bir terminal açıp ssh key oluşturalım.
Kod:
ssh-keygen
Kod:
cat /root/.ssh/id_rsa.pub
Sisteme sızdığımız terminale geri dönüp john için gerekli ssh dosyalasını oluşturmamız gerekiyor. Bunun için aşağıdaki komutları sırasıyla giriniz.
Kod:
mkdir -p /home/john/.ssh
Kod:
echo "OlusturdugunuzKEY" > /home/john/.ssh/authorized_keys
Şimdi yeni bir terminal açıp ssh bağlantısı yapalım.
Kod:
Kod:
yes
Kod:
OLUŞTURDUGUNUZŞİFRE
Ssh ile giriş sağladık. Fakat sudo -l komutunu çalıştırabilmemiz için john kullanıcısının gerçek şifresini bilmemiz gerekiyor. Bunun için sistemde bir arama yapalım.
Kod:
find . -type f -iname "*password*" 2>/dev/null
Kod:
cat ./.local/share/tmpFiles/myPassword
Arama sonunda bir dosya bulduk. Bulduğumuz dosyada bize çözülebilir bir b64 (base64) olduğunu söylüyor. Bize verdiği hash değerini çözümlemek için terminalden yardım aldık ve john kullanıcısının gerçek şifresini öğrenebildik. Şimdi sudo -l komutu için elimde şifre var. Terminale komutu girdiğimde bana /var/www/html/test.html dosyası çalıştırılabilir olduğunu söylüyor. Dosya üzerinde bash komutu yerleştirmek için sisteme sızdığımız terminale dönüp aşağıdaki komutları sırasıyla girelim
Kod:
exit
Kod:
echo "/bin/bash" > /var/www/html/test.html
Kod:
chmod 777 /var/www/html/test.html
Ssh ile bağlantı kurduğumuz terminale geri dönüp şimdi bu html dosyasını çalıştırmak kalıyor. Bunun için aşağıdaki komutları sırasıyla girelim.
Kod:
cd /var/www/html
Kod:
sudo ./test.html
Ve sonunda makinede root kullanıcısına yükselebildik. Şimdi flag dosyalarımızı okumak kalıyor geriye
H4ck3njoy
Elimden geldiğince çözümü anlatmaya çalıştım. Umarım faydalı ve doğru anlatabilmişimdir. Bir başka CTF çözümünde buluşmak üzere Allah'a emanet olun
Son düzenleme: