前几天,我们分享了:
《【渗透测试】渗透测试最强秘籍(Part 2:配置和部署)》
今天继续该系列的第三篇文章——身份管理。
分享纲要:
1. 测试角色定义
2.测试用户注册过程
测试帐户配置过程
测试帐户枚举和可猜测的用户帐户
1. 测试角色定义
测试目标
验证应用程序中定义的系统角色是否被充分定义,系统和业务角色是否被隔离以管理对系统功能和信息的适当访问
如何测试
无论是否有系统开发人员或管理员的帮助,都可以开发角色与权限矩阵。该矩阵将显示并枚举可供应的所有角色,并探索允许应用于对象的权限(包括任何约束)。
示例
在现实世界中,我有很多WordPress的网站,WordPress的角色定义的例子可以在下面显示的链接中找到
https://codex.wordpress.org/Roles_and_Capabilities
工具
- 可以通过手动测试来解决此问题
- 使用蜘蛛抓取工具(Burp Suite) – 依次登录每个角色并抓取应用程序(不要忘记从蜘蛛中排除注销按钮/链接)。
- 使用管理员帐户,使用蜘蛛我们得到以下结果,并将此状态保存到文件。
- 使用普通的用户帐户,我们也使用蜘蛛选项并获得以下结果
- 最后,使用比较函数来比较我们得到的两个站点地图
2.测试用户注册过程
测试目标
- 验证用户注册的身份要求是否符合业务和安全要求
- 验证注册过程
如何测试
测试列表
- 确定谁可以注册访问(任何人)?
- 注册是否需要人工审查,或者是当满足标准后自动授权。
- 同一个人是否可以多次注册?
- 用户可以注册不同的角色或权限吗?
- 注册成功需要什么样的身份证明?
- 是否验证了注册身份?
- 身份信息是否容易伪造或伪造?
- 在注册过程中可以交换身份信息吗?
工具
- 手动测试
- HTTP proxy (Burp Suite, ZAP)
示例
在下面的wordpress示例中,唯一标识要求是注册人可访问的电子邮件地址。
在下面的Google示例中,身份识别要求包括姓名,出生日期,国家,手机号码以及可以验证的两个(电子邮件和手机号码)。
测试帐户配置过程
测试目标
验证哪个帐户可以配置其他帐户以及哪种类型
如何测试
测试列表
- 配置请求是否有任何验证,审核和授权?
- 是否有任何验证,审核和批准取消配置请求?
- 管理员可以配置其他管理员或仅用户吗?
- 管理员或其他用户可以提供权限大于自己的帐户吗?
- 管理员或用户是否可以自行解除配置?
- 解除配置用户拥有的文件或资源如何管理? 他们是否被删除或者转移?
示例
在WordPress中,只需要用户名和电子邮件地址来配置用户,如下所示
取消配置用户需要管理员选择要取消配置的用户,从下拉菜单中选择删除并应用此操作。 然后向管理员提供一个对话框,询问如何处理取消配置用户的文章(删除或转移它们)。
测试帐户枚举和可猜测的用户帐户
黑盒测试
在这种情况下,测试人员对特定应用程序,用户名,应用程序逻辑,登录页面中的错误消息或密码恢复设施一无所知。 如果应用程序易受攻击,测试人员会收到一条响应消息,直接或间接地显示一些用于枚举用户的信息。
HTTP响应消息
测试有效用户名和错误密码
测试不存在的用户名
另一种枚举用户的方式
- 分析登录页面收到的错误代码
- 分析URL和URL重定向
分析从另一个认证功能(恢复,复位通过,寄存器)收到的消息
- 重置密码功能示例
猜测用户
在某些情况下,用户ID是使用特定的管理或公司政策创建的,例如:
工具:
- 手动测试
- 自动化工具,如:WordPress的枚举用户名工具wpscan
原文链接
https://packetstormsecurity.com/files/download/146830/web-application-security-testing.pdf