【问题标题】:NETSH HTTP ADD URLACL with Wildcard (or httpapi.dll)NETSH HTTP ADD URLACL 与通配符(或 httpapi.dll)
【发布时间】:2016-11-19 10:48:11
【问题描述】:

在 NETSH HTTP ADD URLACL 中使用 + 和 * 的正确语法是什么?

我知道以下 Microsoft 文章,但我找不到适合我的情况的方法: https://msdn.microsoft.com/en-us/library/aa364698(v=vs.85).aspx

我想要实现的是只允许某些用户(这不是问题)能够在指定的 URL 上侦听,但使用此通配符。

通常此用户用于服务帐户。所以我想避免执行额外的netsh http add urlacl url=X://mynewUrl.net:1234/user=MyUser(本地用户),当我的服务需要支持额外的URL

我想要的是执行一次这样的事情,这将涵盖我的情况,当然我将始终使用相同的 TCP/IP 端口:

netsh http 添加 urlacl url=https://+:1234/ user=MyUser 或与 *

所以当我添加我的服务需要支持的额外 URL () 时,我不需要每次都执行 netsh。

我也希望能够使用 IP 地址。

我尝试了许多不同的组合,但都没有成功。当我尝试运行该服务时,我被拒绝访问。

请注意,Netsh http 的行为与 httpapi.dll 中的 API 相同,所以我猜它实际上使用了 httpapi.dll。我也在这个库中使用 PlatformInvoke 并且具有完全相同的行为。

另一个注意事项是我使用的是 Windows 10 和 Windows Server 2012/2012 R2。

有什么想法可以解决这个问题,所以每当我想为我的服务支持额外的 URL 时就不需要添加新的预订?

【问题讨论】:

  • 对此有什么想法吗?使用带有通配符的 netsh http add urlacl 的正确方法是什么?
  • 真的没有办法解决吗?

标签: netsh


【解决方案1】:

netsh 与 SDDL 协议一起使用应该可以满足您的需求:

netsh http add urlacl url=http://+:1234/ sddl=D:(A;;GA;;;<process owner sid>)

获取您的用户 sid:

whoami /user

如果您不确定所有者是否是该流程的用户,此 oneliner 将提供帮助:

Get-WmiObject -Class Win32_Process -Filter 'Name = "powershell.exe"' | % { $_.GetOwner() } | % { (New-Object System.Security.Principal.NTAccount($_.Domain + "\" + $_.User)).Translate([System.Security.Principal.SecurityIdentifier]).Value }

【讨论】:

猜你喜欢
  • 2011-10-14
  • 2010-12-12
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
相关资源
最近更新 更多