【发布时间】:2018-10-07 20:56:15
【问题描述】:
机器 A 和 机器 B 位于不同的域中。 机器 A 使用 VPN 访问机器 B 的网络。
我试图冒充用户,以便使用Microsoft.Web.Adminstration 在机器 B 上的 IIS 中执行一些管理操作。
我尝试过的
我在这里尝试了解决方案:https://forums.iis.net/t/1162205.aspx?Using+Microsoft+Web+Administration+on+a+remote+machine+not+in+the+domain。 LogonUser 的 returnValue 对我来说是错误的。当我开始写这篇文章时,我想可能不同之处在于发布者正在使用两个不同但受信任的域中的机器,尽管现在我看到他的一台机器只是在一个工作组中。老实说,我不确定这种情况与我的情况相比如何……实际上是否应该相同。
我还尝试了另一种解决方案,它使用不同的登录类型值(NewCredential 而不是 Interactive)和不同的登录提供程序(WinNt50 而不是 Default),因为它声称它解决了我的域不受信任的问题。
还尝试将这两种解决方案结合起来,但到目前为止没有任何效果。
额外信息:
我开始在 asp.net mvc 项目中执行此操作,但当第一个解决方案要求我调用 CoInitializeSecurity 时切换到控制台应用程序,显然,它要求事先没有调用它,而我没有知道如何在 mvc 项目中防止它(在控制台应用程序中,我只需要禁用 Visual Studio 托管进程)。
我应该提一下,我可以使用NetworkCredential 类和NetworkConnection 类(https://gist.github.com/AlanBarber/92db36339a129b94b7dd)连接到目标机器并写入文件。所以我绝对知道用户/密码可以工作,我可以从客户端机器上使用它们来访问文件。我只是不知道如何模仿他们。
我不认为我可以立即为此提供赏金,但如果有人能够提供解决方案,我会尽快添加赏金并将其提供给您。
【问题讨论】:
-
谢谢你的更新好先生
-
感谢您改进格式。
-
@BVernon,你是不是在冒充的时候忘记输入域名了? (例如 \用户名 - 或 - 用户名@域)
-
@eyegropram 不,但我希望就这么简单! :)
-
正如您所提到的,这可能是一个信任问题。您可能必须使用委派在 2 个域和计算机之间建立信任。除了走这条路之外,机器 B 网络上的 Web 服务如何使用具有适当凭据的 AppPool 来影响机器 B 网络上的 IIS。所以它就像一个代理,或者你在机器 B 的网络上创建一个代理脚本并从机器 A 的网络访问它,因为你可以通过 VPN 访问网络。
标签: c# impersonation web-administration