Проверьте, есть ли у пользователя, вошедшего в систему, права администратора - PullRequest
1 голос
/ 02 февраля 2020

представьте себе, что есть сценарий Powershell, работающий под учетной записью SYSTEM на компьютере Windows 10 и проверяющий, какой пользователь домена в данный момент вошел в систему. Ничего страшного.

Теперь: я хочу проверить, есть ли у этого вошедшего в систему пользователя права администратора на этом компьютере. Каждая проверка, которую я смог найти, пока только смотрит на ".IsInRole ([Security.Principal.WindowsBuiltInRole] :: 'Administrator')". Но это только проверяет, является ли пользователь прямым членом локальной группы «Администраторы». Но возможно, что в локальной группе «Администраторы» есть группа доменов, а пользователь является членом этой группы доменов. Таким образом, он является администратором, даже если он не является прямым членом группы администраторов.

Как я могу проверить оба одновременно? Я просто хочу проверить, если кто-то является администратором, независимо от того, откуда берутся эти права администратора. Эта проверка также будет выполняться с учетной записью SYSTEM, а не с самой учетной записью уязвимого пользователя.

Есть идеи?

1 Ответ

0 голосов
/ 02 февраля 2020

Если группа «Домен» является частью группы локальных администраторов, то по замыслу все пользователи в этой группе доменов являются локальными администраторами и имеют все необходимые права и привилегии. Таким образом, этот блок кода все еще применяется.

Необходимо явно проверить назначенные права и привилегии пользователя. Для этой встроенной функции нет командлета, поэтому для нее нужно написать код. Чтобы увидеть свои права и привилегии, вы можете просто использовать старый добрый whoami.exe ...

whoami /priv

# Results
<#
PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                          State
============================= ==================================== ========
SeShutdownPrivilege           Shut down the system                 Disabled
SeChangeNotifyPrivilege       Bypass traverse checking             Enabled
SeUndockPrivilege             Remove computer from docking station Disabled
SeIncreaseWorkingSetPrivilege Increase a process working set       Disabled
SeTimeZonePrivilege           Change the time zone                 Disabled
#>

... и сравнить его со списком привилегий Windows, который обычно используется для действий администрирования.

Запуск этого удаленно от имени вошедшего в систему пользователя не может быть выполнен с помощью PowerShell изначально, это Windows Граница безопасности и, таким образом, вам понадобится что-то вроде PSExe c. exe из MS SysInternals, чтобы попробовать это.

...