【问题标题】:Impersonating any user with ASP?用 ASP 冒充任何用户?
【发布时间】:2017-09-28 16:49:50
【问题描述】:

我在这里问这个问题是因为它可能可以通过编程方式完成。所以在我的工作中,我只是为我们的员工建立了一个门户网站,这样他们就可以找到其他同事的电话号码和诸如此类的东西,以及向 HR 发送查询以更改他们的私人信息。这是一个 ASP.NET MVC 项目,托管在我们的内部 IIS 服务器上。该门户可从我们公司外部访问,因此启用了基本身份验证和 Windows 身份验证。

作为开发人员和管理员,我们有时需要能够模拟 Active Directory 中的现有用户。我知道您可以冒充现有用户,但是,我想知道我是否可以使用某种方法或编程魔法,只传递诸如首字母之类的东西(就像我们用作用户名一样)和那么当我打开站点时,门户将接受我作为该用户。

如果我可以在我的本地主机上这样做会很好,而不是为了测试目的而将其推送到生活中。

这是我能做的吗?如果是这样,我会怎么做?我不确定如何在 C# 中做到这一点。

【问题讨论】:

  • 为什么不改用VPN?
  • @Transcendent 你能详细说明一下吗?
  • 通过使用 VPN,您将使用 Windows 身份验证进行身份验证。具体来说,您将通过内部网络建立隧道,而这是大多数人/公司为了访问可能无法从网络外部访问的东西而做的事情。
  • @Transcendent 但这并不是我想要访问无法访问的东西。我想要做的是简单地从我们的 Active Directory 中模拟一个用户来检查门户中的用户特定问题。如果他们可以简单地描述问题并且我可以轻松地在我们的门户网站上模仿他们,而不是让他们登录并向我们发送屏幕截图,那么我可以更轻松地进行调试。
  • 请记住,如果您设计任何东西以允许在没有安全凭据的情况下以特定用户身份登录(模拟他们),您将故意使系统易受攻击。

标签: c# asp.net-mvc active-directory impersonation


【解决方案1】:

如果您需要这样做,我可以推荐的最佳方法是设置开发 AD 环境。您必须通过 VPN 进入该环境或通过其他方式进入该环境(例如专用 WiFi SSID),因为它必然与您的其他工作网络完全隔离。

从那里,您基本上可以修改 AD 以从本质上接管您喜欢的任何帐户,只需将密码更改为您知道的密码,然后通过该用户的凭据登录到该隔离网络上的客户端计算机。

总而言之,这不是一件容易的事,您可能希望找到一种替代方法来测试您需要测试的内容。例如,仅在 AD 中设置一个模拟您需要测试的用户的测试帐户还不够吗?它可能有不同的公司电子邮件,但您可以分配所有相同的组和权限。

正如@Transcendant 在您问题下方的 cmets 中所述,要按照您想要的方式进行操作(假设您可以),应用程序中基本上必须存在一个巨大的安全漏洞。如果恶意用户能够找出“测试”的方法,他们将能够在您的网站上假设他们喜欢的任何身份并造成严重破坏。你可能会想,“他们怎么会弄明白呢?”,但不要低估现代黑客的聪明才智和坚持不懈。默默无闻的安全性永远不会在现实中实现。

【讨论】:

  • 是的,如果不明确使用密码,您似乎无法解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2011-01-17
  • 2018-02-24
  • 1970-01-01
  • 2011-04-07
  • 2013-02-20
  • 2011-12-04
  • 1970-01-01
  • 2010-10-27
相关资源
最近更新 更多