HackTheBox / Paper

LinkDifficultyCreator
PaperEasysecnigma

Scan / Enumeration

Makineyi keşif işlemine nmap taraması yaparak başlıyorum. Makinedeki açık portları hızlı bir şekilde tespit edebilmek için -T4 parametresini kullanıyorum. Bulunan portları tarama tamamlanmadan göstermesi ve taramanın ne zaman biteceğine dair bilgi vermesi için -vv parametresini veriyorum. Makinedeki bütün portları taraması için -p- parametresini verdikten sonra makinenin IP adresini vererek taramayı başlatıyorum.

nmap -T4 -vv -p- $IP

Tarama sonuçlandığında 22, 80 ve 443 portlarının açık olduğunu görüyorum. Bu portlar üzerinde çalışan servisler hakkında daha ayrıntılı bilgiye sahip olmak için bir nmap taraması daha gerçekleştiriyorum. Versiyon ve script taraması yapmak için -sVC parametresini kullanıyorum. Taranacak portları -p parametresiyle belirtiyorum. Taramanın sonucunun bir dosyaya kayıt edilmesi için -oN parametresini kullanıyorum ve makinenin IP adresini vererek taramayı başlatıyorum.

nmap -sVC -p22,80,443 -oN paper.nmap $IP
nmap scan

Makinede 22 portunda SSH, 80 portunda Apache web server ve 443 portunda aynı Apache server’ın https versiyonu çalışıyor. 22 portunda çalışan OpenSSH 8.0 servisi için searchsploit ve arama motorları aracılığıyla exploit araması yapıyorum fakat işime yarayabilecek bir exploit bulamıyorum.

80 portunda çalışan web sunucusunu keşfetmeye başlıyorum. İlk olarak Apache 2.4.37 versiyonu için bir exploit araması yapıyorum fakat işime yarayacak bir exploit ile karşılaşmıyorum. Siteyi el ile keşfetmeye başlamadan önce site üzerinde işime yarayabilecek dizinleri bulmak için bir gobuster ve sitenin yapılandırması hakkında bilgi sahibi olmak için bir nikto taraması başlatıyorum.

gobuster aracına dir parametresini vererek taramanın bir dizin taraması olduğunu belirtiyorum. Sitenin adresini -u, taramada kullanılacak wordlist’i -w parametresiyle veriyorum. Dizin taraması sırasında dosya taraması da yapmak için -x parametresiyle dosya uzantılarını belirtiyorum. Tarama hızını -t parametresiyle belirliyorum. Taramanın çıktısını -o ile bir dosyaya yönlendirdikten sonra taramayı başlatıyorum.

gobuster dir -u http://$IP -w common.txt -x php,txt,db,bak -t 30 -o paper.buster

nikto taramasını tamamen default ayarlarda -h parametresiyle hedef sistemi belirterek başlatıyorum.

nikto -h http://$IP

Taramalar devam ederken bir browser aracılığıyla siteye erişiyorum ve incelemeye başlıyorum. Tamamiyle varsayılan bir sayfa olması dışında dikkatimi herhangi bir şey çekmiyor. Dizin taraması yapan gobuster aracının çıktısında /cgi-bin ve /manual dizinlerini görüyorum fakat ikisi de şu an için işime yaramayacak dizinler.

Bu sırada nikto taraması da sonuçlanıyor. Çıktılar içerisinde response’un headerları içerisinde x-backend-server isminde ve office.paper değerinde bir header olduğunu görüyorum. Bunun dışındaki bilgiler şu an için bana pek bir şey ifade etmiyor. Burada bulduğum office.paper adresini hosts dosyama ekleyerek adrese erişmeye çalışıyorum.

Bu adresi kullanarak eriştiğimiz sayfa bir wordpress sayfaysı. Sayfanın kaynak kodundan wordpress 5.2.3 sürümünün kullanıldığını öğreniyorum. Bu sürüm için bir zafiyet araması yaptığımda kullanabileceğim bir Unauthenticated View Private/Draft Posts zafiyeti olduğunu görüyorum. Direkt olarak http://office.paper/?static=1 adresine ulaşmaya çalışıyorum ve kullanıcının eklediği draft’ları görebiliyorum.


Gain Shell

Buradan öğrendiğim chat.office.paper subdomain’ini de hosts dosyama ekleyerek erişebiliyorum. Adresi verilen kayıt sayfasını kullanarak bir kullanıcı oluşturuyorum ve giriş yapıyorum. Burada kullan rocket.chat uygulaması için bir exploit araması yapıyorum uygulamanın 3.12.1 sürümü için bir NoSQL Injection to RCE zafiyeti buluyorum. Uygulamanın sürümünü öğrenmek için tarayıcı üzerinden siteyi keşfetmeye devam ediyorum. General chat sayfasını incelediğimde recyclops isminde bir bot’un server’da dosya listeleme ve okuma işlerini yapmak için kullanıldığını öğreniyorum.

Botu özel mesaj atarak kullanıyorum ve server üzerinde gezinmeye çalışıyorum. İçerisinde bulunduğumuz dizinin dwight isimli kullanıcının home dizini olduğunu öğreniyorum. Sonra passwd dosyasını okuyarak makinede yalnızca rocketchat ve dwight kullanıcılarının shell sahibi olduğunu görüyorum. Kullanıcıların olası id_rsa dosyasına erişmek için .ssh dizinlerini kontrol ediyorum fakat ikisinde de bu dosyaların olmadığını hatta rocketchat kullanıcısının home dizini olmadığını görüyorum.

Makinede komut çalıştırabilmek için kullandığım bota ;, |, ||, & ve && karakterlerini kullanarak OS Command Injection denemesi yapıyorum fakat hepsini bot yakalıyor ve komut çalıştırmama izin vermiyor. Bot’un nasıl çalıştığını anlayabileceğim dosyaları bulmak için kullanıcının dizinini inceliyorum.

Burada /home/dwight/hubot dizini altındaki bot’un dosyalarını incelerken start_bot.sh dosyasını okuyorum. Dosyanın içerisinde source olarak .env dosyasını aldığını görüyorum ve bu dosyayı da okuduğumda içinde bir parola bulunduğunu görüyorum.

Bu parolayı kullanarak rocketchat kullanıcısına ssh üzerinden bağlanmayı deniyorum fakat başaramıyorum. Aynı parola ile dwight kullanıcısına bağlanmayı denediğimde bağlanabildiğimi görüyorum.


Privilege Escalation

Yetkimi yükseltebilmek için öncelikle sudo -l komutuyla kullanıcının sudo yetkisini kontrol ediyorum fakat herhangi bir yetkisi olmadığını görüyorum. Kullanabileceğim SUID dosyalarını kontrol etmeyi deniyorum. Dosyaları bulmak için find komutunu kullanıyorum. Bütün dizinler içinde araması için / dizinini belirtiyorum. Yalnızca SUID dosyaları getirmesi için -perm parametresiyle birlikte -4000 değerini kullanıyorum. Komut çalışırken karşılaştığı hataları ekrana basmaması için 2>/dev/null komutuyla hataları null’a yolladıktan sonra komutu çalıştırıyorum.

find / -perm -4000 2>/dev/null

Komutun çıktısını inceliyorum fakat işime yarayabilecek herhangi bir dosya ile karşılaşmıyorum. Kullanabileceğim herhangi bir cronjob olması ihtimaline karşın /etc/crontab dosyasını okuyorum fakat herhangi bir şey ile karşılaşmıyorum. İşime yarayabilecek capability‘leri kontol etmek amacıyla getcap -r 2>/dev/null komutunu kullanıyorum fakat herhangi bir capability de bulamıyorum.

Son olarak kullanabileceğim dosyaları içerebilecek olan /opt ve /var dizinlerini kontrol ediyorum. Burada /opt dizini altında Rocket.Chat dizinini görüyorum ve incelemeye başlıyorum. Sistemin MongoDB kullandığını hatırlıyorum ve mongo komutuyla database üzerinde erişimimi kontrol ediyorum fakat erişemediğimi görüyorum. Tarama işlemini otomatize etmeye karar vererek linPEAS binary’sini python server aracılığıyla makineye göndererek çalıştırıyorum.

Taramanın çıktısında Rocketchat uygulamasının çalışması için gerekli olan environment’ler içerisinde MongoDB kullanıcısı ve parolası ile karşılaşıyorum. Bir de sudo komutu için CVE-2021-3560 zafiyetinin sömürülebilir olabileceğini görüyorum.

Öncelikle veritabanı tarafını incelemeye karar veriyorum. Buradan elde ettiğim bilgileri kullanarak MongoDB servisine bağlanıyorum. Veritabanlarını listelemek için show dbs komutunu kullanıyorum. İlk dikkatimi rocketchat isimle database çekiyor ve use rocketchat komutuyla ona geçiyorum. Koleksiyonları listelemek için show collections komutunu kullanıyorum ve burada bulunan users koleksiyonunu db.users.find() komutuyla inceliyorum. Burada bulunan kullanıcıların rocketchat uygulamasındaki kullanıcılar olduğunu görüyorum.

Burada kullanıcıların parolaları bcrypt algoritmasıyla hash’lenmiş olduğu için bruteforce saldırısı dışında bir şey yapamam. Fakat burada kullanıcıların rollerini ve email adreslerini gördüğümde daha önce karşılaşmış olduğum ve admin kullanıcısının email adresini gerektiren Injection to RCE zafiyeti aklıma geliyor. Bu zafiyeti sömürerek rocketchat kullanıcısına geçebileceğim ve bu kullanıcının sudo yetkisinin olabileceğini düşünüyorum. Bu nedenle burada admin yetkisi bulunan kullanıcıyı bularak zafiyeti sömürmeyi deniyorum.

Bulduğum exploit’e -u parametresiyle yetkisiz kullanıcının email adresini, -a parametresiyle admin kullanıcısının email adresini ve -t parametresiyle hedef url’yi veriyorum ve exploit’i çalıştırıyorum. Fakat exploit password reset email sent kısmında takılıyor.

Bu exploit’ten ümidi kesip arkada çalışmaya bırakırken bulduğum CVE-2021-3560 sudo zafiyetini denemeye karar veriyorum. Buradaki poc.sh dosyasını indirerek python server aracılığıyla hedef makineye gönderiyorum. Exploit’e -u parametresiyle kullanıcı adını ve -p parametresiyle parolayı vererek çalıştırıyorum.

Gev