- Katılım
- 22 Ocak 2024
- Mesajlar
- 26
- Tepkime puanı
- 40
- Puanları
- 13
Merhaba! Bugün size HackTheBox platformunda emekliye ayrılmış makinelerden biri olan “Manager” makinesinin çözümünü anlatacağım. Keyifli okumalar!
İlk olarak, numaralandırmaya nmap taraması ile başlıyorum.
Burada LDAP portlarının açık olduğunu görüyorum ve bir nmap scripti kullanarak numaralandırıyorum.
Numaralandırmanın sonucunda, sunucuya ait domain adresini buluyorum: “manager.htb”.
“lookupsid.py” aracını kullanarak sunucudaki kullanıcıların kullanıcı adlarını numaralandırıyorum. Aynı işlemi “kerbrute” aracı ile bir kullanıcı adı listesi (xato) bulup da yapabilirdim, ancak ben burada “lookupsid.py” ‘ı tercih ediyorum.
Şifresiz olarak numaralandırma yapmama izin verdi, artık serverdaki kullanıcı adlarını biliyorum.
Çok fazla kullanıcı elde ettiğim için, “rockyou.txt” gibi büyük wordlistleri kullanmak yerine, kullanıcı adı ve şifrenin aynı olabileceği ihtimalini değerlendirip, şifre listesine de kullanıcı listesini ekliyorum.
operator kullanıcısının şifresini elde ediyorum ve sonrasında bu bilgilerle SMB yi numaralandırıyorum
SMB’den de herhangi bir ipucu bulamadım. Şimdi elimde bulunan kullanıcı adı ve şifre ile MSSQL’e giriş yapmayı deniyorum.
Elimdeki bilgilerle MSSQL serverine giriş yapabiliyorum. Burada kullandığım -windows-auth parametresi direkt olarak Windows’un kimlik doğrulama sistemini kullanıyor ve bu sayede giriş yapabiliyorum. (Bu parametre default olarak kapalıdır ve bu soruda eklemazseniz MSSQL servisine giriş yapamazsınız.)
MSSQL Server’ında direkt olarak server içerisinde kod yürütme komutu olan “xp_cmdshell” i aktif etmek için “enable_xp_cmdshell” yazıyorum, ancak buna yetkim olmadığını görüyorum.
Bir diğer işime yarayabilecek olan komutlardan olan “XP_DIRTREE” yi deniyorum. Bu komut, belirli bir dizindeki tüm dosyaları listeler (ls). Bu komut ile “C:\Users\Raven” adlı kullanıcının dizinine gitmek istiyorum, ancak buna da yetkim yok. Bu noktada, aklıma 80 portunun açık olduğu fakat numaralandırdığımda elime hiçbir şey geçmediği geliyor ve IIS kök dizinine bakıyorum.
Burada dikkatimi bir zip dosyası çekiyor ve bunu terminalimden indiriyorum.
Zip’i çıkarttıktan sonra farklı bir dosya çıkıyor ve bunu inceliyorum.
Dosyanın içerisinden kullanıcı adı ve şifreyi buluyorum. Bu bilgileri kullanarak sisteme giriş yapacağım.
Giriş yaptıktan sonra “Raven” adlı kullanıcının masaüstü dizinine gidip “user.txt” dosyasını alıyorum.
Bu kısım benim için kolaydı, ancak Domain Admin olmak için çok çaba sarf ettim
İlk olarak BloodHound ile serveri enumerate ettim. Elime hiçbir şey geçmeyince, bu sefer AD içerisindeki sertifikaları kontrol etmek için “certipy-ad” (certipy) ve “Certify.exe” adlı araçları kullandım.
Active Directory’de sertifikalar, güvenliği arttırmak ve ek kimlik doğrulama yöntemleri sağlamak amacıyla kullanılır. Bazen bu sertifikalar yanlış yapılandırılabilir. Bu makinemizde de yanlış yapılandırma var; Raven kullanıcısı sertifika üzerinde “Manage CA” yetkisine sahip ve bu da ESC7 olarak adlandırılıyor. Aşağıda daha detaylı olarak bilgi verdim.
Şimdi sömürüye başlayalım. İlk olarak “Certify.exe” dosyasını server’a upload edelim.
Upload ettikten sonra dosyayı çalıştırıyorum.
Bu çıktı, bana zaafiyetli sertifikaları getirecektir.
Buradaki yanlış yapılandırma, bizi Domain Admin seviyesine yükseltecektir. Aynı işlemi “Certify.exe” yerine “certipy” ile gerçekleştirelim.
Buradaki çıktı, bize daha fazla bilgi veriyor. Domain Admin olmayan bir kullanıcının bir CA üzerinde “manage” yetkisinin olması ESC7 olarak (sadece bununla sınırlı değil, ileride gerekli diğer önkoşulu açıklayacağım) adlandırılıyor. Bunu herhangi bir şekilde kötüye kullanmanın bir yolu yok, ancak bu yetki sayesinde istekleri düzenleyebiliriz.
Konuyla ilgili daha geniş çaplı bilgiyi buradan öğrenebilirsiniz.
İlk olarak, CA üzerinde “manage” yetkisi olan kullanıcıyı yönetici olarak ekleyelim.
Şimdi, yukarıda bahsettiğim bir diğer önkoşula geçelim. SubCA template’i, bu template’i etkinleştirmek ESC7 olarak kategorize edilmesi için bir önkoşuldur.
Saldırıya geçmek için gerekli olan tüm önkoşulları gerçekleştirdik. SubCA şablonuna bağlı bir sertifika isteği yaparak başlıyoruz. Bu istek reddedilecektir, ancak bize bir istek numarası verilecek ve bunun yanında bu istek numarasının anahtarı da verilecektir.
Sahip olduğumuz “Manage CA” yetkisiyle başarısız sertifika isteğini farklı parametrelerle düzenleyebiliriz.
Burada her ne yaparsam yapayım, bu işlemi başarılı bir şekilde gerçekleştiremedim. Alternatif olarak, buraya kadar olan adımları tek bir komut halinde yazdığımda, bu sorun çözüldü.
Şimdi son olarak, istekte olan sertifikayı alabiliriz.
İstediğimiz sertifika “administrator.pfx” olarak kaydedildi, şimdi bunu kullanalım.
Burada “Clock Skew too great” adında bir hata aldım. Bu hatanın anlamı şudur: Kerberos biletlere koyduğu zaman damgasının doğru çalışması için zamanın senkronize olmasını ister. Sistemler arasında zaman farkının belli bir sınırdan fazla olması “Clock Skew too great” hatasını verir.
Bu hatanın önüne geçmek için zamanı hedefimize göre uyarlıyoruz.
Bu işlem sonrasında “Administrator” kullanıcısının hash’ini almayı başardık.
Eğer yukarıdaki işlemler işe yaramazsa, aşağıdaki komutu çalıştırarak, ardından bu işlemleri yaparsanız başarılı bir şekilde “Administrator” kullanıcısının hash’ini alacaksınız.
Hash başarılı bir şekilde alındıysa, “pass-the-hash” saldırısı ile sisteme giriş yapabiliriz.
Buraya kadar okuduğunuz için teşekkür ederim.
İlk olarak, numaralandırmaya nmap taraması ile başlıyorum.
Burada LDAP portlarının açık olduğunu görüyorum ve bir nmap scripti kullanarak numaralandırıyorum.
Numaralandırmanın sonucunda, sunucuya ait domain adresini buluyorum: “manager.htb”.
“lookupsid.py” aracını kullanarak sunucudaki kullanıcıların kullanıcı adlarını numaralandırıyorum. Aynı işlemi “kerbrute” aracı ile bir kullanıcı adı listesi (xato) bulup da yapabilirdim, ancak ben burada “lookupsid.py” ‘ı tercih ediyorum.
Şifresiz olarak numaralandırma yapmama izin verdi, artık serverdaki kullanıcı adlarını biliyorum.
Çok fazla kullanıcı elde ettiğim için, “rockyou.txt” gibi büyük wordlistleri kullanmak yerine, kullanıcı adı ve şifrenin aynı olabileceği ihtimalini değerlendirip, şifre listesine de kullanıcı listesini ekliyorum.
operator kullanıcısının şifresini elde ediyorum ve sonrasında bu bilgilerle SMB yi numaralandırıyorum
SMB’den de herhangi bir ipucu bulamadım. Şimdi elimde bulunan kullanıcı adı ve şifre ile MSSQL’e giriş yapmayı deniyorum.
Elimdeki bilgilerle MSSQL serverine giriş yapabiliyorum. Burada kullandığım -windows-auth parametresi direkt olarak Windows’un kimlik doğrulama sistemini kullanıyor ve bu sayede giriş yapabiliyorum. (Bu parametre default olarak kapalıdır ve bu soruda eklemazseniz MSSQL servisine giriş yapamazsınız.)
MSSQL Server’ında direkt olarak server içerisinde kod yürütme komutu olan “xp_cmdshell” i aktif etmek için “enable_xp_cmdshell” yazıyorum, ancak buna yetkim olmadığını görüyorum.
Bir diğer işime yarayabilecek olan komutlardan olan “XP_DIRTREE” yi deniyorum. Bu komut, belirli bir dizindeki tüm dosyaları listeler (ls). Bu komut ile “C:\Users\Raven” adlı kullanıcının dizinine gitmek istiyorum, ancak buna da yetkim yok. Bu noktada, aklıma 80 portunun açık olduğu fakat numaralandırdığımda elime hiçbir şey geçmediği geliyor ve IIS kök dizinine bakıyorum.
Burada dikkatimi bir zip dosyası çekiyor ve bunu terminalimden indiriyorum.
Zip’i çıkarttıktan sonra farklı bir dosya çıkıyor ve bunu inceliyorum.
Dosyanın içerisinden kullanıcı adı ve şifreyi buluyorum. Bu bilgileri kullanarak sisteme giriş yapacağım.
Giriş yaptıktan sonra “Raven” adlı kullanıcının masaüstü dizinine gidip “user.txt” dosyasını alıyorum.
Bu kısım benim için kolaydı, ancak Domain Admin olmak için çok çaba sarf ettim
İlk olarak BloodHound ile serveri enumerate ettim. Elime hiçbir şey geçmeyince, bu sefer AD içerisindeki sertifikaları kontrol etmek için “certipy-ad” (certipy) ve “Certify.exe” adlı araçları kullandım.
Active Directory’de sertifikalar, güvenliği arttırmak ve ek kimlik doğrulama yöntemleri sağlamak amacıyla kullanılır. Bazen bu sertifikalar yanlış yapılandırılabilir. Bu makinemizde de yanlış yapılandırma var; Raven kullanıcısı sertifika üzerinde “Manage CA” yetkisine sahip ve bu da ESC7 olarak adlandırılıyor. Aşağıda daha detaylı olarak bilgi verdim.
Şimdi sömürüye başlayalım. İlk olarak “Certify.exe” dosyasını server’a upload edelim.
Upload ettikten sonra dosyayı çalıştırıyorum.
Bu çıktı, bana zaafiyetli sertifikaları getirecektir.
Buradaki yanlış yapılandırma, bizi Domain Admin seviyesine yükseltecektir. Aynı işlemi “Certify.exe” yerine “certipy” ile gerçekleştirelim.
Buradaki çıktı, bize daha fazla bilgi veriyor. Domain Admin olmayan bir kullanıcının bir CA üzerinde “manage” yetkisinin olması ESC7 olarak (sadece bununla sınırlı değil, ileride gerekli diğer önkoşulu açıklayacağım) adlandırılıyor. Bunu herhangi bir şekilde kötüye kullanmanın bir yolu yok, ancak bu yetki sayesinde istekleri düzenleyebiliriz.
Konuyla ilgili daha geniş çaplı bilgiyi buradan öğrenebilirsiniz.
İlk olarak, CA üzerinde “manage” yetkisi olan kullanıcıyı yönetici olarak ekleyelim.
Şimdi, yukarıda bahsettiğim bir diğer önkoşula geçelim. SubCA template’i, bu template’i etkinleştirmek ESC7 olarak kategorize edilmesi için bir önkoşuldur.
Saldırıya geçmek için gerekli olan tüm önkoşulları gerçekleştirdik. SubCA şablonuna bağlı bir sertifika isteği yaparak başlıyoruz. Bu istek reddedilecektir, ancak bize bir istek numarası verilecek ve bunun yanında bu istek numarasının anahtarı da verilecektir.
Sahip olduğumuz “Manage CA” yetkisiyle başarısız sertifika isteğini farklı parametrelerle düzenleyebiliriz.
Burada her ne yaparsam yapayım, bu işlemi başarılı bir şekilde gerçekleştiremedim. Alternatif olarak, buraya kadar olan adımları tek bir komut halinde yazdığımda, bu sorun çözüldü.
Şimdi son olarak, istekte olan sertifikayı alabiliriz.
İstediğimiz sertifika “administrator.pfx” olarak kaydedildi, şimdi bunu kullanalım.
Burada “Clock Skew too great” adında bir hata aldım. Bu hatanın anlamı şudur: Kerberos biletlere koyduğu zaman damgasının doğru çalışması için zamanın senkronize olmasını ister. Sistemler arasında zaman farkının belli bir sınırdan fazla olması “Clock Skew too great” hatasını verir.
Bu hatanın önüne geçmek için zamanı hedefimize göre uyarlıyoruz.
Bu işlem sonrasında “Administrator” kullanıcısının hash’ini almayı başardık.
Eğer yukarıdaki işlemler işe yaramazsa, aşağıdaki komutu çalıştırarak, ardından bu işlemleri yaparsanız başarılı bir şekilde “Administrator” kullanıcısının hash’ini alacaksınız.
timedatectl set-ntp 0
Hash başarılı bir şekilde alındıysa, “pass-the-hash” saldırısı ile sisteme giriş yapabiliriz.
Buraya kadar okuduğunuz için teşekkür ederim.
Ekli dosyalar
Son düzenleme: