2012-08-02 59 views
-4

我试图模拟一个用户从我的网站进入需要广告凭证的网站。我知道用户标识已经不是密码。我想知道是否有代码的方式可以连接到广告并用用户标识模拟用户。模拟用户

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

+10

这就好像在问:“我知道这个电子邮件帐户的用户名,但没有密码,我想允许代理登录服务在没有密码的情况下查看邮件。”在没有访问帐户密码的情况下进行模拟将是一个巨大的安全漏洞。 – 2012-08-02 18:57:32

+3

这简直就像所有那些试图给我钱的尼日利亚王子一样粗略。 – Coeffect 2012-08-02 19:04:47

+1

多么愚蠢的问题。提醒自己密码服务的目的是什么,并思考这个问题是否真的值得问。 – spender 2012-08-02 19:06:05

回答

4

我有点紧张,以-5票回答一个问题。我想指出存在这样的特征。它被称为Protocol Transistion extension。它也被称为S4USelf

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

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

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

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

0

不是我所知道的。 AD中的安全(通常)设置为防止未经授权的访问,因此您必须或者不得不或者

  • 从用户处获取密码。
  • 创建一个“假”用户进行测试。
  • 蛮力的密码。

当然,暴力强制密码/帐户不是一个很好的方式去,除非它是你自己的网络,并没有自己的法律后果。

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

希望有所帮助。