2024年4月28日发(作者:)

网站Session欺骗攻击与防范

摘 要 随着互联网技术的发展,近年来,针对网站Session的欺骗攻击层出不穷,此

类攻击手法隐蔽,范围极广,给互联网安全带来了极大的隐患。本文从原理上对其攻击的

类型和方法进行了简单的说明和验证,并且针对此类攻击给出了一些有效的防范措施。

关键词 Session欺骗;cookies欺骗;xss漏洞;web安全

Session技术是当前网站开发中最常用的技术之一,其最主要的功能简单说就是服务

器给客户端的一个编号。当一台WWW服务器运行时,可能有若干个用户浏览正运行在这

台服务器上的网站。当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器

建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用户的

唯一身份。这个SessionID是由WWW服务器随机产生的一个由24个字符组成的字符串。

本文所讨论的欺骗攻击和防范正是围绕这个编号进行的。

1 客户端对服务器端的欺骗攻击

1.1攻击原理

在用户访问并登录了某个网站后,该网站的服务器就会给该用户机子上分配一个

SessionID,此信息是通过客户机的cookies存放在某一文件夹里面的。Session本身并不

是长期有效,每一个Session在客户端关闭浏览器后SessionID都会自动撤销,但服务端

默认保存20分钟。正是有这20分钟的时间,给欺骗带来了可能。

服务器端对不同用户的识别,只能通过SessionID进行,也就是说网站服务器端是“只

认ID不认人”,只要ID符合,就认为是合法用户,所以攻击者只要得到了被攻击对象的

SessionID就可以以被攻击对象的身份合法登录,而20分钟的默认保留值,也使得攻击者

即使在被攻击对象关闭浏览器后依然有一定的时间成功登录。

1.2攻击常用手法

当前利用此原理进行攻击的常用手法是利用网站本身的xss漏洞或者是诱骗被攻击者

点击相应链接,以使其隐蔽访问攻击者事先假设好的网站并执行恶意代码,获取被攻击者

的cookies信息从而得到SessionID。最后用可以修改SessionID的浏览器或其它可以提

交数据的工具伪装成被攻击者的ID合法登录。

1.3此类攻击的防范

此类攻击过程较为隐蔽,但也有其局限性。因为Session本身有时间限制,特别是用

户在关闭浏览器后,留给攻击者的时间也只有20分钟。另外,在触发机制上,盗窃cookies

代码的执行必须是用户自己触发,也就是说,用户什么时候触发代码,攻击者是不知道的,

从用户触发恶意代码到Session失效,攻击者只有很短的时间进行非法活动。

所以,要对此类攻击进行防范,客户端本身应对陌生人给出的超级链接保持警惕,特

别是对比较长的超链接更要小心。每次登录网站后应该及时利用网站的退出功能退出和清

除本机的cookies。另外登录密码的设置不要过于简单,尽量使用字母与数字组合,密码

长度应该在8位以上。网站管理员在开发网站时要注意检查网站的xss漏洞,要注意

Session有效期的设置,一般不要把有效期设置太长,这样即使真的被攻击也能让其非法

活动时间大大缩短。

2 直接对服务器端的欺骗攻击

2.1攻击原理

与客户端欺骗不同,此类攻击是对服务器端的直接欺骗。网站开发者在管理员管理页

面通常都会有Session验证,目的是为了验证当前登录者是否为合法用户。以ASP为例,

通常使用代码为:

此段代码验证了session(”admin”)是否为空,是则给出提示并返回初始登录状

态。我们可以想到如果之前有管理员以自己的合法账号登录过,则session(”admin”)

必定有相应的赋值而不会遭到拦截。所以在这里,此段代码确实可以有效的阻止不经过验

证而直接登录管理页面的非法登录者。

但如果攻击者能够在登录管理页面前,使用某种手段使得session(”admin”)被

赋值(不一定是网站开发者所赋予的值)则此段验证代码则无法拦截此类非法登录。从而

达到了直接欺骗服务器而以管理员身份直接登录的目的。那么,session(”admin”)是

否可以在外部被赋值呢?对此本文做了两个实验:

实验1 用IIS建立两个不同站点X,Y

在X站点中建立 ,语句为

分别访问站点X和Y中的页面后再访问站点X中的页面,页面输出显

示为”更改不成功”。证明Y站点中的语句并没有对X站点的session(”admin”)

的值产生影响。

实验2 用IIS建立站点X,并在X站点下建立Y目录

在X站点中建立 ,语句为

分别访问站点X和目录Y中的页面后再访问站点X中的页面,页面输

出显示为”更改成功”。证明Y目录下的中的语句对X站点的session(”admin”)

的值产生了影响。

由此两个实验可知,session(”admin”)并不能在不同站点间互相赋值,只有在同

一站点下才有能在外部赋值的可能。所以此类对服务器端的直接欺骗攻击并不是在任何条

件下都可进行,还需要一些特定的条件。

2.2攻击常用手法

当前利用此原理进行攻击的常用手法是都是在取得了某网站域名下的某个webshell

进行的。如许多免费空间网站都会在主域名下允许用户有自己的二级域名,而此域名的目

录又和网站主目录在同一站点下,这样就为欺骗攻击提供了条件。而其它一些网站由于自

身的XSS等漏洞,使得用户拿下某个webshell,从而也使欺骗攻击成为了可能。在具备

了欺骗必备条件后,攻击者还必须知道session验证的源码,从而才能编写恶意代码绕过

系统原有的验证。当然,如果验证源码是上文所列的情况,则攻击者只需知道session所

用变量即可,因为其并没有给出具体的赋值,只是简单的验证是否为空。攻击者只要赋任

意值即可通过此验证。

2.3此类攻击的防范

此类攻击手法也相当隐蔽,危害极大。因为攻击一旦成功,则攻击者即可以管理员身

份非法登录。从此类欺骗攻击的原理我们知道,此攻击要成功必须具备多个先决条件:获

得该域名下的一个webshell或者攻击网站与被欺骗网站在同一主站的同一目录下;被攻

击主站采取了session验证管理页面;获得被攻击站点的session验证源码;知道被攻击

主站的管理页面地址。

所以我们要防范此类攻击,就只能从几个限制条件考虑。网站开发者应该尽量避免各

种漏洞,站点在使用前应该经过周密而详尽的测试,从而降低被发现漏洞的可能。对于网

站源码不能轻易泄露,特别是在公开场合。如果是使用公开源码假设的网站,更要把源码

关键部位更改。本攻击欺骗的关键源码部位即session验证源码,上文所举例子如能改成

如下代码则安全性大大提高:

4 结论

Session欺骗攻击是目前比较流行而且隐蔽的手法,其运用范围广,危害大。但只要

了解了其主要原理和限制条件,并根据相关的防范方法,从网站的开发阶段、测试阶段严

格把关,发现问题和漏洞后及时更新和维护,就可以把受到此类攻击的概率大大降低。

参考文献

[1]刘杰.浅议跨站脚本攻击的检测与防护[J].电脑开发与应用,2011(10).

[2]赵学杰,唐屹.跨站脚本攻击模式研究[J].信息网络安全,2011(11).