HackTheBox - Authority - Writeup

mao7un

VM Creator
Moderatör
Katılım
22 Ocak 2024
Mesajlar
26
Tepkime puanı
38
Puanları
13
Herkese merhaba! Bu yazımda HackTheBox platformunda emekliye ayrılmış makinelerden olan Authority makinesinin çözümünü anlatacağım. İyi okumalar!

Nmap taraması ile başlıyorum

1


Çok sayıda açık port görünüyor. Ben direkt olarak SMB sunucusunu enumerate etmeye başlıyorum.

2


Dikkatimi iki tane paylaşım çekiyor (Development ve Department Shares). 'Department Shares' paylaşımına anonim olarak bağlanamadığım için Development paylaşımındaki dosyaları inceliyorum.

PWM/defaults klasörü içerisindeki main.yml dosyasını indirince karşıma PWM yönetici parola hash'i çıkıyor. PWM, sistemdeki 8443 numaralı portta çalışan sunucuya LDAP bağlantıları yollayan bir sistem.

3


Hash tipi olarak Ansible Vault (16900 olarak geçiyor) kullanılmış, ancak bunu hashcat ile kırmayı başaramadım. Şimdi bu hash'i john ile kırmaya çalışacağım ve ardından ansible-vault ile şifre girmem istendiğinde john ile kırdığım şifreyi kullanacağım.

4



Şimdi ansible-vault ile hash dosyasini kırabilirim.

5


"Şifreyi elime geçirdim ve şimdi 8443 portuna (PWM) gidip yönetici olarak giriş yapmayı deniyorum, ancak bir hata ile karşılaşıyorum.

"Configuration Manager" sekmesine geçtiğimde, LDAP portuna yapılan bağlantıların loglarını görüyorum. Belirli bir IP adresine sürekli olarak LDAP bağlantıları yapılıyor.

Giriş yaptığımda karşıma yapılandırma bilgileri çıkıyor ve bu yapılandırma bilgilerini indirip kontrol ediyorum.

6


Buradaki yapılandırmayı incelediğimde, svc_ldap adındaki servis kullanıcısı tarafından tüm alanlardaki LDAP sunucularına istek gönderiliyor. Eğer domain adresini değiştirip kendi IP adresimi koyarsam ve bir LDAP sunucusu kurarsam, svc_ldap'ın şifresini yakalayabilirim.

7


Bu şekilde konfigürasyon dosyasını düzenliyorum. Burada LDAPS protokolünü kullanmadım çünkü LDAP güvenli bir protokol değildir ve responder kullanacağım için LDAP kullanmam daha uygun olacaktır. Bu nedenle, port numarasını 636 yerine 389 olarak değiştirdim.

8


Bir diğer sekme olan "Configure Editor"e bakıyorum. Burada sırasıyla LDAP -> LDAP Directories -> Connection sekmesine geliyorum ve...

9


Buraya az önce eklediğim gibi bir değer ekliyorum (ldap://10.10.14.36:389).

Daha sonra en üstte bulunan "TEST LDAP Profile"e tıklayarak buradan LDAP sunucuma istek gönderiyorum.

Başarılı bir şekilde svc_ldap kullanıcısının şifresini alıyorum.

10


Şimdi evil-winrm ile sisteme giriş yapacağım.

Domain Escalation kısmında BloodHound ile domaini enumerate ettim. Yararlı olarak tek bulduğum şey, svc_ldap adlı kullanıcının "SeMachineAccountPrivilege" yetkisine sahip olmasıydı. Bu yetki sayesinde kullanıcı adımı ve şifremi kullanarak domainde bir bilgisayar oluşturabilirim. Ancak, tek başına hiçbir işe yaramayacağını biliyordum, bu yüzden Certify.exe'yi sunucuya indirip sertifikaları enumerate ettim.

11


Çıktıda bir template'in kötüye kullanılabileceğini fark ediyorum.

12


"Buradaki kötüye kullanım ESC1 olarak kategorize edilmiş. Eğer Manager adlı yazımı okuduysanız, orada ESC7 adlı açığı görmüştük. Orada da belirli şartlarımız vardı (kullanıcının sertifika üzerinde Manage yetkisi olması gerekiyordu). Burada da belirli birkaç şart var:

  • Client Authentication: True
  • Enabled: True
  • Enrollee Supplies Subject: True
  • Requires Management Approval: False
  • Authorized Signatures Required: 0
Bu 5 şart sağlanıyorsa (buradaki şartlar certipy adlı aracın çıktısından alınmıştır). Burayı daha iyi anlamak için bir de kendi makinemde certipy kullanacağım.

$ certipy-ad find -vulnerable -username 'svc_ldap' -password "lDaP_in....." -dc-ip 10.10.11.222

Çıktı olarak 5 şartı da sağlamış oluyoruz.

13


CorpVPN template'i ESC1'e karşı savunmasızdır. Bu template kullanılarak administrator kullanıcısının sertifikasına "Domain Computers", "Domain Admins", "Enterprise Admins" gruplarından herhangi birine ait olan bir kullanıcı tarafından istekte bulunulabilir ve bu sertifika alınabilir.

14


Ancak svc_ldap kullanıcısı, bu üç gruptan birine ait değil.

15


Bu bölüme geçmeden önce yukarıda bahsettiğimiz SeMachineAccountPrivilege yetkisini hatırlayalım. svc_ldap kullanıcısının bu yetkiye sahip olduğunu biliyoruz. svc_ldap'ın giriş bilgileri ile domainde bir bilgisayar oluşturabiliriz ve bu bilgisayar haliyle "Domain Computers" grubunda olacak. Böylece CorpVPN template'ini sömürebileceğiz :)

16


"mckadioglu" adli bilgisayarımı "H4X0r123@123" şifresiyle domain'e ekleyebildim . Bunu kontrol etmek için


17


Eklendiğini görüyorum.

Şimdi sırada bu bilgisayar ile administrator sertifikasını istemek var.

Burada dikkat etmemiz gereken yer, username parametresidir. "mckadioglu" gibi bir kullanıcı adı ile istek yaparsak sertifika isteğimiz reddedilecektir, çünkü mckadioglu bir kullanıcı değil, bir bilgisayar olduğu için 'mckadioglu$' şeklinde istekte bulunmalıyız.



18


Administrator sertifikasına sahibiz artık. Burada Pass the certificate saldırısı yaparak administrator kullanıcısının şifresini değişebiliriz , ama ben burada kolaya kaçıp certipy aracı ile LDAP shell'ini alıyorum.

NOT : Burada direkt olarak herhangi bir shell almadan elimizde bulunan sertifika ile server'a çağrıda bulunursak administrator kullanıcısının hashini alabiliriz. Manager makinesinin çözümünde bu şekilde administrator kullanıcısının NT hashini almıştık bu konuda farklı bir metot olduğu için ldap shell'i aldım. Bir diğer konu olan (Escape) makinesinde ise pass the certificate saldırısı gerçekleştireceğim. (03.02.2024 Tarihinde yayinlandi)

19


Shell'i aldıktan sonra svc_ldap kullanıcısını administrator grubuna taşıyorum.

20


svc_ldap kullanıcısı olarak tekrardan giriş yaptığımda artık administrators grubunun bir üyesi olduğumu görüyorum.

21


user flag'i ve root flag'i alıp makineyi kapatıyorum.

22




buraya kadar okuduğunuz için teşekkür ederim.
 

Ekli dosyalar

  • 20.png
    20.png
    19.3 KB · Görüntüleme: 66
Son düzenleme:
Geri
Üst