XSS会话劫持
(1)Cookie简介
Cookie是能够让网站服务器把少量文本数据存储到客户端的硬盘、内存,或者是从客户端的硬盘、内存读取数据的一种技术。
Cookie是一段随HTTP请求、响应一起被传递的额外数据,主要作用是标识用户、维持会话。
浏览网站时,该网站可能会在电脑硬盘写入一个文本文件,可以记录ID、密码等。这个文件就是Cookie文件,当再次浏览网站时,网站会读取Cookie,做出相关回应。比如:在你输入密码登录后,会提示你是否保存,保存后,下一次登录时可以直接登录。
根据Cookie在客户端中存储的位置,分为内存Cookie和硬盘Cookie。内存Cookie保存时间短暂,浏览器关闭后,Cookie就消失。硬盘Cookie保存在硬盘里,有过期时间,到期或者手动清理即可删除。所以,Cookie又分为持久Cookie和非持久Cookie。
(2)XSS盗取Cookie
如果网站存在XSS漏洞,攻击者则可以构造恶意XSS代码获取用户cookie,然后截断此网站的HTTP请求包,将获取的Cookie替换原有的Cookie,则不用输入用户名和密码,直接登录该用户。
(3)SEESSION
除Cookie外,维持会话状态还有一种形式是SESSION。
WEB中SESSION是在浏览一个网站时,从进入网站到浏览器关闭所经过的时间,就是一次客户端与服务端的‘对话’。浏览器关闭后,SESSION自动注销。
每个用户的会话状态都是不同的SESSION,区分这些用户的,叫做SESSIONID。用户第一次连接服务器时,会自动分配一个SESSIONID。这个SESSIONID是唯一的,在浏览器关闭后,SESSION自动注销,下一次连接时,会重新分配。
SESSION相对Cookie来说更安全,它只存在于服务端,在客户端只存在一个ID,而COOKIE是存储在客户端。
当然,如果网站存在XSS漏洞,攻击者构造了恶意XSS代码,如果一个用户正在浏览该网站,同时也触发了攻击者的XSS代码,此时,攻击者就可以拿到SESSION,因为用户没有关闭浏览器,SEESSION没有被注销,攻击者就可以利用SESSIONID等信息,直接登录此用户。