我的网站被Statcounter攻击了! Statcounter会保留cookie的记录吗?

时间:2010-03-20 10:06:05

标签: .net asp.net-mvc authentication cookies

我在ASP.Net MVC网站上有一个相当有趣的黑客入侵案例。对于这个网站,我为我的管理区域实现了一个相当简单的身份验证系统 - 一个加密的cookie,它具有该成员的识别签名。每当管理员访问网站时,cookie都将被解密并进行签名验证。如果匹配,他就不必登录。

几天前,我网站上的一位访问者告诉我,只需点击他的Statcounter控制台上没有指向我的管理区域的推荐链接就可以登录我的网站(我从里面的链接访问了他的网站)我的管理员视图)。

他只是点击了statcounter中的一个链接,他以管理员身份登录!

这可能发生的唯一方法是,如果statcounter以某种方式记录我的cookie并在点击指向我的管理员的链接时使用它们!

这是合乎逻辑的还是可以理解的?

我不明白发生了什么。您对我如何保护自己的网站免受此类攻击有什么建议吗?

更新:我创建了一个IP地址白名单系统,以保护我的管理员免受未经授权的访问。基本上,服务器现在将访问者的IP地址与白名单进行比较,并且只有在该IP地址位于该列表中时才允许访问。它还支持通配符,因此即使对于动态IP地址也可以。

虽然它不是万无一失的,但它会占用安全性很多。

5 个答案:

答案 0 :(得分:3)

我不知道你是如何在你的网站上进行身份验证的,但我就是这样做的,而且我不认为任何人都可以打破这个:

var authTicket = new FormsAuthenticationTicket(
          1,
          userName,  //user id
          DateTime.Now,
          DateTime.Now.AddMinutes(20),  // expiry
          createPersistentCookie, 
          null,
          "/");

        var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(authTicket));

        HttpContext.Current.Response.Cookies.Add(cookie);

这使用FormsAuthentication,它使用machine.config

中的密钥加密cookie

答案 1 :(得分:2)

我不知道如何通过StatCounter发生这种情况 - 即使它如上所述暴露了您管理区域的链接,他的本地计算机也没有身份验证cookie。请他发送他所关注的链接,并在您通常不使用的浏览器或其他PC上自行尝试。 我的猜测是你的身份验证系统存在一些缺陷,这意味着如果某人(即你)已经在其他地方登录,那么指向管理区域的链接会自动生效。或者,链接包括您的完整凭证,而不是StatCounter的错误。

答案 2 :(得分:0)

该网站可能容易受到被动XSS的攻击。我可以帮忙,但你需要张贴网站地址。

将来,如果您想保护您的(或用户)cookie,请将其设置如下:

$cookie = encoded($user-ip-address);


接下来,验证签名:

if ( decoded($cookie) == $user-ip-address ){
    //succesefull login
}

答案 3 :(得分:0)

通过XSS听起来像是一个被盗的cookie。相当古老的article,但你感兴趣。

答案 4 :(得分:0)

不,StatCounter没有记录cookie!

Cookie只能发送到原始域名/从原始域名发送,因此您网站的Cookie绝不会发送到StatCounter。

我的猜测是访问您管理网站的原始会员没有启用Cookie,而您的.net网站又回到了编码会话ID的网址。

这个会话编码的网址由StatCounter记录为推荐链接,泄露了身份验证。

更多信息:Session Hijacking Protection in ASP.NET