Writable Sys Path +Dll Hijacking Privesc

Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!

HackTricks'ı desteklemenin diğer yolları:

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 Hijacking

Dll 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:

# Set the folder path to create and check events for
$folderPath = "C:\privesc_hijacking"

# Create the folder if it does not exist
if (!(Test-Path $folderPath -PathType Container)) {
New-Item -ItemType Directory -Path $folderPath | Out-Null
}

# Set the folder path in the System environment variable PATH
$envPath = [Environment]::GetEnvironmentVariable("PATH", "Machine")
if ($envPath -notlike "*$folderPath*") {
$newPath = "$envPath;$folderPath"
[Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine")
}
  • procmon'u başlatın ve Options --> Enable boot logging yolunu izleyin ve ekrandaki OK 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:

ServisDllCMD satırı

Görev Zamanlayıcısı (Schedule)

WptsExtensions.dll

C:\Windows\system32\svchost.exe -k netsvcs -p -s Schedule

Tanımlayıcı Politika Servisi (DPS)

Unknown.DLL

C:\Windows\System32\svchost.exe -k LocalServiceNoNetwork -p -s DPS

???

SharedRes.dll

C:\Windows\system32\svchost.exe -k UnistackSvcGroup

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