6.2 越权测试
6.2.1 测试原理和方法
越权一般分为水平越权和垂直越权,水平越权是指相同权限的不同用户可以互相访
问;垂直越权是指使用权限低的用户可以访问权限较高的用户。
水平越权测试方法主要是看能否通过 A 用户的操作影响 B 用户。
垂直越权测试方法的基本思路是低权限用户越权高权限用户的功能,比如普通用户可
使用管理员功能。
越权分类如图 6-4 所示。
图 6-4
6.2.2 测试过程
6.2.2.1 水平越权测试
正常更改或查看 A 账户信息,抓包或者更改账户身份 ID,成功查看同权限其他账户业
务信息,如图 6-5 所示。
以某网站后台为例,在核查任务编辑模块时,保存用户任务 ID,如图 6-6 所示。
图 6-5 水平权限测试流程图
图 6-6 任务编辑模块
步骤一:保存任务并抓包,如图 6-7 所示。
图 6-7 业务抓包
步骤二:可以看到请求中有 taskHeader.taskId 这个参数,也许这个参数是提交者的业
务 ID,如果可以更改,能看到别的提交者(如果是同一权限的用户),则这里存在水平
越权的漏洞,现在利用爆破的方式自动更改 taskHeader.taskId,如图 6-8 所示。
图 6-8 更改业务 ID
可以看到爆破自动更改 taskHeader.taskId 的值,响应状态为 200,且响应长度也不一
样,查看响应包成功查看其他用户保存的核查任务,如图 6-9 所示。
图 6-9 更改 ID 后查看同权限用户的业务信息
6.2.2.2 垂直越权测试
登录普通账户 A,抓包或直接更改账户 A 身份 ID 为高权限 C 账户的 ID,成功查看高权
限账户 C 的业务信息,如图 6-10 所示。
图 6-10 垂直越权测试流程图
以某系统后台为例。
步骤一:通过手工猜解得出一个账号密码均为 111 的用户,成功登录,如图 6-11 所
示。
图 6-11 成功登录系统
步骤二:通过查看得知超级管理员账号为 admin。找到“修改密码”这一功能,将密码
改为 789,单击“确定修改密码”后进行抓包,抓包后可以看到两个参数:uid 和 pwd,分别
表示用户名和密码。将参数 uid 的值由 111 改为 admin,码保持 789 不变,如图 6-12 所示。
图 6-12 更改数据包
步骤三:提交修改的数据包,提示密码修改成功,此时 admin 账号的密码已被改成
789,使用 admin 账号登录成功,如图 6-13 所示。
图 6-13 高权限 admin 账户登录成功
6.2.3 修复建议
服务端需校验身份唯一性,自己的身份只能查看、修改、删除、添加自己的信息。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论