(计算机软件与理论专业论文)基于cookie欺骗的session渗透入侵分析及其安全模型研究.pdf_第1页
(计算机软件与理论专业论文)基于cookie欺骗的session渗透入侵分析及其安全模型研究.pdf_第2页
(计算机软件与理论专业论文)基于cookie欺骗的session渗透入侵分析及其安全模型研究.pdf_第3页
(计算机软件与理论专业论文)基于cookie欺骗的session渗透入侵分析及其安全模型研究.pdf_第4页
(计算机软件与理论专业论文)基于cookie欺骗的session渗透入侵分析及其安全模型研究.pdf_第5页
已阅读5页,还剩49页未读 继续免费阅读

(计算机软件与理论专业论文)基于cookie欺骗的session渗透入侵分析及其安全模型研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江太学硕士研究生毕业论乏基于c o o k i e 欺骗的s e s s i o n 渗透八侵分析及其安全模型研究 摘要 c o o k i e 的引入弥补了h t t p 协议的无状态性的缺陷。w e b 应用的服务端和 某一客户端可以通过一个相对惟一的c o o k i e 值来维系一个s e s s i o n ,从而达到 状态u 别的目的。本论文指出了这种基于c o o k i e 的s e s s i o n 管理机制的一种典 型缺陷,阐述了目i 常见的w e b 环境下基于c o o k i e 欺骗的s e s s i o n 渗透入侵的 实现原理和预防检测手段,提出并且实现了一个局域网下利用网络监听来实现 s e s s i o n 渗透攻防和入侵检测的比较完整的系统。 s e s s i o n 渗透入侵主要表现在伪造c o o k i e 中的s e s s i o ni d 从而冒充合法客 户端和服务器端进行数据交换,造成这个漏洞的原因是几乎所有的w e b 脚本解 释引擎都未对不同的i p 所发送的c o o k i e 进行充分的检查,如果非法用户截获 了发送给其他客户端的c o o k i e ,便可能通过发送此c o o k i e 来进行s e s s i o n 渗透 入侵。另外,w e b 脚本解释引擎通过自己的一套算法来给每个独立客户端生成 随机的c o o k i e 值,如果这个随机生成过程能够被外界模拟猜测,那么也就相当 于其他客户端可以随时伪造c o o k i e 来进行s e s s i o n 渗透,而无需预先进行网络 监听。 对s e s s i o n 渗透入侵的预防主要在于改良w e b 脚本解释引擎,加入i p 验证 部分,减轻丌发人员手工编程验证的负担。而对于其检测则需要在1 d s 的结构 原理方面进行一些实质性的探索。本文即深入探讨了一个基于网络监听的 s e s s i o n 渗透入侵检测系统的设计与实现原理,这部分也是包括原理分析、入侵 预防和检测在内的s e s s i o n 塞全模型研究的主要内容。) 尹7 一一 关键词:c o o k i e ;s e s s i o n ;圈而f 可口;国网络安全;仄硬2 冲国务凑泻 羽蹶、? 丝兰奎兰丝圭竺奎兰兰当丝叁 ! 垒兰竺! 竖:鳖些璧! ! 塑! 塑垒垒垒堡坌堑垒茎塞全! 些竺叁! a b s t r a c t c o o k i er e m e d i e st h en o n s t a t ef l a wo fh t t p p r o t o c 0 1 w e bc l i e n ta n ds e r v e r c a n k e e ps e s s i o n st h r o u g hs o m eu n i q u ec o o k i es t r i n g st od i s t i n g u i s hs t a t e sf r o me a c h o t h e r t h i sp a p e rp o i n t e do u tat y p i c a ll i m i t a t i o no ft h i sc o o k i e b a s e ds e s s i o n m a n a g e m e n tm e c h a n i s m ,d e s c r i b e d t h e p r i n c i p i u m o fs e s s i o n p e n e t r a t i o n v u l n e r a b i l i t yb a s e do nc o o k i es n o o p i n gi nc o m m o nw e be n v i r o n m e n t s a n dg i v e s s o m e p r e v e n t i n ga n dd e t e c t i n gm e a s u r e s i ta l s od e s i g n e da n di m p l e m e n t e d al a n s e s s i o np e n e t r a t i o n & i d s s y s t e m u s i n gn e t w o r ks p o o f i n g s e s s i o np e n e t r a t i o ni n v a s i o n ,a s s e n d i n gs n o o p e dc o o k i e st oe x c h a n g ed a t a w i t hs e r v e r sw i t h o u ts e s s i o na u t h o r i z a t i o n o c c u r sw i t l lt h er e a s o nt h a ta l lo f t h ew e b s c r i p te n g i n e sw o u l d n o tc h e c kt h ec o o k i e sf r o md i f f e r e n tc l i e n t s 、v i t hd i f f e r e n t1 p a d d r e s s e s i fa ni l l e g a lu s e rs p o o f e dac o o k i eo fs e s s i o ni d i tm a ys e n di tt ow 曲 s e r v e rt o i n j e c ti n t ot h es e s s i o nw h i c ht h ec o o k i ep r e s e n t s aw e bs c r i p te n g i n e g e n e r a t e s s e s s i o n i dc o o k i e st h r o u g hs o m ei n d e p e n d e n ts e c r e t a l g o f i s m i ft h i s p r o c e s sc a nb eg u e s s e do rs i m u l a t e d ,i tm e a n so t h e rc l i e n th o s t sc a na l s og e n e r a t e t h es a m ec o o k i e se x a c t l yt ol a u n c hs e s s i o np e n e t r a t i o ni n v a s i o n sw i t l lo u tn e t w o r k s p o o f i n g i na d v a n c e p r e c a u t i o nt os e s s i o n p e n e t r a t i o ni n v a s i o nc h i e f l yd e p e n d e n t so nr e f o r m i n g w e b s c r i p te n g i n e ,i n c l u d ea d d i n gi pv e r i f i c a t i o n ,t oe a s et h el o a do f p e r s o n n e ls t a f f s h a n d w o r k p r o g r a m m i n g o fc e r t i f i c a t i o n a n dd e t e c t i o no fs e s s i o n p e n e t r a t i o n i n v a s i o nn e e d st o c a r r ys o m es u b s t a n t i a lp r o b i n go ni d sc o m p o s i t i o nr u l e s t l l i s p a p e rt h o r o u g h l yd i s c u s s e st h ed e s i g na n di m p l e m e n t a t i o no fat y p i c a l s e s s i o n p e n e t r a t i o ni d sb a s e do n n e t w o r ks p o o f i n g ,t h i ss e c t i o na l s oi st h em a i ns u b s t a n c e o fs e s s i o n ss e c u r i t ym o d e lr e s e a r c h ,w h i c hi sm a d eu pb yt h ea n a l y s i s ,p r e c a u t i o n a n dd e t e c t i o no f t h ei n v a s i o n s 【k e yw o r d s1 :c o o k i e ;s e s s i o n ;h t t p ;w e b ;i n t e m e ts e c u r i t y ;p e n e t r a t i o n ; v u l n e r a b i l i t y ;i d s 2 1 1 背景与价值 第一章绪论 信息安全是一个涵盖面极广的重要领域,w e b 作为i n t e m e t 信息技术的主 流,其安全性的重要地位也就不言而喻。本论文阐述了目前常见的w e b 环境下 基于c o o k i e 欺骗的s e s s i o n 渗透入侵的实现原理和预防检测手段,提出并且实 现了一个局域网下利用网络监听来实现s e s s i o n 渗透攻防和入侵检测的比较完 整的系统。这里,s e s s i o n 渗透入侵的分析、预防与检测构成了s e s s i o n 渗透安 全模型研究的主体内容,其中入侵检测一部分是本文的核心。 在当前的w e b 安全研究领域中,w e b 服务器安全、缓冲区溢出、c g i 恶意 代码攻击与防范与数据库服务器漏洞研究等占主流地位。h t t p 以及相关协议 因为本身已经是比较成熟的字符型协议,因此可研究的余地不大;c g i 脚本攻 击等属于h t t p 应用层面上的服务应用程序,由于开发时可能存在失误,因而 一直是安全领域中的热门研究话题,而h t t p 或相关协议本身与w e b 应用并非 直接耦合,中间还可能通过w e b 脚本解释引擎等相关的服务程序进行交互,这 一层如果存在安全性漏洞的话,对w e b 应用安全同样会产生严重的威胁。本研 究课题即是对w e b 脚本解释引擎中对基于c o o k i e 的s e s s i o n 的处理机制的漏洞 分析研究,并对此类的入侵预防与检测提出了针对性的设计实现方案,在w e b 安全领域中有相当的价值。 1 2 内容概述 本章是绪论,为后面各章的内容进行简要介绍:第二章对h t t p 原理与 w e b 安全作了初步的论述。第三章对c o o k i e 的形式、作用以及s e s s i o n 会话过 程等进行了描述分析、归纳了w e b 服务端与单一客户端通过状态机制维系 s e s s i o n 的方法,并从理论上分析了s e s s i o n 变量的缓存绑定机制。第四章论述 了基于c o o k i e 欺骗的s e s s i o n 渗透的可能性、以a s p 引擎为例验证了s e s s i o n 渗透入侵、并分析了这种入侵的产生原因和特点。第五章从进一步的底层剖析 某一种w e b 服务器端的c o o k i e 生成算法和可预测性,采用的是开放源码的p h p 脚本解释引擎。 以上是对s e s s i o n 入侵机制和相关原理的分析。在接下来的几章中,第六 丝兰兰兰塑圭竺墨兰量兰丝耋 ! 查圭! ! ! ! ! ! 兰塑竺! ! 璺! ! 兰釜垒堡坌丝垒茎圭全塞型竺垄! 章从s e s s i o n 渗透入侵及检测的角度说明了网络监听技术所起的作用和部分原 理,第七章提出了几种入侵的预防手段和检测的几种典型思路。最后第八章在 总结的基础上,提出、设计并且实现了一个w i n d o w s2 0 0 0 平台下的s e s s i o n 渗 透攻防和入侵检测系统。 该系统由以下几个子系统构成:h t t p 客户端数据生成子系统、s e s s i o n 渗 透入侵子系统、s e s s i o n 渗透入侵检测子系统、本机器网络数据统计子系统、网 络工具子系统等。予系统之间相对来说耦合性不强,界面与实现功能也相对独 立。 由于时间仓促而且作者本人水平有限,论文中谬误之处在所难免,敬请老 师和各位同仁批评指正。 6 一 竺兰奎童丝圭丝塞兰兰些丝圭 ! 垒三! ! ! ! ! ! 鳖塑竺! ! ! :! ! :垒堡垒堡盆丝垒苎耋全些型翌垄! 第二章w e b 安全与h t t p 原理 2 1 w e b 安全概述 w e b 作为i n t e m e t 的应用主流,其安全性不可忽视。h t t p 协议是w e b 通 讯的基础,因此h t t p 的工作机制对w e b 安全问题起着基础性的决定作用。本 章概要说明了w e b 安全的重要性和h t t p 协议的请求回应格式和数据流动时序 等。 w e b 安全涵盖范围比较广,主要包括两大方面,一是w e b 服务器的安全, 包括w e b 服务器的安全配置方案、w e b 服务器本身漏洞研究等;二是c g i 语 言的安全,如c g i 恶意代码攻击与防范等,另外对于解释型c g i 语言,还涉及 到解释器的安全,只不过由于解释器本身由于其特性,可供攻击的漏洞不大, 因此这个领域比较缺乏研究。 许多w e b 应用程序具有的一个重要部分和基本功能要求是能够识别用户 并且能够控制用户对资源的访问。这里,确定请求实体身份的行为称为身份验 证。通常,用户必须出示标识( 如用户名和密码) 以便进行身份验证。一旦经 过验证的标识可用,就必须确定此标识是否可以访问指定的资源,此过程称为 授权。通常这种授权都是通过h t t p 协议或基于h t t p 的高层安全通讯协议进 行的。w 曲上各种恶意入侵的目的之一便是绕过这种授权或身份验证从而进行 非法的未授权操作,本文所研究的s e s s i o n 渗透入侵,其入侵目的也是为了绕 过w e b 应用程序使用s e s s i o n 所构造的身份验证状态机制,因为其机制是通过 c o o k i e 欺骗的方式注入到相互信任的w 曲服务器客户对所维持的s e s s i o n 中冒 充合法客户端进行恶意欺骗,因此被称为“s e s s i o n 渗透入侵”。 2 2 h t t p 协议原理 h t t p 协议是r f c l 9 4 5 以及r f c 2 0 6 8 中规划的基于t c p f l p 的w e b 应用通 讯协议。它所传输的数据由h t t p 头与数据部分组成,两者之间由一个空行分 隔。其中h t t p 请求头由请求行与多行格式类似于“关键字名:关键字值”的 附加头组成。h t t p 请求一般由客户端向服务器端发送,可表示如下他3 : f u l l r e q u e s t = r e q u e s t l i n e ( g e n e r a lh e a d e r 垒兰查丝竺兰兰兰篁圭 ! 釜三! :! ! ! :! 丝丝! :! ! ! 童堡垒丝坌堑圣苎尘全堡型竺垒! jr e q u e s t h e a d e r ie n t i t yh e a d e r ) c r l f e n t i t y b o d y 而服务器的h t t p 回应可以表示如下 f u i1 一r e s p o n s e = s t a t u s l i n e fg e n e r a l h e a d e r lr e s p o n s e h e a d e r e n t i t y h e a d e r ) c r l f e n t i t y b o d y 这里g e n e r a l - h e a d e r 指的是请求和回应中都有效的关键字,r e q u e s t h e a d e r 和r e s p o n s e h e a d e r 分别代表请求和回应中特定的关键字,e n t i t y h e a d e r 和 e n t i t y b o d y 指代的是客户端需要向服务器端提交的额外实体数据,常用于客户 端需要p o s t 数据的场合,如w e b 页面的表单提交等。 请求头中的请求行( r e q u e s t - l i n e ) 由请求方法、具体u r l 和h t t p 协议 版本号组成,这是h t t p 请求的主体。请求方法指明了客户端希望如何获得所 请求的资源,具体方法有g e t 、p o s t 、t r a c e 、h e a d 、d e l e t e 等,用得 最广泛的是g e t 和p o s t ,前者用于请求一般的u r l 资源,后者常用于表单 提交等需要附带额外数据的场合。 回应头中的第一行状态行是回应信息的主体,说明t i l l 务器端返回信息的 性质,包括h t t p 版本号和状态码等,一般状态码2 0 0 表示正常返回请求、4 0 3 表示权限不够被禁止、4 0 4 表示未发现所请求的u r l 、5 0 0 表示内部服务器错 误等。 除了请求行和状态行外,其余每一行h t t p 头( 包括回应和请求等) 可以 按照以下格式来表示: 其中关键字名和关键字值之间由一个半角冒号分隔。关键字名在r f c 的 定义中有许多种,不同的服务器和客户端还可对其进行扩充。 回应头中的关键字s e t c o o k i e 和请求头中的关键字c o o k i e 在s e s s i o n 的维 系中起着重要的作用。它们是c o o k i e 机制的实现基础。 s e t c o o k i e 头用于服务器端向客户端设置c o o k i e ,它的语法是口1 : n a m e = v a l u e 是c o o k i e 值,可以有多个,c o o k i e 之间以分号“:”分隔; c o o k i e a v 是该c o o k i e 的其他一些参数,有d o m a i n 、m a ) 【a g e 、p a l h 、s e c u r e 、 v e r s i o n 等,用来说明该c o o k i e 的版本、作用域、路径、过期时f 1 目_ j 以及安全性 等信息。 一般的h t t p 的通讯过程遵循交互的原则,也即首先是客户端发起t c p 连接,连接后发送第一个h t t p 请求头,服务器端进行回应,发送h t t p 响应 头,如果请求头或者响应头中的c 0 1 1 1 1 e c t i o n 域被置为了c l o s e ,则对方处理完 该请求后会主动断开t c p 连接:如果是k e e p a l i v e 则保持连接,等待进行下一 步数据传输。 除这种交互机制外,h t t p 还定义了s e n r e r - p u s h 和c l i e n t p u l l 技术,具体 来讲就是服务器持续发送数据或者客户端持续对服务器发送请求,一般用于一 些交互性比较强或者有其他特殊需要的场合,如聊天室、某些电子商务等。 9 一 竺兰兰兰丝圭堡垒兰兰兰篓兰 ! 垒三! :些! ! 些兰竺! 竺! ! :垒至垒丝坌丝垒苎耋竺茎兰竺耋! 第三章s e s s i o n 会话过程分析 3 1 c o o k i e 的引入 传统的h t t p 协议是无状态的,也即对于每一次客户的请求和响应,w e b 服务器都把它看作一次独立的数据传输过程。服务器端并不知道本次请求和上 次请求之间有无关系。这种无状念的缺陷不利于w e b 应用的发展。如在普通的 w e b 商务系统中,如果没有状态检验机制,那么服务器端将无法判断发送请求 的用户是否已经通过了必要的身份验证。这就要求每一次用户发送请求的时候 都需要附带上身份验证信息并在服务器端加以验证,不但增重了服务器的负担, 而且身份验证信息多次发送,泄密的可能性大大增加。 为了解决这个问题,h t t p l 1 版本中增加了c o o k i e 的处理。c o o k e 是服 务器端生成的一小段文本,在服务器端在响应客户请求的时候被发送到客户端, 并由客户端浏览器保存。h t t p1 1 规定,当服务器端响应某一次客户请求而设 置了c o o k i e 后,客户端再一次请求这个页面或者这个页面的相关页面的时候必 须也同时发送此c o o k e 的值。这样客户端和服务端就通过c o o k e 建立了一种 对应关系。这种对应关系在r f c2 1 0 9 ( h t t ps t a t em a n a g e m e mm e c h a n i s m ) 中 被定义为术语“s e s s i o n ”,并且r f c2 1 0 9 中说明了使用c o o k i e 来维系s e s s i o n 的格式与使用方法。 3 2 s e s s i o n 概念及其缓存绑定机制 s e s s i o n 在r f c2 1 0 9 中的定义是:“允许客户端和服务器端通过使用 h t t p 的请求与响应头中的数据来交换状态信息的技术”h 3 。简而言之,就是 在多次h t t p 交互过程中客户的惟一性标识技术。它有四个特点: 口每一个s e s s i o n 都有开始和结束的过程。 口相对来说维持时间比较短,最多几十分钟。 口服务器端和客户端都可以主动结束s e s s i o n 。 口s e s s i o n 状态数据交换对用户是透明的。 实现s e s s i o n 管理的关键是服务器要替每个不同的客户端分配并且在缓存 中保留一串相对惟一的标识数据,并且规定客户端在进行相关的数据请求时, 需要将该标识数据一并发回服务器端,服务器端根据客户端发回的标识数据判 断该请求属于哪一个客户,从而处理缓存中该客户的相应信息。 s e s s i o n 管理有手工和自动之分。手工管理意味着w e b 应用程序的开发者 需要自己生成客户端标识数据并发送到客户端,自己还需要维持一张活动客户 列表,以备随时核对查询。这对于开发者来c 兑是很大的负担。现今的w e b 服务 端脚本引擎几乎都支持自动的s e s s i o n 管理,包括a s p 、j s p 、p h p 等。这里“自 动s e s s i o n 管理”的含义是,w e b 服务器会在客户端的初始连接中为该客户端 生成c o o k i e 值并发送,服务器端开发人员无需在代码中手工完成这一步,只需 要直接使用s e s s i o n 变量即可。 s e s s i o n 变量是这样一种变量,它需要开发者在程序中声明,当不同客户端 对该脚本进行请求而启动w e b 脚本程序的多个实例的时候会被赋予不同的值 储存于服务器端管理的缓存中,每个客户端都对应着一个。开发者无需区分客 户,只需在脚本中使用该s e s s i o n 变量即可在不同的脚本运行实例里获得为该 客户端所定制的特定变量值。 具体的通过c o o k i e 建立s e s s i o n 的过程如图3 1 所示: l 竺兰b 窒些些坠些坠当i 竺竺l 厂_ 广 i 兰! 兰1 = 墨鲨些些塑兰些坠:= 一竺竺i 厂_1广 l 竺兰b 兰塑兰些坠些当 l 坠竺i 厂 广 i 兰兰l = 苎鎏垒竺型竺兰兰一竺兰i 图3 1 通过c o o k i e 建立s e s s i o n 的过程 服务端通过检验c o o k i e 的值决定当前用户属于哪一个s e s s i o n ,从而从缓 存中取出对应值赋给指定的s e s s i o n 变量,开发者无需自行完成这一步。 3 3 维系s e s s i o n 的方法 s e s s i o n 管理一般都能通过脚本解释引擎所提供的机制来自动进行管理,避 免了脚本开发者自己管理客户端标识数据的麻烦。目前脚本引擎维系客户端和 服务器端s e s s i o n 的机制主要有两种:通过c o o k i e 和通过在u r l 中附加参数。 丝兰垄耋丝圭丝至兰芝些丝圭 ! 叁三! ! ! ! ! :垫兰塑! ! :! ! :! 童兰垒丝窒丝垒兰童全坚型丝耋: 3 3 1 通过c o o k i e 来维系s e s s i o n 通过c o o k e 来维系s e s s i o n 是r f c2 1 0 9 中规定的标准方法。服务器端在 h t t p 回应头的s e t c o o k i e 中可以替客户端设置c o o k i e 值,按照h t t p 的规定, 客户端在后续的访问中,应该按照s e t c o o k i e 中的指示、通过请求头中的c o o k i e 将服务器端设置的c o o k i e 值发送回服务器端。 需要说明的是,c o o k i e 不仅仅用来管理s e s s i o n ,还可用于保存另外一些 用户状态信息,c o o k e 的操纵一般都提供编程接口,开发者可以通过使用这些 接口来控制c o o k e 以达到开发的目的。 3 3 2 通过u r l 参数来维系s e s s i o n c o o k i e 对用户来讲是基本透明的,因此通过c o o k e 进行s e s s i o n 管理比较 方便。但不是所有的浏览器都支持c o o k e 。对于不支持c o o k i e 的浏览器,也 有另外一种解决办法,即在用户进入s e s s i o n 后,通过程序在u r l 中生成一个 随机的标志字符串,客户端再次请求的时候便可用这个u r l 中包含的字符串来 区分不同的用户。这种方式可称之为基于u r l 的s e s s i o n 管理,它和c o o k e 一样,也能比较有效地区分不同的客户端。 从安全性角度看,这种基于u r l 的s e s s i o n 管理难于控制u r l 过期时间, 并且u r l 以明文发送,在客户端可见,容易被盗取冒充。 兰些塑圭丝垄圭兰兰童兰 ! 叁兰! ! ! ! 丝丝塑竺! :型:查堡垒堡坌丝垒苎耋全楚型璺耋! 第四章s e s s i o n 渗透入侵原理 及其安全模型概述 4 1 s e s s i o n 渗透入侵的验证 s e s s i o n 指的是服务器端和某一个客户所建立起来的连接状态,不同的客户 和服务器端所维系的s e s s i o n 应该可以明确区分。术语“s e s s i o n 渗透”意味着 不同的客户和服务器进行了相同的状态数据交换,服务器认为它们在同一个 s e s s i o n 内,从而产生了安全问题。 许多脚本解释引擎是通过自动生成随机的c o o k e 值来指派给客户端来实 现s e s s i o n 管理的,如a s p 、p h p 、j s p 等皆是如此。不过服务器端在接受客户 端请求的时候,对客户端所发送的标志着s e s s i o n 性质的c o o k i e 值并未有足够 的认证处理,从而造成了一定的安全漏洞。下面以a s p 引擎为例验证如下。 假设有一a s p 页面,名为c h e c k s e s s i o n a s p ,其内容如下( 实验平台: w i n d o w s2 0 0 0a d v a n c e ds e r v e r ,i m e m e ti n f o r m a t i o ns e r v e r5 0 ) : s e s s i o n 检验程序 b o d yb g c o l o r = 4 # f f f f f f ”t e x t = ”# 0 0 0 0 0 0 ”、 s e s s i o n 已经创建。 新链接未能创建s e s s i o n ,现在开始创建,刷新生效。 这个脚本页面的目的是在客户第一次连接的时候将一个s e s s i o n 变量赋值 为t r u e ,并输出开始创建s e s s i o n 的信息,然后在客户刷新页面也就是进行第 二次连接的时候再检验该s e s s i o n 变量以判断客户是否已经进入s e s s i o n 。很明 显,按照正常浏览顺序,首次连接请求该页面的客户,无论如何都只会得到“现 在丌始创建”的结果。 浙江大学硕士研究生毕业论文基于c o o k i e 欺骗的s e s s i o n 渗透入侵分析及其安全模型研究 从h t t p 的通讯过程来看,第一次发送的客户端请求没有附带上c o o k i e 值,服务器端便认为这是一个新请求,于是在回应中便加入了s e t c o o k i e 的 h t t p 头,其c o o k i e 值是一个新生成的随机字符串序列,客户端刷新请求的时 候会发送这个指定的c o o k i e 值,服务器端在收到含有合法c o o k i e 值的请求的 时候便可以通过s e s s i o n 绑定的方式找到正确的s e s s i o n 变量f l a g 的值,从而输 出正确结果。无论有多少客户,只要遵循这样的h t t p 通讯机制,结果都是正 确的。 以上是单独一个客户端刷新服务器端页面的例子。下面以不同的客户端进 行s e s s i o n 渗透验证。 假设一客户端是a ,第一次发送的h t t p 请求数据一般是下面这样的: g e t c h e c k s e s s i o n a s pi t t t p 1 1 a c c e p t :$ a c c e p t l a n g u a g e :z h c n u s e r a g e n t :m o z i l l a 4 0 ( c o m p a t i b l e :m s i e5 0 ;w i n d o w s9 8 :d i g e x t ) h o s t :1 0 1 1 1 7 5 1 3 1 c o n n e c t i o n :c l o s e 服务器端返回的数据如下,已经包含了s e t - c o o k i e 头 h t t p 1 12 0 0o k s e r v e r :m i c r e s o l t i i s 5 0 d a t e :s u n ,2 6m a y2 0 0 20 9 :5 9 :0 8g m t c o n n e c t i o n :c l o s e c o n t e n t l e n g t h :2 4 1 c o n t e n t t y p e :t e x t h t m l s e t c o o k i e :a s p s e s s i o n i d q q g q g u z q = c n f h k h f a p l o b k c h a m b l j n b g p :p a t h = c a c h e c o n t r o l :p r i v a t e s e s s i o n 检验程序 b o d yb g c o l o r = ”# f f f f f f ”t e x t = ”# 0 0 0 0 0 0 ”、 新链接未能创建s e s s i o n ,现在开始创建,刷新生效。 如果有另外一客户机b 截获t n 务器端所生成的s e t c o o k i e 的值,并且借 助这个截获的值向服务器发送如下伪造的h t t p 请求: 兰兰查兰堡圭竺查兰兰兰! ! ! ! 一 ! 叁兰! :! ! 鳖塑丝! ! ! ! :! 童丝垒堡坌堑垒苎塞全垒型丝耋! g e t c h e c k s e s s i o n a s ph t t p 1 1 a c c e p t :$ a c c e p t l a n g u a g e :z h c n c o o k i e :a s p s e s s o n i d q q g q g u z q = c n f i t k h f a p l o b k c h a m b l j n b g p l s e r a g e n t :m o z i1 l a 4 0 ( c o m p a t i b l e :m s i e50 :w i n d o w s9 8 :d i g e x t ) h o s t :1 0 1 1 1 7 5 1 3 1 c o n n e c t i o n :c l o s e 那么,服务器端会不加判别地认为b 已经处于了s e s s i o n 内部,于是如b 所愿地返回s e s s i o n 建立的信息: h t t p 1 12 0 0o k s e r v e r :m i c r o s o f t i i s 5 0 d a t e :s u n ,2 6m a y2 0 0 21 0 :5 8 :4 6g m t c o n n e c t i o n :c l o s e c o n t e n t l e n g t h :2 1 5 c o n t e n t t y p e :t e x t h t m l c a c h e c o n t r o l :p r i v a t e s e s s i o n 检验程序 m e t ah t t p e q u i v = ”c o n t e n t t y p e c o n t e n t = ”t e x t h t m l t r u e s e s s i o n 已经创建。 也就是说,服务器端并不判断c o o k i e 的来源,只根据c o o k i e 的值认为它 来自第一次为之生成这个c o o k i e 值的客户。 经测试, j s p 、p h p 等脚本解释引擎都有类似的弱点1 。 4 2 s e s s i o n 渗透入侵的原因分析 产生s e s s i o n 渗透入侵的原因从根本上来说是由于s e s s i o n 仅仅通过c o o k i e 的惟一值来确定发送该c o o k i e 的客户处于哪一个s e s s i o n 内,服务器端缺乏有 效的客户i p 地址验证手段,从而不能足够j 下确地区分客户端。 这种漏洞能对使用s e s s i o n 的身份验证状态机制产生比较大的危害。w e b 应用中常见的基于c o o k i e 的s e s s i o n 管理和身份验证的流程可以表示如下。其 中,s e s s i o n 管理部分只负责根据客户端发送的c o o k i e 值来把该客户的请求绑 浙江大学硕士研究生毕业论丈 基于c o o k i e 欺骗的s e s s i o n 渗透入侵分析及其安全模型研究 定到对应的s e s s i o n 缓存中,这一步由w e b 服务器自动完成。而w 曲身份验证 和标记的处理一般由w e b 应用程序完成。当处于本s e s s i o n 中的客户发来敏感 操作的请求的时候,只要检验该客户对应的身份验证的s e s s i o n 变量是否为 t r u e ,便能据此判断该客户以前是否通过了身份验证。 图4 1 中标记“问题所在”的、把c o o k i e 值绑定到对应的s e s s i o n 一步存 在着脆弱性漏洞。一般的w 曲服务器或者其脚本解释引擎只检验客户端发送的 c o o k i e 值,并不检验客户请求是否来自同一个i p 地址。如果有两个客户发送 的c o o k i e 值相同,那么他们的两个请求会被绑定到同一个s e s s i o n 上,从而给 恶意客户留下了可乘之机。 4 3 s e s s i o n 渗透入侵与t c p 序列号预测的连接劫持的异同 t c p 协议是基于连接的,这种连接也是一种客户端和服务器端的状态保持 信息,和h t t p 协议上s e s s i o n 的不同只在于后者所实现的层次更高一些。t c p 连接通过t c p 包中的3 2 位序列号( s e q u e n c e n u m b e r ) 与响应号 ( a c k n o w l e d g e m e n tn u m b e r ) 的值来确定收发的t c p 包究竟属于当前的哪一 个连接,这和w e b 服务器端通过分析客户所发送过来的c o o k i e 值来确定客户 属于哪一个s e s s i o n 的机制是异曲同工的。 t c p 连接的建立需要通过三次握手建立,首先连接的发起端发送一个具有 同步标志( s y n ) 的空t c p 包,包中携带发起端产生的序列号,接收端收到这 个s y n 包后,会产生同样一个带同步标志( s y n ) 和响应标志( a c k ) 的空 t c p 包,然后自己也生成一个序列号,同时把s y n 包的序列号加一作为响应 号,两个3 2 位号都写进该回应包中返还给连接发起端,发起端接收到该包后, 把接收端所生成的s y n 号加一作为新a c k 包的响应号再发送到接收端,这样 一个完整的t c p 连接才算建立”。 在一个t c p 连接的存活过程中,发送端发送的每一个数据包都需要接收方 响应,响应包中的响应号必须是该发送数据包的序列号,否则发送方会认为此 确认无效,会一直进行数据包重传。因为有多个数据包需要传递,因此序列号 不能一样,否则确认会发生混乱。t c p 规定序列号依次以一为单位递增。这与 s e s s i o n 管理中同一s e s s i o n 中的客户的c o o k i e 值保持不变有些不同。可以说, t c p 的序列号响应号等机制是动态变化的,但变化会互相确认:s e s s i o n 管理中 的c o o k i e 只是“连接”状态的标志,与数据传输无关。 要劫持一个t c p 连接,也就是说要使第三方发送来的t c p 包能够被发送 与接收的任何一端认为是本连接内的数据,除了应该伪造i p 层的i p 地址等信 息外,还必须伪造该连接的序列号,这个伪造有两点困难:第一、序列号与响 浙江大学硕士研究生毕业论更基于c o o k i e 欺骗的s e s s i o n 渗透入侵分析及其安全模型研究 应号本身在不断变化中,劫持方不容易精确预知序列号的值;第二、发送数据 需要响应,伪造的数据包即使成功地注入了需要劫持的t c p 连接,接收方也会 不加辨别地发送响应包,原来的发送端接收到这种“莫须有”的响应包后,很 可能会产生一些异常反应,如果是在连接建立初期三方握手的时候进行了s y n 包欺骗,被欺骗的发送端在接收到没有预期的s y n 包后,会主动发送一个r s t 标志的t c p 包通知接收端中断连接。因此在三方都正常响应的情况下,t c p 连接劫持是很难正常进行的。 图4 1基于c o o k i e 的s e s s i o n 管理和身份验证的流程及其弱点 从以上分析可以看出,t c p 序列号的发送棚自应式管理验证机制能够比较有 效地防止连接劫持和渗透,而s e s s i o n 的维持则没有这种功能:服务器接收到 浙江垄鲎硕士研究生毕业论丈基于c o o k i e 欺骗的s e s s i o n 渗透入侵分析及其安全模型研究 请求并对c o o k i e 进行处理的时候既不会发送确认该c o o k i e 的信息到客户端, 也不会判断该客户和以前发送过该c o o k i e 的客户地址是否一样,这样虽然处理 简单效率高,但也让其他人有了可乘之机:如果有恶意用户通过监听的方式截 获了c o o k i e 值,那么只需要伪造h t t p 头发送该截获的c o o k i e 值到客户端便 可实施s e s s i o n 渗透入侵。因为服务端的脚本解释引擎目前还没有判断发送同 一个c o o k i e 的客户是否来自不同的i p 的能力。因此,s e s s i o n 的渗透入侵要比 t c p 连接的劫持入侵要容易得多。 4 4 s e s s i o n 渗透安全模型概述 s e s s i o n 渗透安全模型是本文研究的内容的总括,包括s e s s i o n 渗透的入侵 原理分析、s e s s i o n1 d 的c o o k i e 生成算法预测以及s e s s i o n 入侵预防与检测等。 s e s s i o n 渗透入侵原理分析是安全模型中的首要组成部分,只有分析清楚了原理 才能针对这种入侵提出防范与检测的思路;c o o k i e 生成算法预测是原理分析部 分的延伸性工作,有助于对s e s s i o n1 d 采样预测入侵的防范,对w 曲引擎抗击 该类入侵预防机制的升级也有一定的参考作用;s e s s i o n 入侵预防与检测的重要 性则不言而喻,本文针对网络安全所进行的一切研究都是为了使网络信息传输 更加安全,因而入侵的预防检测才是s e s s i o n 安全模型的核心内容。 4 5 总结 本章提出了s e s s i o n 渗透入侵的安全模型概要,详细分析了s e s s i o n 渗透入 侵的原理,并使用a s p 引擎对进行了定性验证,指出了s e s s i o n 渗透的危害性, 这是s e s s i o n 渗透入侵安全模型研究中的首要组成部分。 竺兰查兰丝圭丝塞兰兰兰丝圭 ! 查圭! ! ! ! ! :竺塑竺! :里:! 兰篁全堡坌堑垒苎童全堡型竺塞! 第五章c o o k i e 生成算法及可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论