谁动了我的账户???(逻辑漏洞之越权访问)

越权漏洞实质上是绕过授权验证,授权在网络上的意思是指,对特定资源的读写权限,通俗来讲,就是你的权限能让你做什么事情。而验证则表示你是否真的可以对这些资源进行读写,这就好比朋友在网线想你借钱,转账时,你要求电话确认一下身份,这就是验证。

0x01:越权原理

  • 越权访问(broken access control)是web应用程序中一种常见的漏洞,该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过安全检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要是开发人员在对数据进行增,删,改,查时对客户端请求的数据过分相信而遗漏了权限的判定。

0x02:越权分类

在这里插入图片描述

  • 水平越权访问漏洞:水平越权访问是一种“基于数据的访问控制”设计缺陷引起的漏洞,由于服务器端在接收到请求数据进行操作时没有判断数据的所属人/所属部门而到导致的越权数据访问漏洞。
    在这里插入图片描述

  • 假设用户A和B属于同一角色,拥有相同的权限等级,他们能获取自己的私有数据(数据A和B),但如果系统只验证了能访问数据的角色,而没有对数据做细分或者校验,导致用户A能访问到用户B的数据,那么用户A访问数据B的这种行为就叫做水平越权访问。

  • 垂直越权访问漏洞,垂直越权是一种“基于URL的访问控制”设计缺陷引起的漏洞,又叫做权限提升攻击。
    在这里插入图片描述

  • 由于后台应用没有做权限控制,或仅仅在菜单,按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或者控制其他角色拥有的数据或者页面,达到权限提升的目的。

0x03:漏洞产生条件

  • 应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过安全检查,访问或者操作其他用户或者更高权限

0x04:检测工具

  • 越权访问漏洞属于逻辑漏洞,所以需要我们进行手动检测。

0x05:如何查找漏洞

  • 水平越权漏洞常出现在例如个人资料查询页面等地方,如从在一个userinfo.php?id=2的页面。该页面是用来查询用户的个人资料的,通过参数ID=2来确定查询的页面,而ID=2没有做任何验证,此时这里我们就可以通过修改ID的值,获取到其他用户的个人信息,可以修改其他用户的信息,第二天,当你自己登陆账号时,发现自己自己的资料性别从男变成了女,你是不是有很多的问号??
    在这里插入图片描述
  • 垂直越权漏洞是一个普通用户可以做到像管理员一样进行数据的增删改查等操作。一般后台管理页面只有管理用可以访问,如果存在普通用户可以访问,就存在垂直越权漏洞。

0x06:如何测试漏洞

  • pikachu靶场水平越权:通过用户登录个人信息页面,可以看到图中URL参数中存在username字段为当前用户,我们可以尝试修改该参数的值,尝试能否访问其他权限的用户,就是水平越权。

  • 我们通过修改username的值成功访问其他同等权限用户的个人信息页面,验证存在水平越权漏洞。

  • 推荐练习的在线靶场:https://www.mozhe.cn/bug/detail/eUM3SktudHdrUVh6eFloU0VERzB4Zz09bW96aGUmozhe

在这里插入图片描述

  • pikachu靶场垂直越权
    在这里插入图片描述

0x07:修复建议

  • 越权访问漏洞产生的主要原因是因为没有对用户的身份做判断和控制,防护这种漏洞是,可以使用session来控制,例如用户在登录成功后, 将用户名写入session中,当用户查看个人信息时,通过session中取出username,而不是从GET或者POST中取到username,那么此时的username就不会被篡改了
发布了5 篇原创文章 · 获赞 18 · 访问量 3102

猜你喜欢

转载自blog.csdn.net/qq_42073753/article/details/105430308