服务创build服务 – 为用户分配SC_MANAGER_CREATE_SERVICE

我正在尝试创build一个有权创build其他服务Windows服务。 但我不想让这个服务运行一个pipe理login。

用户权限是相当有限的 – 我只是需要它能够应要求提供服务。

我在网上看到SC_MANAGER_CREATE_SERVICE是一个现在可以分配和/或更改的权限,但是我没有看到这个过程。 这里提到可以通过OpenSCManager和 – gulp – sc命令通过subinacl来更改单个服务的权限。 但是这些示例显示了如何更改单个服务的权限,而不是如何赋予用户SC_MANAGER_CREATE_SERVICE权限。

但是,我注意到CreateService的文档特别说明它需要pipe理员privilages – 所以也许这根本是不可能的。

我将不得不开始与pipe理员帐户的服务? 还是有人知道另一个诡计?

请参阅服务安全和访问权限:

要获取或设置SCM的安全描述符,请使用带有SCManager对象句柄的QueryServiceObjectSecurity和SetServiceObjectSecurity函数。

请注意,拥有创建服务的权限使您可以有效地访问管理员,因为您可以创建一个服务作为本地系统运行。 因此,您必须小心,不要授予不受信任用户访问权限的帐户权限,以确保拥有该权限的所有帐户都拥有强大的密码,等等。

这也意味着,如果您的系统服务受到远程代码执行漏洞的威胁,您还没有获得任何东西,攻击者仍然能够控制您的系统。 如果该服务处于直接攻击的高风险状态,则可能有明智的做法,即只有对需要特殊权限的任务负责的第二个服务。 但是,对于不太可能受到直接攻击或被认为是合理安全的服务,在没有管理员权限的情况下运行(除了创建服务的能力之外),可能会阻止不太可能被利用的漏洞,或者限制非 – 与安全有关的错误。

另请参阅在服务器故障上授予管理员组以外的用户的服务控制管理器访问权限 ,答案显示如何从命令行更改SCM权限。