Writable Sys Path +Dll Hijacking Privesc

Ondersteun HackTricks

Inleiding

As jy gevind het dat jy kan skryf in 'n Stelselpaaie-gids (let daarop dat dit nie sal werk as jy in 'n Gebruikerspad-gids kan skryf nie) is dit moontlik dat jy privileges kan eskaleer in die stelsel.

Om dit te doen kan jy 'n Dll Hijacking misbruik waar jy 'n **biblioteek wat deur 'n diens of proses met meer privileges as joune gelaai word, gaan hijack, en omdat daardie diens 'n Dll laai wat waarskynlik glad nie in die hele stelsel bestaan nie, gaan dit probeer om dit vanaf die Stelselpaaie te laai waar jy kan skryf.

Vir meer inligting oor wat is Dll Hijacking kyk:

Dll Hijacking

Privesc met Dll Hijacking

Vind 'n ontbrekende Dll

Die eerste ding wat jy nodig het, is om 'n proses te identifiseer wat met meer privileges as jy loop en wat probeer om 'n Dll vanaf die Stelselpaaie te laai waarin jy kan skryf.

Die probleem in hierdie gevalle is dat daardie prosesse waarskynlik reeds loop. Om te vind watter Dlls die dienste ontbreek, moet jy procmon so gou as moontlik begin (voordat prosesse gelaai word). So, om ontbrekende .dlls te vind, doen:

  • Skep die gids C:\privesc_hijacking en voeg die pad C:\privesc_hijacking by die Stelselpaaie omgewingsvariabele. Jy kan dit handmatig doen of met PS:

# 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")
}
  • Begin procmon en gaan na Options --> Enable boot logging en druk OK in die prompt.

  • Dan, herbegin. Wanneer die rekenaar herbegin, sal procmon begin gebeurtenisse opneem so gou as moontlik.

  • Sodra Windows begin is, voer procmon weer uit, dit sal jou vertel dat dit aan die gang was en sal vraag of jy die gebeurtenisse in 'n lêer wil stoor. Sê ja en stoor die gebeurtenisse in 'n lêer.

  • Nadat die lêer gegenereer is, sluit die geopende procmon venster en open die gebeurtenis lêer.

  • Voeg hierdie filters by en jy sal al die Dlls vind wat 'n proses probeer het om te laai vanaf die skryfbare Stelselpaaie-gids:

Gemiste Dlls

Ek het hierdie resultate gekry deur dit in 'n gratis virtuele (vmware) Windows 11 masjien te loop:

In hierdie geval is die .exe nutteloos, so ignoreer hulle, die gemiste DLLs was van:

DiensDllCMD lyn

Taak Skedule (Schedule)

WptsExtensions.dll

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

Diagnostiese Beleid Diens (DPS)

Unknown.DLL

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

???

SharedRes.dll

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

Nadat ek dit gevind het, het ek hierdie interessante blogpos gevind wat ook verduidelik hoe om WptsExtensions.dll vir privesc te misbruik. Dit is wat ons nou gaan doen.

Exploitatie

So, om privileges te verhoog gaan ons die biblioteek WptsExtensions.dll kaap. Met die pad en die naam moet ons net die kwaadwillige dll genereer.

Jy kan enige van hierdie voorbeelde probeer. Jy kan payloads soos: 'n rev shell kry, 'n gebruiker byvoeg, 'n beacon uitvoer...

Let daarop dat nie al die dienste met NT AUTHORITY\SYSTEM gedraai word nie, sommige word ook met NT AUTHORITY\LOCAL SERVICE gedraai wat minder privileges het en jy sal nie in staat wees om 'n nuwe gebruiker te skep om sy toestemmings te misbruik. Die gebruiker het egter die seImpersonate voorreg, so jy kan die potato suite gebruik om privileges te verhoog. So, in hierdie geval is 'n rev shell 'n beter opsie as om te probeer om 'n gebruiker te skep.

Op die oomblik van skryf word die Taak Skedule diens met Nt AUTHORITY\SYSTEM gedraai.

Nadat ek die kwaadwillige Dll gegenereer het (in my geval het ek x64 rev shell gebruik en ek het 'n shell teruggekry, maar defender het dit doodgemaak omdat dit van msfvenom was), stoor dit in die skryfbare Stelselpaaie met die naam WptsExtensions.dll en herbegin die rekenaar (of herbegin die diens of doen wat ook al nodig is om die betrokke diens/program weer te laat loop).

Wanneer die diens herbegin word, moet die dll gelaai en uitgevoer word (jy kan die procmon truuk hergebruik om te kyk of die biblioteek soos verwag gelaai is).

Ondersteun HackTricks

Last updated