【发布时间】:2016-04-14 14:17:33
【问题描述】:
我有一个 C# 项目,它在登录屏幕后面有一些管理功能。
在最近的一次渗透测试中,我们发现了潜在的攻击:如果用户提交了一个表单,然后退出,并且表单发布被重复(使用 burp 或类似工具),服务器仍然认为他们已经登录并且正确响应。
整个“管理员”控制器设置为[Authorize],并设置了适当的角色。注销时,我正在打电话
FormsService.SignOut();
Session.Clear();
Session.Abandon();
并将用户重定向到起始页。
我所读到的一切都表明,这应该是我需要做的一切来防止这种情况发生。也就是说,我可以执行以下操作:
- 登录我的管理区
- 执行搜索(JSON POST 操作,在 burp 中捕获)
- 查看搜索结果
- 退出
- 在 burp 中重复 JSON POST(其中包含一个“.ASPXAUTH”cookie)
- 在 burp 中查看与早期响应匹配的服务器响应
我能做些什么来防止这种情况发生?
【问题讨论】:
-
一般来说,为了防止重放攻击,您可以使用带有 nonce 的质询-响应身份验证。
-
Session.Abandon应该清除服务器端会话;那应该行不通。 -
@SLaks:所以我读过。然而,它仍然发生。我自己进行了测试。
-
你能改变会话ID吗?
-
@NeilMcGuigan:我当然可以尝试,你能推荐一个我可以使用的方法吗?
标签: c# .net json security forms-authentication