-4

我试图冒充用户从我的网站进入需要广告凭据的网站。我知道用户 ID 已经不是密码了。我想知道代码中是否有一种方法可以连接到广告并仅使用用户 ID 模拟用户。

整个目的是允许代理登录服务。

4

2 回答 2

4

以-5票回答问题我有点紧张。我确实想指出存在这样的功能。它被称为协议转换扩展。它也被称为S4USelf

Microsoft 发明了协议转换,因为 Active Directory 主要使用 Kerberos 进行身份验证。但是,在许多情况下,Kerberos 端口在 Internet 环境中被阻止。因此,应用程序不能使用 Kerberos 进行身份验证。对于 Web 应用程序尤其如此,通常只打开端口 80。为了解决这个问题,Microsoft 允许通过其他机制完成身份验证,例如,使用基于 ASP.NET 表单的身份验证。然后,代理服务器可以获取它刚刚使用自己的机制进行身份验证的任何用户的 Kerberos 票证。在此过程中,不需要 Active Directory 密码。但是,请注意,Microsoft 确实希望使用这种方法获取 Kerberos 票证的应用程序将对用户进行自己的身份验证。例如,您可能有一个存储一组用户名和密码的 SQL 服务器数据库。您的应用程序使用存储在 SQL Server 数据库中的用户名和密码进行身份验证,然后获取指定用户的 Kerberos 票证。

正如你们中的许多人指出的那样,如果这真的发生的话,这看起来像是一个很大的安全漏洞。这是精美的印刷品。为了使用协议转换方法获得 Kerberos 票证,您的进程必须具有充当操作系统特权的一部分。这是系统中非常高的特权。为了简单。如果您只是以普通 AD 用户帐户登录并尝试使用 Protocol Transistion 方法运行程序以获取域管理员票证,则它将无法正常工作,因为您没有充当操作系统特权的一部分。默认情况下,您的NT Authority\LocalSystem帐户将拥有此权限。因此,为了做到这一点,在许多情况下,您只需编写一个服务并将服务帐户设置为使用NT Authority\LocalSystem. 该服务将能够从 Active Directory 中获取您需要的任何 Kerberos S4USelf 票证。

等一下。你们中的许多人会说这仍然是一个安全漏洞,因为我可能是特定工作站机器上的本地管理员。然后,我可以安装我喜欢的任何服务。我可以自己创建一个服务并使用 S4USelf 获取域管理员票证并访问企业环境中的一些重要信息。嗯……这不是真的。Microsoft 使 S4USelf Kerberos 票证如此特殊,以至于它只能在请求票证的机器上使用。换句话说,您不能使用网络上的 S4USelf 票证来请求任何其他服务。这听起来更合理,对吧?访问仅限于该特定机器。是的,我知道仍然很难接受一个人可以在不知道密码的情况下冒充另一个用户帐户但该功能存在的事实。

沿着这条线,还有另一个疯狂的东西叫做约束委派. 它也被称为 S4UProxy。它基本上将这种模拟能力扩展到网络资源。这意味着使用 S4USelf 票证,您可以获得 S4UProxy 票证。使用 S4UProxy 票证,您可以使用模拟身份访问选定的网络资源,而无需向 Active Directory 提供任何密码。同样,这看起来很疯狂,但这里是细节。首先,默认情况下,所有加入 Active Directory 的机器都不能请求 S4UProxy 票证。域管理员必须在计算机对象上打开一个标志,以便有意识地发生这种情况。域管理员应该很清楚,授予这个基本上就像说我将这台机器视为域中的域控制器。它握着王国的钥匙。其次,并不是所有的服务都可以通过 S4UProxy 方式获得。域管理员可以通过在计算机对象上指定 SPN 来明确选择允许哪些服务使用 S4UProxy。这就是为什么它得名约束委派。它看起来很疯狂,但实际上并没有那么糟糕。

于 2012-08-03T06:12:06.787 回答
0

从来没听说过。AD 中的安全性(通常)设置为防止未经授权的访问,因此您不得不

  • 从用户那里获取密码。
  • 创建一个“假”用户进行测试。
  • 暴力破解密码。

当然,暴力破解密码/帐户不是一个很好的方法,除非它是您自己的网络并且对您自己没有法律后果。

理想情况下,我建议创建一个假用户进行测试。

希望有帮助。

于 2012-08-02T18:57:34.603 回答