Over Permission(越权漏洞)
漏洞产生原因:由于没有对用户权限进行严格的判断,导致低权限的账号(比如普通用户)可以去完成高权限账号(比如超级管理员)范围内的操作。
水平越权:A用户和B用户属于同一级别用户,但各自不能操作对方个人信息,A用户如果越权操作B用户的个人信息的情况称为平行越权操作。
垂直越权:A用户权限高于B用户,B用户越权操作A用户的权限的情况称为垂直越权。
越权漏洞属于逻辑漏洞,是由于权限校验的逻辑不够严谨导致。但很难通过扫描工具发现,往往需要手动进行测试。
1.水平越权
-
随意登录一个用户,比如lucy
点击查看个人信息,获得lucy的个人信息
发现网页此时发送了一个GET请求,username参数为lucy。 -
修改username参数,改为数据库中存在的任意一个用户名,如lili
发现此时页面将lili的个人信息也打印出来了。
此时是在lucy的登录态下,却打印出了lili的信息,因此这是一个水平越权漏洞。
原因:后台没有判断username参数是否为当前登录态下的用户。
2.垂直越权
-
首先登录一下超级管理员admin
-
在超级管理员登录态下添加一个用户。
-
用burpsuite对这个添加请求进行抓包
-
退出admin登录态
此时进行重放攻击,发现并没有继续添加一个abc用户,页面重定向为登录页面,提示我们需要登录admin之后才可以进行添加用户。
-
登录普通用户pikachu
发现该用户态下是无法进行添加用户的 -
用burpsuite对pikachu登录请求进行抓包。
获取pikachu登录态下的cookie值。Cookie: PHPSESSID=ct3684ba0vghpmslqq411jur95
-
将pikachu登录态下的cookie值替换之前超级用户admin的添加请求数据包中的cookie值。
因为此时pikachu用户处于登录态,我们尝试是否可以在普通用户登录态下添加用户。
发现添加成功,因此该网站存在垂直越权漏洞。
原因:后台写添加操作代码时,仅仅判断了是否是在登录态下进行的操作,而没有判断用户操作级别
难点:需要抓取超级管理员的操作数据包
总结
写代码时要注意某操作的权限控制和用户级别。