再谈关于windows服务中的会话隔离

 

windows service(服务)自windows vista起就工作在session 0,默认账户是SYSTEM账号,这个账户的权限是最高的,高于Administrator。

在windows服务中使用robocopy备份文件的时候,代码中调用cmdkey /add:ip  /user:user /pass:password 来添加windows凭据并期望能在windows凭据管理器里看到它。

然而在robocopy执行的时候却报错,在windows凭据管理器里也看不到添加的凭据。

 

经过检索,发现SYSTEM账户有自己的凭据存储区域,因此在administrator账户下是看不到的。

又得知psexec可以以SYSTEM用户运行执行的进程(这里需要的是cmd),在我的机器上可以,但是在另外一台服务器上却不可以,执行 psexec -i -s cmd.exe 总是报错【找不到网络名】,

经过Google,发现有其他人也遇到过这个问题,解决方案就是修改注册表里的两个表项(如果不存在则创建),如下:

没有的话执行下2句命令

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" /v "AutoShareServer" /t REG_DWORD /d 1 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" /v "AutoShareWks" /t REG_DWORD /d 1 /f

执行命令后重启系统就可以了正常执行提权命令了

记住了。。是重启系统以后。。

 

重启计算机后,执行 psexec -i -s cmd.exe 正常。

输入 cmdkey /list  就看到了SYSTEM账户下的凭据。

 

我用的是  PsExec v2.43

https://learn.microsoft.com/en-us/sysinternals/downloads/psexec

 

 

参考:

https://blog.csdn.net/hongkaihua1987/article/details/85230694

https://cloud.tencent.com/developer/article/2018160

https://www.cnblogs.com/stweily/p/16963220.html

 

 

posted on 2024-07-19 01:31  崔好好  阅读(23)  评论(0编辑  收藏  举报

导航