欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

跨站攻击之实现Http会话劫持的手法

程序员文章站 2022-07-03 10:06:42
Web应用程序是通过2种方式来判断和跟踪不同用户的:Cookie或者Session(也叫做会话型Cookie)。其中Cookie是存储在本地计算机上的,过期时间很长,所以针对Cookie的攻击手段一般是盗取... 08-10-08...
web应用程序是通过2种方式来判断和跟踪不同用户的:cookie或者session(也叫做会话型cookie)。其中cookie是存储在本地计算机上的,过期时间很长,所以针对cookie的攻击手段一般是盗取用户cookie然后伪造cookie冒充该用户;而session由于其存在于服务端,随着会话的注销而失效(很快过期),往往难于利用。所以一般来说session认证较之cookie认证安全。
  当然啦,session难于利用并不等于不能利用,本文将通过一个小小的例子实现一次简单的http会话劫持。   还是以asp为例,asp程序是如何得到客户端session的呢?通过抓包可以发现http请求的cookie字段有个aspsessionidxxxxxxxx(x是随机的字母)值,asp程序就是通过这个值判断session的。如果我们得到管理员的aspsessionidxxxxxxxx及其值,并在这次会话结束之前提交到服务器,那么我们的身份就是管理员啦!   那怎么得到session呢?答案是跨站。因为javascript的document.cookie()方法会把cookie读出来,当然也包括会话型cookie。   如果你关注web安全,相信你一定看到过记录跨站得到cookie的脚本程序,我们也需要一个类似的程序,但功能不是记录,而是立即转发(因为当前会话随时可能由于管理员退出而失效)。这个程序可以用asp、php、perl甚至c来实现,我还是用asp吧j   要写这个程序,你还必须对要攻击的程序相当了解,因为你要提交各种请求。那现在先看看本例中被跨站的程序吧。   很荣幸,我选中了webadmin 1.4,嘿嘿,自己写的程序自己肯定最清楚哪里有漏洞啊。呵呵,简要介绍一下,webadmin是一个asp.net下的webshell,使用的session认证方式,1.4版本的跨站存在于目录浏览的url。   所以我就在src中构造这样的路径:“e: ”。这段代码就是把当前cookie作为参数提交给www.0x54.org/test/cc.asp文件。   cc.asp文件内容如下:   该文件目的是获取管理员session并利用webadmin的文件编辑功能查看222.210.115.125(被攻击的web服务器,其实是我本机啦)的e:\myweb\webadmin.aspx文件内容并把内容保存到本地的a.txt文件中。数据的提交使用的是serverxmlhttp组件,它与xmlhttp有相似之处,也有异同,具体的可以看看《serverxmlhttp vs xmlhttp》。   准备就绪,先登陆webadmin然后再访问构造好的跨站url,呵呵,然后去看http://www.***.org/test/a.txt。   你也可以试试直接访问cc.asp,呵呵,生成的a.txt将是一个登陆界面的源文件。   哈哈,现在热烈庆祝一下本次http会话劫持测试胜利闭幕,总的来说实行一次这样的攻击难度还是很大的,不过话又说回来,在技术这块领域,除了copy人家的代码,还有不需要努力就能做好的事情吗?