【OWASP TOP 10】TOP2-失效的身份认证和会话管理 详解与进攻实验

title

描述

用户身份认证和会话管理是一个应用程序中最关键的过程,有缺陷的设计会严重破坏这个过程。在开发Web应用程序时,开发人员往往只关注Web应用程序所需的功能。由于这个原因,开发人员通常会建立自定义的认证和会话管理方案。但要正确实现这些方案却很难,结果这些自定义的方案往往在如下方面存在漏洞:退出、密码管理、超时、记住我、秘密问题、账户更新等等。因为每一个实现都不同,要找出这些漏洞有时会很困难。

危害

这些漏洞可能会导致部分甚至全部账户收到攻击,一旦成功,攻击者能够执行受害用户的任何操作。因此特权账户是常见的攻击对象。

简单漏洞例子

一、应用程序超时设置不当。用户使用公共计算机访问网站。离开时,该用户没有点击退出,而是直接关闭浏览器。攻击者在一个小时后能使用相同浏览器通过身份认证。

二、机票预订应用程序支持URL重写,把会话ID放在URL里:

1
;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Hawaii

该网站一个经过认证的用户希望让他朋友知道这个机票打折信息。他将上面链接通过邮件发给他朋友们,并不知道自己已经泄漏了自己的会话ID。当他的朋友们使用上面的链接时,他们将会使用他的会话和信用卡。

三、内部或外部攻击者进入系统的密码数据库. 存储在数据库中的用户密码没有被加密, 所有用户的密码都被攻击者获得。

进攻实验

1


首先打开目标网站,点击登陆普通会员
2


查看当前cookie,然后点击推出,点击登陆管理员
3


观察cookie构造
7


我们猜测这三个Cookie值中有一个控制着是否为管理员,重新登录普通会员,打开Firebug选中要修改的Cookie,右键编辑,在内容中修改成对应管理员的Cookie,比如test改为admin,刷新页面查看是否变为了管理员,如果没有变为管理员,继续修改。
修改status时发现用户身份变为了管理员,因此判断status等于1时是管理员,等于2时是普通会员。
重新登录普通会员,直接修改status为1,成功变身管理员。
8


综上所述:我们可以得出结论,修改客户端的Cookie,服务端读取的Cookie值也会出现变化,因此可能会导致Cookie伪造。


注册登录目标网站www.test.com
10


修改自己的Cookie中的status为1,刷新网站,发现页面虽然显示身份为管理员但是Cookie还是变为了原先用户的,而且没有权限访问用户管理页面。
9


选中id右键修改为1,刷新一次页面,发现Cookie信息变为admin的,再刷新一次页面,页面变化为管理员admin的信息。
5


点击用户管理,进入后台,验证用户界面。

6


防御方案

1.给Cookie加密

2.加强后台验证

3.在Cookie中加入唯一的身份标识,比如加密后的密码

4.在需要验证权限的地方更换Cookie,使用相对更安全的Session


参考来源:

  • OWASP Top 10-2013 on Insecure Dir Object References
  • i春秋