web系统之session劫持解决
可能。
两台主机要想进行TCP通信,必须经过一个三次握手的过程。三次握手过程中服务端和客户端一般会协商一个序列号。这个序列号一般是一个长整数。用来标记
每个数据包本来的顺序。服务端或者客户端使用这个序列号来重组在网络传输过程中乱序了的数据包。服务端和客户端在三次握手过程中还会协商其他的内容
比如window
size用来通知对方自己可以缓存多少个数据包,以防止某一方过快发送数据包导致丢包。
下面简述一下三次握手的过程:
假设A想要和B进行通信。
A会先发给B一个TCP数据包。这个数据包中的SYN标志被置位,因此又将这个数据包叫做SYN数据包。在这个数据包中会包含A的Window
size信息,并且会包含一个ISN(Initial Sequence
Number)号,就是初始序列号ISNA。好像最初的ISN号码固定从一个数字开始,这样更容易被人劫持,所以后来这个数字变为了一个伪随机数。这个值的取值范
是0到2^32-1。这个数据包中不带负载数据。
B在收到SYN数据包后会返回一个SYN+ACK数据包,这个SYN+ACK数据包用来告诉A:
"我收到了你的SYN数据包"。同时B会将A发过来的ISNA号,原封不动地插入这个ACK数据包。并且将自己的ISNB号码放入这个ACK数据包中返回给A。这个数据包
同样不会带任何的负载数据。
A收到B的ACK数据包时,同样会返回给B一个ACK数据包表示成功收到对方的数据包。同时A也会将B发送来的ISNA数据+1,放入这个ACK数据包返回给B。这个数据
包中可以携带负载数据,也可以不携带负载数据。(因为这时连接已经建立了)
通过上面的三次握手之后,一个完整的TCP连接就建立好了。
之后的序列号都是主机收到的数据包中的序列号+收到包中的数据大小。第三次握手中,如果ACK数据包中携带数据,那么ISNA就不再是+1了。而是+数据大小。
Session Hiject
TCP协议在设计之初并没有考虑太多安全的因素。Session都是通过客户端IP,客户端Port,服务端IP,服务端Port来验证的。
session劫持一般发生在A和B建立连接之后的通信过程中。Hacker一般会首先监听网络上的通信数据包。在某次通信过程中,Hacker在B发送信息给A之前,假冒
B发给A一个数据包。这个数据包中使用B的IP和端口,并且将上次B收到的序列号+此数据包的数据大小作为序列号。在A收到这个数据包时,就会以为这个数据
是B发给他的。同时A会根据Hacker发给他的数据包修改自己的序列号。如果真正的B尝试发送数据包给A时,A会因为序列号不正确抛弃这个数据包(这时因为B没
有收到A的响应,所以会重发这个数据包,而这个数据包在发送到A之后又被抛弃)从此Hacker就可以代替B和A通信了。
完成这个过程一般需要一下3个步骤:
1、监控,跟踪某个Session通信过程。
2、破坏Session同步通信。
3、劫持这个Session。
下面简述一下实现以上三个步骤的过程。
1、通过简单的sniff就可以监听网络上的数据包。
2、要想破坏Session同步,我们需要预测数据包的序列号。如果我们有权限访问网络,那就可以sniff到网络通信过程,并且从数据包中可以计算出下个序列号
。这就是本地session劫持。如果我们没有权限,不可以sniff到客户端和服务端的通信过程,那就比较麻烦了。预测序列号是很不可能的,因为可选范围太大
。(2^32中可能性)
在如法预测序列号的时候,可以通过ARP欺骗的方法对客户端和服务端来个中间人攻击。这样就可以使两者之间的通信都在Hacker的监控之下。
3、在上面两个步骤完成之后,就只剩下重组数据包,并且发送给通信的某一端了。重组数据包有很多中方法和现成的工具。这里就不说了。
有很多工具可以用来做Session劫持,有商业的,也有开源的。
这里只提供一些大概的思路:
数据库设计:
logininf表(登录状态表)要有userid, sessionid, workstation(ip), agent(request), hashticket.
1, 在登录成功后,把登录时request的ip, agent,并把sessionid+ip+agent的hash记入logininf表
2,
在每次页面访问时,获取request的ip,agent,利用sessionid+ip+agent
hash的结果同logininf表里的hashticket比较,如果相同则表明该session是合法的,不同则表示该session和登录时的
session要么不在同一台机器上,要么浏览器等其他因素改变,极有可能是session篡改。
web系统之session劫持解决的更多相关文章
- 在英文Win7操作系统上部署C#开发的Web系统出现乱码的解决方法
今天,迁移机器,把一个使用C#开发的Web系统部署到一台英文版Win7操作系统上,部署好以后,系统可以登录,只是网页上出现汉字乱码. 在这台电脑上,打开Word等文本编辑器,是可以正常输入.显示中文的 ...
- web集群中经常使用的session同步解决方式及对照
随着站点的功能越来越多,用户量越来越庞大,单节点模式已经严重不能支撑整个系统的正常运作,轻则用户页面訪问时间越来越慢.重则就会导致整个系统瘫痪.这时候 就须要优化或调整眼下的架构,大部分人就会採用各种 ...
- Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗、嗅探、dns欺骗、session劫持
Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗.嗅探.dns欺骗.session劫持 文/玄魂 目录 Kali Linux Web 渗透测试—第十四课-arp欺骗.嗅探.dns欺 ...
- ASP.NET Web Service中使用Session 及 Session丢失解决方法 续
原文:ASP.NET Web Service中使用Session 及 Session丢失解决方法 续 1.关于Session丢失问题的说明汇总,参考这里 2.在Web Servcie中使用Sessio ...
- java 浅谈web系统当中的cookie和session会话机制
一 Cookie: 1. Cookie翻译为小甜饼,有一种特殊的味道.cookie主要用来在(浏览器)客户端做记号用的.Cookie不属于java,Cookie是一种通用的机制,属于HTTP协议的一部 ...
- System.Web.HttpContext.Current.Session为NULL解决方法
http://www.cnblogs.com/tianguook/archive/2010/09/27/1836988.html 自定义 HTTP 处理程序,从IHttpHandler继承,在写Sys ...
- 亿级Web系统搭建——单机到分布式集群
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...
- XSS危害——session劫持
在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小例子,有些同学看了后会说这有什么大不了的,哪里有人会明文往cookie里存用户名和密码.今天我们就介绍 ...
- 亿级Web系统搭建——单机到分布式集群[转]
当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...
随机推荐
- UI3_CustomUITableViewCell
// AppDelegate.m // UI3_CustomUITableViewCell // // Created by zhangxueming on 15/7/15. // Copyright ...
- 继承关系在内存和DB中的映射
使用 将若干相似的类映射为单表,对拥有许多特殊数据的类使用具体表继承. 对高层次使用类表继承,对低层次使用具体表继承. Single Table Inheritance 在DB中将类继承层次设计为一个 ...
- sql中更新数据库用到declare @a in
declare @a in update TB_Class set @a=1,name='李小龙' where ID=1 这样就可以像更新哪个就更新哪个了 例如ibatisnet中需要更新的时候: & ...
- jasonTree多选多级树控件
jasonTree1.0 jasonTree多选多级树控件(名字是自己取),用于友好的展示树形结构的数据,并可以多选,传统的做法是在一个select的下拉框中显示一个可折叠的树结构,公司的需求人员这种 ...
- MySQL语法语句大全
一.SQL速成 结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件(如表.索引.字段等)的建立和操纵. 以下是一些重要的SQL快速参考,有关SQ ...
- spring中controller
提示:原网站已由百度转码,以便在移动设备上查看. 第七城市 (Portal 开发读书笔记)Spring Portlet MVC 测试Controller 2012-04-28 16:32:44 - - ...
- Oracle bbed 实用示例-----File Header Reset
一.查看当前环境 1.1 当前控制文件中的SCN号 [oracle@ora10 ~]$ sqlplus /nolog SQL :: Copyright (c) , , Oracle. All righ ...
- 1101. Quick Sort (25)
There is a classical process named partition in the famous quick sort algorithm. In this process we ...
- 1099. Build A Binary Search Tree (30)
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following propertie ...
- C++11右值引用,移动主义
理解1: 左值和右值针对等号而言, 等号左边称为左值, 等号右连称为右值. 理解2: 左值和右值针对表达式而言, 表达式结束后依然存在的持久对象称为左值, 表达式结束后不存在的持久对象称为右值. 理解 ...