You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

服务如何以登录用户身份运行?渗透测试权限异常排查

关于服务运行身份的疑问:Local System服务替换二进制后仅以登录用户权限启动

在一次渗透测试中,我们发现一个标注为Local System权限的服务存在未加引号的服务路径(unquoted service path)问题。替换该路径下的服务二进制文件(用于添加用户)后,新二进制文件仅以登录用户权限启动——但我们原本确信它应该以Local System权限运行。

由于无法再访问目标设备,无法验证是否误读了服务的账户设置,但我们确定该服务显示的运行身份为Local System。现在需要复现这种「看似以Local System运行、实则以登录用户身份启动」的服务场景,以此解释漏洞利用失败的原因,同时拓展服务权限相关知识。

我查阅服务编写教程时,找到一段接近需求的代码:

this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.User;

但ServiceAccount.User的文档说明是:

由网络上特定用户定义的账户。为Account成员指定User会导致系统在安装服务时提示输入有效的用户名和密码,除非您为ServiceProcessInstaller实例同时设置Username和Password属性。

由于该服务部署在企业笔记本上,不可能是通过这种需要逐个输入用户凭据的方式创建的,所以肯定存在其他实现方法。

想请教熟悉服务开发的人:

  • 是否存在无需每个用户凭据,就能让服务以当前登录用户权限运行的方法?
  • 为什么替换Local System服务的初始二进制文件后,进程会以登录用户权限启动?

我已经找到多种让Local System服务以登录用户身份启动其他程序的方法,但这次替换的是服务本身的初始二进制文件,按道理应该继承服务的权限。另外,我从未见过LogOnAs为User的服务,所以对这种场景的实现方式非常困惑。

内容的提问来源于stack exchange,提问作者Mikuláš Hrdlička

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 11:24:17