Writable Sys Path +Dll Hijacking Privesc
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Inleiding
As jy ontdek dat jy kan skryf in ’n System Path folder (let wel: dit sal nie werk as jy net in ’n User Path folder kan skryf nie) is dit moontlik dat jy die privileges op die stelsel kan eskaleer.
Daartoe kan jy ’n Dll Hijacking misbruik waar jy gaan hijack a library being loaded deur ’n diens of proses met meer privileges as joune, en aangesien daardie diens ’n Dll laai wat waarskynlik nie eens in die hele stelsel bestaan nie, sal dit probeer om dit vanaf die System Path te laai waar jy kan skryf.
Vir meer inligting oor wat is Dll Hijackig kyk:
Privesc met Dll Hijacking
Om ’n ontbrekende Dll te vind
Die eerste ding wat jy nodig het is om ’n proses te identifiseer wat loop met meer privileges as jy en wat probeer om ’n Dll van die System Path te laai waarin jy kan skryf.
Die probleem in hierdie gevalle is dat daardie prosesse waarskynlik reeds loop. Om te vind watter Dlls ontbreek, moet jy procmon so gou moontlik begin (voor prosesse gelaai word). Dus, om ontbrekende .dlls te vind, doen:
- Skep die folder
C:\privesc_hijackingen voeg die padC:\privesc_hijackingby die System Path omgewingsveranderlike. Jy kan dit manueel 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")
}
- Start
procmonen gaan naOptions–>Enable boot loggingen drukOKin die prompt. - Herbegin dan die rekenaar. Wanneer die rekenaar herbegin is sal
procmonso gou as moontlik begin opneem. - Sodra Windows opgestart is, voer
procmonweer uit; dit sal jou vertel dat dit reeds aan die gang was en sal vra of jy die events in ’n lêer wil stoor. Sê ja en stoor die events in ’n lêer. - Nadat die lêer gegenereer is, sluit die geopende
procmon-venster en open die events-lêer. - Voeg hierdie filters by en jy sal al die Dlls vind wat ’n proses probeer laai vanaf die skryfbare System Path-gids:
.png)
Gemiste Dlls
Deur dit op ’n gratis virtual (vmware) Windows 11-masjien te laat loop het ek hierdie resultate gekry:
.png)
In hierdie geval is die .exe’s nutteloos, ignoreer hulle; die gemiste DLLs was van:
| Service | Dll | CMD line |
|---|---|---|
| Task Scheduler (Schedule) | WptsExtensions.dll | C:\Windows\system32\svchost.exe -k netsvcs -p -s Schedule |
| Diagnostic Policy Service (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 abuse WptsExtensions.dll for privesc. Dit is wat ons nou gaan doen.
Eksploitasie
Dus, om voorregte te eskaleer gaan ons die biblioteek WptsExtensions.dll kap. Met die pad en die naam hoef ons net die kwaadwillige dll te genereer.
Jy kan probeer enige van hierdie voorbeelde te gebruik. Jy kan payloads uitvoer soos: kry ’n rev shell, voeg ’n gebruiker by, voer ’n beacon uit…
Warning
Let wel dat nie alle dienste met
NT AUTHORITY\SYSTEMuitgevoer word nie; sommige word ook metNT AUTHORITY\LOCAL SERVICEuitgevoer wat minder voorregte het en jy sal nie in staat wees om ’n nuwe gebruiker te skep deur sy permissies te misbruik nie.
Tog het daardie gebruiker dieseImpersonatevoorreg, so jy kan die potato suite to escalate privileges gebruik. Dus, in hierdie geval is ’n rev shell ’n beter opsie as om te probeer ’n gebruiker te skep.
Op die oomblik van skryf word die Task Scheduler-diens met Nt AUTHORITY\SYSTEM uitgevoer.
Nadat jy die kwaadwillige Dll gegenereer het (in my geval het ek ’n x64 rev shell gebruik en ek het ’n shell teruggekry, maar Defender het dit doodgemaak omdat dit vanaf msfvenom was), stoor dit in die skryfbare System Path met die naam WptsExtensions.dll en herbegin die rekenaar (of herbegin die diens of doen wat nodig is om die betrokke diens/program weer te laat loop).
Wanneer die diens herbegin is, behoort die dll gelaai en uitgevoer te word (jy kan die procmon-truk hergebruik om te kontroleer of die biblioteek soos verwag gelaai is).
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks

