1.4 实验#4:zero网站能获得管理员身份
缺陷标题 zero网站在地址栏追加admin可进入管理员页面。
测试平台与浏览器 Windows 10+IE 11或Chrome 45.0。
测试步骤
(1)打开zero网站http://zero.webappsecurity.com/。
(2)在地址栏删除index.html,然后追加admin,按Enter键。
期望结果 浏览器提示无法找到网页,或者出现管理员登录页面。
实际结果 跳转到管理员页面,并且能看到系统中所有用户名与密码,结果如图1-7和图1-8所示。
图1-7 进入管理员页面
图1-8 查看到系统中所有用户名与密码
专家点评
这是典型的身份认证与会话管理方面的安全问题。2017年,失效的身份认证排在全球Web安全第二位。身份认证最常见的是登录功能,往往是提交用户名和密码,在安全性要求更高的情况下,有防止密码暴力破解的验证码、基于客户端的证书、物理口令卡等。
HTTP本身是无状态的,利用会话管理机制来实现连接识别。身份认证的结果往往是获得一个令牌,通常放在Cookie中,之后根据这个授权的令牌对用户的身份进行识别,而不需要每次都登录。
用户身份认证和会话管理是一个应用程序中最关键的过程,有缺陷的设计会严重破坏这个过程。在开发Web应用程序时,开发人员往往只关注Web应用程序所需的功能。由于这个原因,开发人员通常会建立自定义的身份认证和会话管理方案。这些自定义的方案往往在退出、密码管理、超时、记住我、账户更新等方面存在漏洞。因为每个系统实现都不同,业务定义也不同,所以要找出这些漏洞有时会很困难。
其中最需要保护的数据是认证凭证(credentials)和会话ID。验证程序是否存在失效的认证和会话管理,通常从以下几点考虑。
(1)当存储认证凭证时,是否总是使用hashing或加密保护。
(2)认证凭证是否可猜测,或者能够通过薄弱的账户管理功能(例如账户创建、密码修改、密码恢复、弱会话ID)重写。
(3)会话ID是否暴露在URL里(例如URL重写)。
(4)会话ID是否容易受到会话固定(session fixation)的攻击。
(5)会话ID会不会超时,用户能否退出。
(6)成功注册后,会话ID会不会轮转。
(7)密码、会话ID和其他认证凭据是否只通过TLS连接传输。