安全测试 : 之身份管理测试
身份管理测试包含:测试角色定义、测试用户注册过程、测试账号配置过程、测试账号类型和用户账号可猜测性、测试弱账户名。
一、测试角色定义
概述:系统中通常都会定义多个系统角色,用来管理用户和对系统资源的使用。
测试目标:验证系统是否定义了不同的系统角色,并且各角色间是相互分离的。角色具有所必须的权限来使用系统。
测试方法:梳理系统的用户角色和所需的权限,并在系统中验证用户角色是否具有相应的权限,或者有不应该有的权限。
例如:梳理系统的用户角色和所需的权限:
梳理权限
例如:登陆只有管理员才能进入的页面,然后再用普通角色登陆,访问那个管理员才能登陆的页面,看看是否可以访问成功。
二、测试用户注册过程
概述:有些系统会自动注册用户,有的需要手动注册用户,以具体情况而定。
测试目标:确认用户注册过程满足业务需要且符合安全需要。
测试方法:
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 中包含了错误信息,例如:
![](http://upload-images.jianshu.io/upload_images/9876532-60dd532bed8b44fa.png)
url
4、URI 的探查:对于不同 URI 访问,服务器是否有不同的返回,例如:
URI
5、分析 web 页的 title,有些错误信息或错误码显示在 web 页的 title,例如:
title
6、分析恢复策略的信息,例如找回密码时,输入用户名的提示:
提示
7、分析用户名或者用户 ID:有一些用户名或者 ID 是有规律的,例如:CN000000100,CN000000101,CN000000102,CN000000103
五、测试弱账户名
概述:账户名通常都是高度结构化的,导致有效的账户名容易被猜测。
测试目标:确认账户名是否有一致的规律。
测试方法:
1、确认账户名的结构。
2、评估提交合法账户和非法账户的响应是否合适。
3、使用合法和非法账户的响应是否可以枚举出其他合法账户。
4、使用账户名字典是否可以枚举出合法账户。
教程视频在公众号内回复 M 获取资料目录,
回复对应关键词可以获取对应的内容, 如:
"测试工具"
"PC 自动化"
"接口测试"
"QTP 视频"
"资源整理"
"web 测试"
"性能测试"
系统自动下发资源地址和密码,
也欢迎加入测试内部技术共享群:
QQ 群: 330374464
微信: mcfmcfmcf