【问题标题】:Vulnerable when user clicks on a malicious link用户点击恶意链接时易受攻击
【发布时间】:2019-10-09 21:35:58
【问题描述】:

我正在尝试了解安全登录身份验证。实现登录功能的代码在以下链接中。 (在这种情况下,使用了 guid,但在现实生活中可以使用更好的机制)

https://github.com/GrepSecurity/SessionFixationExample/blob/master/SessionFixationExample/SecureLoginFunc/SecureLogin.aspx.cs

用户登录后,欢迎页面会显示以下链接中的代码,以检查用户的真实性。 (这是我能找到的用于验证用户身份验证的最常用代码)

https://github.com/GrepSecurity/SessionFixationExample/blob/master/SessionFixationExample/SecureLoginFunc/SecureLogout.aspx.cs

我正在考虑一种可能会失败的情况。考虑场景

  1. 受害者已登录
  2. 受害者将在服务器上创建 2 个会话变量。前任: Session["userLoggedin"] = "受害者" 会话["AuthToken"] = "GUID"
  3. 受害者将在其浏览器中创建一个 cookie。前任: Cookie["AuthToken"] = "GUID"
  4. 攻击者向受害者发送一个恶意链接,该链接对其状态进行了一些更改(发送好友请求、删除用户、将受害者注销......)。 假设链接如下: www.somewebsite.com/Logout 这会注销用户。
  5. 受害者单击链接,获得身份验证,因为来自浏览器的 cookie 即“GUID”被发送到服务器并根据会话变量进行验证。
  6. 用户被注销

我知道上面提到的可能性没有严重的影响,但是,这种情况可以避免吗?或者这甚至是一个有效的场景?我错过了什么吗?

这是我的问题

  1. 可以处理这种情况吗? (考虑到这是一个有效的场景)
  2. 我指的是安全代码吗?
  3. 这是什么漏洞?
  4. 如何缓解这种情况?

【问题讨论】:

  • 据我了解,只有当请求来自跨站点时,这才属于 CSRF。如果攻击者与受害者共享的链接来源相同怎么办。例如: 1. 受害者登录到 www.somewebsite.com 2. 攻击者也使用同一个网站并且知道几个 URL。他向受害者发送了一个链接 例如:www.somewebsite.com/DoSomething 3. 受害者单击此链接时没有意识到这是一个恶意链接。 (受害者没有 url 知识) 4. 点击时,cookie 被传递并被验证,动作完成如果我错了请纠正我

标签: c# asp.net security authentication session-cookies


【解决方案1】:

在此示例中,您提到这是另一种攻击场景 (CSRF)。

CSRF 的基本含义是:攻击者代表受害者执行操作。此操作或此操作的原始请求将来自另一个站点。

为了防止 CSRF,您可能需要遵循 OWASP 指南。 (https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.md)

但是对于你的例子。假设您要保护名为 Order 的操作。 您的服务器上将生成一个令牌。然后,此令牌将被呈现或发送给客户端。 一个有效的请求看起来像 www.somewebsite.com/Order 和 Post 参数 Order=Something & Token="RANDOM_TOKEN"

服务器将在执行此操作之前检查此令牌。

如果攻击者只是从另一个站点/域发起此请求,则攻击者将无法访问此令牌,因为它是在客户端页面上呈现的。

攻击者是否有可能获得此令牌的访问权限?

是的,如果应用程序容易受到 (XSS) 的攻击,这可能是可能的。 使用 JS,攻击者可以通过 JS 命令向受害者发送恶意链接

  • 获取渲染的 CSRF 令牌。
  • 使用令牌执行操作。

虽然是 XSS 窃取受害者 cookie 的常见情况。但如果 cookie 被标记为 HTTPOnly,则可能发生 CSRF 攻击。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 2018-01-19
    • 2013-05-30
    • 1970-01-01
    • 2015-10-03
    相关资源
    最近更新 更多