PsExec 访问被拒绝

PsExec 访问被拒绝

我习惯psexec.exe在不同的安全上下文中运行程序。然而程序启动了,但似乎没有在指定的安全上下文中运行。

其最小形式如下:

psexec -u wsadmin -p password cmd

如果我在该窗口中输入内容,则会启动一个新的 cmd 窗口whoami

C:\Windows\system32>whoami
win-k1r7g38nlkt\wsadmin

C:\Windows\system32>net localgroup administrators
Alias name     administrators
Comment        Administrators have complete and unrestricted access to the computer/domain

Members

-------------------------------------------------------------------------------
Administrator
wsadmin
The command completed successfully.

如您所见,我肯定是另一个用户。我可以确认该用户是“管理员组”的成员

C:\Windows\system32>mkdir test
Access is denied.

如果我以指定用户的身份使用 runas,它会按预期工作。但我需要在命令行上提供密码。

答案1

在 Windows Vista 及更高版本中,如果启用了 UAC,则由管理员帐户启动的进程psexec(即使从管理员帐户运行)也必须设置其提升令牌才能获得完全权限。这可以通过-hpsexec命令行中传递属性来完成。因此,您可以将命令更改为:

psexec -h -u wsadmin -p password cmd

欲了解更多信息,请运行psexec /?

    -h    If the target system is Vista or higher, has the process
          run with the account's elevated token, if available.

答案2

我花了几个小时才找到一种在PsExec两台非管理员用户启动的 Windows 7 计算机之间工作的办法PsExec...禁用 UAC(EnableLUA=0、、ConsentPromptBehaviorAdmin=0LocalAccountTokenFilterPolicy=1不起作用,关闭防火墙也不起作用......

在这里我找到了可行的方法 - 感谢JelmerS:(信息来自PSexec 未使用提供的用户名和密码连接到计算机

这是因为在以其他用户身份执行命令之前,psexec仍会尝试使用ADMIN$本地凭据访问共享。根据此线程,您可以在执行 psexec 之前缓存凭据:

cmdkey.exe /add:MACHINE_NAME_HERE /user:MACHINE_NAME_HERE\Administrator /pass:PASSWORD_HERE 
psexec.exe \\MACHINE_NAME_HERE -i notepad
cmdkey.exe /delete:MACHINE_NAME_HERE

答案3

我找到了一个解决方案:

事实证明,当您启用 UAC 时,psexec 无法按预期工作。
只要HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA设置为0psexec,它就会按预期工作。

答案4

以下是对我有用的方法,它并没有完全摆脱 UAC,但会为管理员关闭它

计算机配置\Windows 设置\安全设置\本地策略\安全选项\用户帐户控制:以管理员批准模式运行所有管理员 - 已禁用

相关内容