Writable Sys Path +Dll Hijacking Privesc
Giriş
Eğer Bir Sistem Yolu klasörüne yazabileceğinizi fark ettiyseniz (unutmayın ki bu bir Kullanıcı Yolu klasörüne yazabiliyorsanız çalışmaz) bu durumda sistemde ayrıcalıkları yükseltebilirsiniz.
Bunu yapmak için, Daha fazla ayrıcalığa sahip bir hizmet veya işlem tarafından yüklenen bir kütüphaneyi ele geçireceğiniz bir Dll Hijacking kullanabilirsiniz ve çünkü bu hizmet, muhtemelen tüm sistemde mevcut olmayan bir Dll'yi yüklemeye çalışacak, bu Dll'yi yazabileceğiniz Sistem Yolundan yüklemeye çalışacak.
Dll Hijacking nedir hakkında daha fazla bilgi için:
pageDll HijackingDll Hijacking ile Privesc
Eksik bir Dll bulma
İlk yapmanız gereken şey, kendi ayrıcalıklarınızdan daha fazla ayrıcalıklara sahip bir işlemi tanımlamak ve yazabileceğiniz Sistem Yolundan bir Dll yüklemeye çalışan bir işlemi belirlemektir.
Bu durumlarda sorun, muhtemelen bu işlemlerin zaten çalışıyor olmasıdır. İhtiyacınız olan Dll'leri bulmak için, gerekli hizmetlerin eksik olan .dll'lerini bulmak için mümkün olan en kısa sürede procmon'u başlatmanız gerekmektedir (işlemler yüklenmeden önce). Yani, eksik .dll'leri bulmak için şunları yapın:
C:\privesc_hijacking
klasörünü oluşturun ve bu yolu Sistem Yolu ortam değişkenine ekleyin. Bunu manuel olarak veya PS ile yapabilirsiniz:
procmon
'u başlatın veOptions
-->Enable boot logging
yolunu izleyin ve ekrandakiOK
düğmesine basın.Ardından sistemi yeniden başlatın. Bilgisayar yeniden başlatıldığında
procmon
olayları hemen kaydetmeye başlayacaktır.Windows başladığında
procmon
'u tekrar çalıştırın, çalıştığını ve olayları bir dosyada saklamak isteyip istemediğinizi soracaktır. Olayları bir dosyada saklamayı kabul edin.Dosya oluşturulduktan sonra, açık olan
procmon
penceresini kapatın ve olaylar dosyasını açın.Aşağıdaki filtreleri ekleyin ve yazılabilir System Path klasöründen yüklenmeye çalışılan tüm Dll'leri bulacaksınız:
Eksik Dll'ler
Bu işlemi ücretsiz bir sanal (vmware) Windows 11 makinesinde çalıştırdığımda şu sonuçları elde ettim:
Bu durumda .exe dosyaları işe yaramaz, onları görmezden gelin, eksik DLL'ler şuradan geldi:
Servis | Dll | CMD satırı |
---|---|---|
Görev Zamanlayıcısı (Schedule) | WptsExtensions.dll |
|
Tanımlayıcı Politika Servisi (DPS) | Unknown.DLL |
|
??? | SharedRes.dll |
|
Bunu bulduktan sonra, aynı zamanda WptsExtensions.dll'yi kötüye kullanmak için nasıl kullanılacağını açıklayan ilginç bir blog yazısı buldum. Şimdi yapacağımız şey budur.
Sömürü
Yani, yetkileri yükseltmek için WptsExtensions.dll kütüphanesini ele geçireceğiz. Yolu ve adı olan kötü niyetli dll'yi oluşturmamız yeterli olacaktır.
Bu örneklerden herhangi birini kullanmayı deneyebilirsiniz. Rev shell alabilir, bir kullanıcı ekleyebilir, bir işaretçi çalıştırabilirsiniz...
Tüm hizmetlerin NT AUTHORITY\SYSTEM
ile çalıştırılmadığını unutmayın, bazıları aynı zamanda NT AUTHORITY\LOCAL SERVICE
ile çalıştırılır ki bu daha az ayrıcalığa sahiptir ve bu izinleri kötüye kullanarak yeni bir kullanıcı oluşturamazsınız.
Ancak, bu kullanıcı seImpersonate
ayrıcalığına sahiptir, bu nedenle aşırı ayrıcalıklar için patates paketini kullanabilirsiniz. Bu durumda bir rev shell oluşturmak, bir kullanıcı oluşturmaya çalışmaktan daha iyi bir seçenektir.
Bu yazıyı yazdığım sırada Görev Zamanlayıcısı hizmeti Nt AUTHORITY\SYSTEM ile çalıştırılıyordu.
Kötü niyetli Dll'yi oluşturduktan sonra (benim durumumda x64 rev shell kullandım ve bir kabuk aldım ancak savunucu onu öldürdü çünkü msfvenom'dan geliyordu), onu yazılabilir System Path klasörüne WptsExtensions.dll adıyla kaydedin ve bilgisayarı yeniden başlatın (veya hizmeti yeniden başlatın veya etkilenen hizmeti/programı yeniden çalıştırmak için gereken herhangi bir işlemi yapın).
Hizmet yeniden başlatıldığında, dll yüklenmeli ve çalıştırılmalıdır (kütüphanenin beklenildiği gibi yüklendiğini kontrol etmek için procmon hilesini tekrar kullanabilirsiniz).
Last updated