web安全总结(三)
三、因会话管理疏忽引发的安全漏洞
会话管理是用来管理用户状态的必备功能,但是如果在会话挂你上有所疏忽,就会导致用户的认证状态被窃取等后果。
1 会话劫持
会话劫持(Session Hijack)是指攻击者通过某种手段拿到用户的会话ID,并非法使用此会话ID伪装成用户,达到攻击的目的。
具备认证功能的Web应用,使用会话ID的会话管理机制,作为管理认证状态的主流方式。会话ID中记录客户端的Cookie等信息,服务器端将会话ID与认证状态进行一对一匹配管理。
可获得会话ID的方式:
非法生成推测
窃取或者XSS攻击盗取
会话固定攻击强行获取
2 会话固定攻击
对以窃取目标会话ID为主动攻击手段的会话劫持而言,会话固定攻击(Session Fixation)攻击会强制用户使用攻击者指定的会话ID,属于被动攻击。
2.1 会话固定攻击案例
例如某个网站,具有认证功能,会在认证前发布一个会话ID,若认证成功,就会在服务器内改变认证状态。
攻击者准备陷阱,先访问Web网站拿到会话ID。此刻,会话ID还是未认证的状态。
攻击者设置好强制用户使用该会话的陷阱,并等待用户拿着这个ID前去认证。一旦用户触发陷阱并完成认证,会话ID在服务器上的状态变成认证,就会被记录下来。
攻击者等用户触发陷阱后,再利用之前的会话ID访问网站。由于该会话ID已由用户认证,所以攻击者可以冒充真正的用户顺利访问了。
3 跨站点伪造请求
跨站点伪造请求(Cross-Site Request Forgeries,CSRF)攻击是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息等某些状态更新,属于被动攻击。
跨站点伪造有可能会造成以下影响。
利用已通过认证的用户权限更新信息等
利用已通过认证的用户权限购买商品
利用已通过认证的用户权限在留言板上发表评论
3.1 跨站点伪造请求攻击案例
例如:在某网站,有个留言板,只允许已认证用户留言。
那么,当已认证的用户A正常登陆后,浏览器中的Cookie就会持有一个会话ID。
然后攻击者设置好一个有陷阱的评论信息,比如插入易一张图片
<img src="http://example.com/msg?q=被攻击了啊">
当用户触发陷阱后,会在留言板上留下“被攻击了啊”的留言。
四、其他类型安全漏洞
1 密码破解
密码破解攻击(Password Cracking)即尝试算出密码,突破认证。不仅可攻击Web应用,还包括其他系统,如FTP、SSH等。
一般密码破解有两种方式
1.1 密码试错
-
又称暴力破解,指对所有秘钥集合构成的秘钥空间进行穷举,用所有可行的候选密码对目标进行试错,用以突破的一种攻击。穷举法
-
字典攻击是指利用事先收集好的候选密码,美剧字典中的密码,尝试认证的一种攻击方式。字典攻击
1.2 对已加密密码的破解
对已加密密码的破解(攻击者侵入系统,获得加密或散列处理的密码数据)
Web应用在保存时,一般不会直接以明文的方式保存,通过散列做散列处理或加salt的手段对要保存的密码本身加密,那即使攻击者使用某些手段窃取密码数据,如果想真正使用这些尼玛,那么必须先通过解码等手段,把加密处理的密码还原成明文形式。
从加密过的数据中到处明文通常有一下几种方法。
穷举法+字典攻击进行类推
针对密码使用散列函数进行加密处理,采用穷举法或字典攻击相同的收发,尝试用相同的散列函数加密候选密码,然后把计算出的散列值与目标散列值匹配,类推出密码。
彩虹表
彩虹表(Rainbow Table)是由明文密码及与之对应的散列值构成的一张数据库表,是一种通过实现制作庞大的彩虹表,可在穷举法+字典攻击等实际破解过程中缩短消耗时间的技巧。
获取秘钥
使用共享秘钥加密方式对密码数据进行加密处理的情况下,如果能通过某种手段拿到加密使用的秘钥,也就可以对密码数据解密了。
找到加密算法漏洞
利用加密算法本身的漏洞尝试解密。
2 点击劫持
点击劫持(Clickjacking)是指利用透明的按钮或链接做成陷阱,覆盖在Web页面上。然后诱导用户在不知情的情况下,点击链接访问内容的一种攻击手段,又称为界面伪装(UI Redressing)
例如:可以插入以下代码
<ifranme id="target" src="http://sns.example.com/leave" style="opecity:0;filter:alpha(opecity=0)"></iframe>
<button style="position:absolute;top:100;z-index:-1">PLAY</button>
当用户点击PLAY按钮的时候等同于点击SNS的注销按钮
3 DoS攻击
DoS攻击(Denial of Service attack)是一种让运行中的服务呈停止状态的攻击。有时也叫做服务停止攻击或者拒绝服务攻击。Dos攻击的对象不仅限于Web网站,还包括网络设备服务器等。
Dos攻击主要有两种方式:
集中利用访问请求造成资源过载,资源耗尽时,服务也就呈停止状态
通过攻击安全漏洞使服务停止
其中,集中利用访问请求的Dos攻击,单纯来讲就是发送大量的合法请求。服务器很难分辨什么是正常的请求,什么是攻击请求,因此很难做出防范。
多台计算机发起的DoS攻击称为DDoS攻击(Distributed Denial of Service attack)。DDoS攻击通常利用那些感染病毒的计算机作为攻击者的跳板。
4 后门程序
后门程序(Backdoor)是指开发设置的隐藏入口,可不按正常步骤使用受限功能。利用后门程序能够使用原本受限制的功能。
开发阶段作为Debug调用的后门程序
开发者为了自身利益植入的后门程序
攻击者通过某种方法设置的后门程序