0x00:何为越权
在我看来,越权漏洞的成因主要是因为开发过程中在对数据进行增、删、改、查时对客户端请求的数据没有进行严格的权限判定,导致单个用户可以操作其他用户的一些操作,叫做越权。
0x01:越权分类
越权分为两种:一种为水平越权,一种为垂直越权。
0x02:漏洞举例
水平越权:指攻击者尝试访问与他拥有相同权限的用户资源。例如有一个写作网站,作者(A)登录后可以对自己的文章进行发布、查看、删除等操作。当删除一篇文章时,发送的请求 URL 如下:
http://www.xxxx.com/article.php?action=delete&id=1
action 参数是要执行的动作 delete 删除,id 为文章 id 号。当 A 用户想恶意攻击时,将 id 号改为了 2,发送了如下 URL:
http://www.xxxx.com/article.php?action=delete&id=2
因为 id 为 2 的文章不属于 A 用户,A 将 id 改为 2 删除成功,此时程序没有对请求进行相关的权限判断,导致任何人可操作,则为水平越权。
垂直越权:垂直越权可以分为两种,分别是向上越权和向下越权。向上指一个低级别攻击者尝试访问高级别用户的资源,向下指一个高级别用户尝试访问低级别用户的资源。例如一个用户的个人信息管理页是 user.php,而管理员管理所有用户信息的页面是 manageuser.php, 但管理页面没有相关的权限验证,导致任何人输入管理页面地址都可以访问,则导致了垂直越权中的向上越权。向下越权相反。
0x03:产生条件
通常情况下,一个 Web 程序功能流程是登录 - 提交请求 - 验证权限 - 数据库查询 - 返回结果。如果验证权限不足,便会导致越权。常见的程序都会认为通过登录后即可验证用户的身份,从而不会做下一步验证ÿ