身份管理测试包含:测试角色定义、测试用户注册过程、测试账号配置过程、测试账号类型和用户账号可猜测性、测试弱账户名。
一、测试角色定义
概述:系统中通常都会定义多个系统角色,用来管理用户和对系统资源的使用。
测试目标:验证系统是否定义了不同的系统角色,并且各角色间是相互分离的。角色具有所必须的权限来使用系统。
测试方法:梳理系统的用户角色和所需的权限,并在系统中验证用户角色是否具有相应的权限,或者有不应该有的权限。
例如:梳理系统的用户角色和所需的权限:

例如:登陆只有管理员才能进入的页面,然后再用普通角色登陆,访问那个管理员才能登陆的页面,看看是否可以访问成功。
二、测试用户注册过程
概述:有些系统会自动注册用户,有的需要手动注册用户,以具体情况而定。
测试目标:确认用户注册过程满足业务需要且符合安全需要。
测试方法:
1、是否任意的人都可以注册?
2、注册是否有人工检查后分配权限,还是满足一定条件后自动给予用户权限?
3、同一个人或者身份是否能注册多次?
4、用户是否能注册不同的角色或者权限?
5、用户注册成功需要哪些身份证明或要件?
6、注册的用户身份是否经过核实?
7、用户注册的身份信息是否容易伪造?
8、用户在注册过程中变更信息时是否会被非法修改?
三、测试账号配置过程
概述:对账户进行配置,给攻击者提供了一个非法获得账户的机会。
测试目标:确认哪些账号和账号类型将会提供给用户,而用户应该获得哪些账号和账号类型。
测试方法:
1、对于配置的请求是否有验证和认证?
2、对于取消配置的请求是否有验证和认证??
3、管理员是否能配置其他管理员的权限还是只能配置用户的权限?
4、管理员或者其他用户是否能配置超过其应有的权限?
5、管理员或者其他用户是否能取消自己的权限?
6、当账号的权限被取消后,关联的文件或者资源如何处理?
四、测试账号类型和用户账号可猜测性
概述:系统的认证机制,通常会提示用户账号是否存在。
测试目标:用户账号是否容易被收集。
测试方法:
1、http响应信息:
提交正确的用户名密码,记录http响应信息A。
提交正确的用户名和错误的密码,应该提示认证失败,如果提示密码错误则不符合预期。记录http响应信息B。
提交不存在的用户名,应提示认证失败,如果提示用户不存在,则不符合预期。记录http响应信息C。
通常,不同错误类型,应该有同样的错误提示,并且http响应信息B和C应该一致。这样才不会泄露具体的错误类型。
2、分析错误码:一些应用对不同的错误类型会有不同的错误码。
3、分析URL:URL中包含了错误信息,例如:

4、URI 的探查:对于不同URI访问,服务器是否有不同的返回,例如:

5、分析web页的title,有些错误信息或错误码显示在web页的title,例如:

6、分析恢复策略的信息,例如找回密码时,输入用户名的提示:

7、分析用户名或者用户ID:有一些用户名或者ID是有规律的,例如:CN000000100,CN000000101,CN000000102,CN000000103
五、测试弱账户名
概述:账户名通常都是高度结构化的,导致有效的账户名容易被猜测。
测试目标:确认账户名是否有一致的规律。
测试方法:
1、确认账户名的结构。
2、评估提交合法账户和非法账户的响应是否合适。
3、使用合法和非法账户的响应是否可以枚举出其他合法账户。
4、使用账户名字典是否可以枚举出合法账户。

网友评论