3.2 Zero网站能获得管理员身份
缺陷标题:网站http://zero.webappsecurity.com/在地址栏加admin可进入管理员页面。
测试平台与浏览器:Windows 10+IE11或Chrome 45.0浏览器。
测试步骤:
1)打开网站:http://zero.webappsecurity.com/。
2)在地址栏后追加admin,按〈Enter〉键。
期望结果:浏览器提示无法找到网页,或者出现管理员登录页面。
实际结果:跳转到管理员页面,单击Users链接能看到系统中所有用户名与密码,结果如图3-1和图3-2所示。
图3-1 进入管理员界面
图3-2 查看到系统所有用户与密码
[攻击分析]:
这是典型的身份认证与会话管理方面的安全问题,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连接传输?