【问题标题】:Is changing Session Id the best solution for Session Fixation and why does changing Session ID raises Session_End event?更改 Session Id 是 Session Fixation 的最佳解决方案吗?为什么更改 Session ID 会引发 Session_End 事件?
【发布时间】:2012-12-21 04:29:15
【问题描述】:

在安全漏洞测试期间,我们的客户端在用户成功登录系统后请求应用程序更改会话 ID,特别是 ASP.NET_SessionID cookie 值。这可能会解决 session fixation 如何在 Session Id 更改时引发 session_end 事件并导致重新启动会话(系统),该会话将再次重定向到登录页面。有什么方法可以更改会话 ID 而不会导致这一切?

请提出任何解决方法。

【问题讨论】:

  • 为什么不将会话导出到 OutProc 存储,如分布式缓存提供程序或 StateServer 或 SQL Server,更改 Id 并在之后恢复会话并将会话与新 ID 关联。这样 ID 将被更改,用户将保持登录状态。
  • @KevinRyan:这就是我首先在本地机器(inProc 存储)上尝试做的事情。但是,更改会话 ID 会导致引发 session_end 事件。

标签: asp.net vb.net security session-cookies


【解决方案1】:

很好的问题。当人们谈论更改会话 ID 以防止会话固定时,他们通常会想到 Java 框架中发生的漏洞,在这些漏洞中知道 sessionId 就足以接管会话。

但是,ASP.NET 是另一种野兽。 ASP.NET 需要两个东西来接管会话:sessionId 和 ASPXAUTH cookie。如果你用谷歌搜索,你会发现仍然存在会话固定可能性的不合理说法,但我不相信,因为似乎没有人展示如何利用它们。我发现最接近它可以被利用的证据是this blog,至少可以说是有见地的。该博客确实指出了 ASP.NET 中的一个糟糕的实现——框架没有检查 sessionId 和 ASPXAUTH 是否绑定到同一个用户(除非开发人员明确添加了这个检查)。但它可以被利用吗?我可以想到如果开发人员做错了比会话固定更严重的漏洞利用的情况,它可能是可利用的,但除此之外,我对此表示怀疑。

绝对是一个需要更多研究的话题。我意识到我的答案来不及满足您的需求,但我想我还是会跟进。底线:登录后更改 sessionId 似乎并没有提供任何额外的保护。如果你的渗透测试者不这么认为,我会邀请他们向我解释。

【讨论】:

    猜你喜欢
    • 2017-07-19
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 2011-10-23
    • 2015-01-29
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    相关资源
    最近更新 更多