热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   新闻动态 -   正文

会话劫持原理

知了堂姐
2024-07-08 17:22:16
0

会话劫持原理?

在现实生活中,比如你去市场买菜,在交完钱后你要求先去干一些别的事情,稍 候再来拿菜;如果这个时候某个陌生人要求把菜拿走,卖菜的人会把菜给陌生人 吗?!当然,这只是一个比喻,但这恰恰就是会话劫持的喻意。所谓会话,就是 两台主机之间的一次通讯。例如你 Telnet 到某台主机,这就是一次 Telnet 会话; 你浏览某个网站,这就是一次 HTTP 会话。而会话劫持(Session Hijack),就 是结合了嗅探以及欺骗技术在内的攻击手段。例如,在一次正常的会话过程当中, 攻击者作为第三方参与到其中,他可以在正常数据包中插入恶意数据,也可以在 双方的会话当中进行简听,甚至可以是代替某一方主机接管会话。我们可以把会 话劫持攻击分为两种类型:

1)中间人攻击(Man In The Middle,简称 MITM),

2)注射式攻击(Injection);并且还可以把会话劫持攻击分为两种形式:


步骤


     目标用户需要先登录站点

     登录成功后,该用户会得到站点提供的一个会话标识SessionID

     攻击者通过某种攻击手段捕获Session ID

     攻击者通过捕获到的Session ID访问站点即可获得目标用户合法会话

获取cookie

了解cookie接口:找到Session ID位置进行破解

    暴力破解:尝试各种Session ID,直到破解为止

    预测:如果Session ID使用非随机的方式产生,那么就有可能计算出来

    窃取:XSS攻击、使用网络嗅探(中间人攻击)等方法获得


XSS攻击劫持cookie


中间人攻击劫持cookie


危害


    冒充其他人做事情:被冒充的人的权限越大,可以做的事情越多,比如:更改用户信息、进行转账、购买物品

    对网站的影响:因为投诉等原因,会出现信誉下降、客户认为网站本身不可信


cookie机制


    在动态网页语言中,某个用户(浏览器)访问(登陆)后,可以一直记录状态。这种状态浏览器使用Cookie来保存。

    服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。

    浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。

    cookie的内容主要包括:名字,值,过期时间,路径和域。

    如果不设置过期时间,则表示这个cookie的生命期为浏览器会话期间


session机制


session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息


当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 -称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含sessionid,则为此客户端创建一个session并且生成一个与此session相关联的session id,sessionid的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。


保存这个sessionid的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。


由于cookie可以被人为的禁止,必须有其他机制以便在cookie被禁止时仍然能够把sessionid传递回服务器。经常被使用的一种技术叫做URL重写,就是把sessionid直接附加在URL路径的后面,附加方式也有两种,一种是作为URL路径的附加信息,表现形式为:

      http://...../xxx;jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764

      http://...../xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764


cookie属性


(1)HTTP-Only


服务端发送cookie的时候,可以设置HTTP-Only

 Set-Cookie: SESSIONID=abc123; expires=Wednesday, 17-Nov-99 23:12:40 GMT; HttpOnly


这个参数的优点是不会被js获取

尝试打开有HTTP-Only cookie设置的网站


查看cookie


一般,session-id是用这个来判断

    即使有xss漏洞,也获取不了session-id相关的cookie值


(2)secure


设置cookie的某个值secure为True时:

此cookie只有在HTTPS协议中才会进行传输


HTTP协议传输时,是不传输此协议的。


防御方法


    XSS漏洞引起的会话劫持:可以使用http-only来防止js获取cookie中的sessionid信息

    会话劫持引起的会话劫持:可以使用HTTP-SSL(https)+secure来保证sessionid不被获取

大家都在看

如何开发鸿蒙app?鸿蒙应用怎么开发

2024-07-08 浏览次数:0

知了堂项目经理组织学员参加华为开发者大会

2024-07-08 浏览次数:0

西北工业大学遭网络攻击,网络安全问题刻不容缓

2024-07-08 浏览次数:0

Web前端培训的费用是多少?前端培训学什么东西?

2024-07-08 浏览次数:0

网络安全培训机构哪家好?网络安全课程节奏很重要

2024-07-08 浏览次数:0

Spring Bean生命周期(面试问题)

2024-07-08 浏览次数:0
最新资讯