1. 角色定义测试(OTG-IDENT-001)
测试方法:即纵向越权。
2.用户注册流程测试(OTG-IDENT-002)(括号内容为个人理解)
测试方法:
1)验证用户注册的身份要求与业务和安全要求一致
· 是否任何人都能注册访问?(是否需要内部人员或是特定证件才可注册)
·是否通过人工在配置访问权限前进行审查,或是如果达到标准后自动获取?(注册后是否有人工审核,还是系统自动审核通过)
·能否同一用户或身份多次注册?(是否可以同一用户名覆盖注册)
·用户能否注册不同的角色和权限?(是否可以自选角色和权限)
·需要什么身份证明的登记是成功?(需要什么身份认证,手机号?身份证号?手机验证码?人脸识别?)
·注册的身份实体验证了吗?(身份识别或人脸识别真实身份了没?)
2)验证注册过程
·身份信息是否易被伪造或造假?(身份信息是否有校验真假?)
·在注册工程中能否操控交换用户信息? (是否可篡改信息?)
3.账户配置过程测试(OTG-IDENT-003)(括号内容为个人理解)
测试方法:
1)决定什么角色能够配置用户并且什么类型的账户他们能够配置
·是否有任何验证来审查和授权配置请求?(是否有token或是cookie来判断是否有权限执行该操作)
·是否有任何验证来审查和授权撤销配置请求?(是否有token或是cookie来判断是否有权限执行该操作)
·是否管理员配置其他管理员或仅配置用户?(是否有多个配置管理员)
·管理员或普通用户配置账户权限是否过大?(业务问题,角色权限最小化)
·管理员或普通用户是否能撤销配置的账户权限?(业务问题,角色权限最小化)
·被撤销的用户文件或资源如何管理?他们删除了吗?是否访问转移?(撤销后,失效的用户如何管理,用户里的附件是销毁还是如何处理)
4.账户枚举和可猜测的用户账户测试(OTG-IDENT-004)(括号内容为个人理解)
测试方法:
1)黑盒测试
①HTTP响应消息(响应内容、响应长度、响应时间)
请求:有效用户名/错误密码 → 响应:密码不正确
请求:无效用户名/错误密码 → 响应:用户名不存在
②其他枚举法
<分析在登录页面收到的错误码>(有效用户名与无效用户名错误码的差别)
<分析URLs和URLs重定向>(有效用户名与无效用户名重定向的差别)
<URL探测>根据403 Forbidden 和404 Not Found来判断
例:http://www.test.com/account1 → 403 Forbidden
http://www.test.com/account2 → 404 Not Found
<分析网页标题>网页返回的标题信息(如:Invalid user/Invalid authentication)
<分析从恢复机制接收到的消息>(忘记密码、找回密码、找回账号功能里面的信息枚举)
<友好的404错误消息>(请求不存在用户时的响应(可能是200ok+图片))
③猜测用户(通过已知账号规则,推测可能存在的账号)
例:Ruser001、Ruser002;Freddie Mercury的账号是fmercury,则可推测Roger Taylor的账号是rtaylor。
2)灰盒测试
<测试验证错误消息>(同黑盒)
5.弱的或未实施的用户策略测试(OTG-IDENT-005)(其实意思跟004有点重复)
测试方法:
·查明账户命名规范(特定易猜解的命名规范)
·评估应用程序对有效和无效账户名的响应
·根据无效和有效账户名的响应不同来枚举有效的账户名
·使用账户名目录来枚举有效的账户名
6.身份管理测试工具
1)角色定义测试:最彻底最准确的方法是手工,而spidering tools工具可用每个角色轮流登录并爬取(要排除注销/退出登录链接);
2)用户注册流程测试:http代理抓包;
3)账户配置过程测试:最彻底最准确的方法是手工,http代理抓包;
4)账户枚举和可猜测的用户账户测试:WebScarab、curl、perl、Sun Java Access&Identity Manager users enumeration tool;
7.加固措施
1)配好权限;
2)注册流程实现相应凭证信息保护之安全需求的鉴别和验证;
3)应用程序返回一致的错误响应信息。
4)确保默认系统账户和测试账户在发布到生产前被删除;
*本文仅为《安全测试指南4.0》一书的个人学习笔记