【渗透测试】渗透测试最强秘籍(Part 3:身份管理)

前几天,我们分享了:

《【渗透测试】渗透测试最强秘籍(Part 1:信息收集)》

《【渗透测试】渗透测试最强秘籍(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

Spread the word. Share this post!

Meet The Author

Leave Comment