记录一次PiKachu靶场实战之水平越权

发表于:2021-8-17 09:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈明坤    来源:51Testing软件测试网原创

  一、 越权
  越权,指攻击者绕过权限认证对功能或敏感内容进行非授权访问,例如:使用用户A的权限去操作用户B的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞的产生源于系统对用户提交信息缺少必要的权限校验,导致其他用户的信息或用户数据被非法篡改或查询。该漏洞导致的直接结果是信息泄露,严重程度取决于信息的敏感程度。
  一般越权漏洞容易出现在权限页面(如查询类操作、账号修改、转账交易)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,服务端需对请求报文中的身份校验参数进行合法性校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。

  二、水平越权
  水平越权指的是某用户通过越权操作同类型别的用户的账号内容。
  用户A和用户B属于同一级别用户,但各自不能操作对方个人信息。用户A如果越权操作用户B个人信息的情况称为水平越权操作,Pikachu靶场有两个用户,分别为“lucy”和“lili”,密码都为123456.

  以用户“lucy ”身份登陆,可以看到地址栏里“url为op1_mem.php?username=lucy&submit=点击查看个人信息”:

  退出“lucy”,登录“lili”用户,此时可以看到地址只有username不同:

  在”lili”账号下开启抓包:

  在抓包工具里将抓到的报文中的“lili”修改为“lucy”:

  点击发送,可以在以“lili”权限下看到“lucy”的具体信息:

  三、原因分析:
  只判断是否登陆,没有用session校验。

  查看function.php中的check_op_login函数,只是判断了['op']['username']和['op']['password']是否被定义:

  查看登录页面的代码,发现所有用户名登录后都会定义['op']['username']和['op']['password']。

  因为在查看信息的界面,只判断了是否登录,并没有判断是哪个用户。

  四、优化建议
  在重要操作(如转账交易、查询类操作、账号修改)时,系统应对用户权限进行校验,防止水平越权:
  1.用户级操作,用户身份信息通过session中获取,避免通过客户端上送的用户信息被恶意篡改,导致越权执行他人权限操作;
  2.如果客户端必须上送操作对象参数,系统应在服务器端对用户输入数据的合法性和有效性进行校验,判断请求的账号是否为登陆客户本人账户,防止水平越权(如用户A通过修改ID越权对用户B的账号进行操作);
  3.在校验过程中,不要给页面返回账户相关信息,整个校验工作流程都在服务端完成,只传递给页面成功或失败的状态结果。

      版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号