3

我有一个使用表单成员身份验证的 ASP.NET Web 应用程序。我们最近进行了渗透测试,其中一个被标记的问题是窃取用户帐户的能力。如果在注销之前从用户那里复制了 .ASPXAUTH cookie 值,则用户可以以其他用户身份登录,编辑他们的 cookie 以匹配复制的值并获得他们的所有特权。

注销时我尝试过:

删除 cookie。我可以成功地做到这一点,但它不会使 FormsAuthenticationTicket 无效。

使用FormsAuthentication.SignOut()但发现它并不能阻止攻击

我个人不认为这是一个问题,我相信它可能被盗的唯一方法是如果用户设法访问经过身份验证的用户,这表示我需要解决这个问题以安抚渗透测试人员。

任何想法将不胜感激!谢谢

4

3 回答 3

2

注销时我尝试过:删除 cookie。
我可以成功地做到这一点,但它不会使 FormsAuthenticationTicket 无效。

实际上,当您删除 cookie 时,您将其从您的用户中删除 - 您无法取消激活它,因此如果有人得到它,他仍然可以使用它。

解决方案可以是:

  • 还将身份验证 cookie 的状态保存在服务器上。
  • 将登录用户的状态与他们的会话联系起来。

还可以在这里阅读更多信息:一些黑客可以从用户那里窃取 cookie 并在网站上使用该名称登录吗?

表单认证——Cookie重放攻击——保护

http://support.microsoft.com/default.aspx?scid=kb;en-us;900111

于 2013-05-24T12:55:47.107 回答
0

我认为解决这个问题的唯一真正方法是使用 SSL 来保护 cookie。

即使您在注销时采取了一些措施来使 cookie 服务器端无效,但这并不能阻止某人在合法用户仍在登录时重放 cookie。这意味着任何其他解决方案都会让您容易受到攻击。也许不会持续太久,而是某个窗口。

于 2013-05-24T13:49:54.913 回答
0

您实际上可以使令牌服务器端无效。基本上,ASP.NET 提供了一种简单的方法来“使早于 DATE-X 的令牌无效”,您只需在用户数据库中存储一些日期。例如,它可以是“最后一次密码更改日期”。

在这里查看我的答案:表单身份验证 - Cookie 重放攻击 - 保护

于 2019-07-07T19:38:38.977 回答