会话安全(Session Security)
会话安全(Session Security)
一、为什么需要会话
一般在TCP三次握手就创建一个会话,在会话中可以传递信息,等TCP关闭连接就关闭会话。且HTTP协议是基于TCP协议的,所以HTTP会话也会关闭会话,而在HTTP1.1中,一个连接就只能处理一个请求,所以在需要权限身份认证的时候就需要有一种身份标识。
二、有关会话的安全隐患
1、信息泄露
Cookie的主要功能是实现用户个人信息的索引值记录,服务器中对应索引值的Session中存储了大量用户的信息,如身份id,浏览次数,手机号,等一些隐私信息,它最根本的用途是帮助Web站点保存有关访问者的信息,可是一旦泄露了Cookie,除了会产生信息泄露,攻击者也可以通过用户身份登录,这是非常大的隐患。
2、越权操作
在cookie的身份认证中,极容易造成越权,且大多数越权修改参数都是在Cookie这个字段进行修改,大多数cookie中会有用户的身份标识ID,如果未合理的处理或者多重认证,很容易造成越权。
三、Session劫持
Session劫持就是自己的PHPSESSID被攻击者以某种方式获取,然后在会话的有效期内,利用被攻击者的身份登录网站,来达到身份劫持,伪装成合法用户。Session成功劫持一般需要几个步骤,
1、用户访问的平台是使用session来进行身份认证。
2、用户已经使用账号密码登录该平台,随即该用户会得到一个sessionid。
3、通过劫持获取到sessionid,并且在sessionid的有效期内使用(未注销前)
四、Session劫持的方法
如何获得sessionid是关键
1、会话爆破:
尝试各种Session ID,直到破解为止;
PHPSESSID生成规则是根据hash_func散列来生成的,相关的参数有:
客户端IP
当前时间(秒)
当前时间(微秒)
PHP自带的随机数生产器
2、会话劫持:
会话劫持(Session hijacking),是一种通过获取用户Session ID后,使用该Session ID登录目标账号的攻击方法,此时攻击者实际上是使用了目标账户的有效Session。
利用xss反弹到的cookie,来伪造身份登录。即可利用管理员的session来登录,前提是
必须在会话有效期内使用。或者利用任意文件读取,XXE漏洞等其他漏洞来进行读取文
件来获取sessionid,服务端保存的都是在有效期内的session。
3、会话预测:
如果Session ID使用非随机的方式产生,那么就有可能计算出来;
预测这种方式,也就是攻击者需要猜测出系统中使用的有效的session标识符,有点类似
暴力破解。
4、会话固定:
会话固定(Session fixation)是一种诱骗受害者使用攻击者指定的会话标识(SessionID)的攻击手段。这是攻击者获取合法会话标识的最简单的方法。让合法用户使用黑客预先设置的sessionID进行登录,从而是Web不再进行生成新的sessionID,从而导致黑客设置的sessionId变成了合法桥梁。
让合法用户使用黑客预先设置的sessionID进行登录,从而是Web不再进行生成新的sessionID(运气好有可能)