51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3537|回复: 2
打印 上一主题 下一主题

[原创] 记录一次PiKachu靶场实战之水平越权

[复制链接]
  • TA的每日心情
    擦汗
    昨天 08:46
  • 签到天数: 981 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-8-19 09:55:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    一、 越权
      越权,指攻击者绕过权限认证对功能或敏感内容进行非授权访问,例如:使用用户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

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-7-9 08:05 , Processed in 0.066243 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表