水平越权与垂直越权

这篇具有很好参考价值的文章主要介绍了水平越权与垂直越权。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

越权漏洞简介

越权,顾名思义,就是超出了权限或权力范围。多数WEB应用都具备权限划分和控制,但是如果权限控制功能设计存在缺陷,那么攻击者就可以通过这些缺陷来访问未经授权的功能或数据,这就是我们通常说的越权漏洞。攻击者越权后就可以进行一些操作,例如查看敏感信息、进行一些增删改查的
操作等等。
越权漏洞是一种很常见的逻辑安全漏洞。是由于服务器端对客户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定,导致修改相关参数就可以拥有了其他账户的增、删、查、改功能,从而导致越权漏洞。

水平越权

概念

水平越权指的是攻击者尝试访问与他拥有相同权限的用户的资源,怎么理解呢?比如某系统中有个人资料这个功能,A账号和B账号都可以访问这个功能,但是A账号的个人信息和B账号的个人信息不同,可以理解为A账号和B账号个人资料这个功能上具备水平权限的划分。此时, A账号通过攻击手段访问了B账号的个人资料,这就是水平越权漏洞。

说人话就是平民之间的明争暗斗。

常见场景

1、基于用户身份的ID
在使用某个功能时通过用户提交的身份ID (用户ID、账号、手机号、证件号等用户唯一标识)来访问或操作对应的数据。
2、基于对象ID
在使用某个功能时通过用户提交的对象ID (如订单号、记录号)来访问或操作对应的数据。
3、基于文件名
在使用某个功能时通过文件名直接访问文件,最常见于用户上传文件的场景。

实例

实验环境为 pikachu 靶场 over permission 模块水平越权

我们已事先知道三个账号:
lucy/123456
lili/123456
kobe/123456

怎么实现水平越权呢?首先我们随便登录一个账号,比如 lucy,同时抓包,发现显示了 username & password
水平越权与垂直越权
放包肯定是能登陆上去的。那我们把 username 改成 kobe 或者 lili 后放包呢?
水平越权与垂直越权
放包发现成功登陆了 kobe 的账户
水平越权与垂直越权
这就成功实现了水平越权。想想看,你作为一个平民玩家,随便改了个 id 就掌握了其他平民(甚至可能是氪金大佬)的信息,岂不是…

我们做点更坏的事,能不能顺带把 kobe 的密码也一块改了呢?
水平越权与垂直越权
放包,发现登录失败。刷新一下,用设置的密码登录,还是失败,说明此处是不能通过水平越权更改其他用户的信息的。
水平越权与垂直越权

垂直越权

概念

垂直越权是不同级别之间或不同角色之间的越权,垂直越权还可以分为向上越权和向下越权。向上越权指的是一个低级别用户尝试访问高级别用户的资源,比如说某个系统分为普通用户和管理员用户,管理员有系统管理功能,而普通用户没有,那我们就可以理解成管理功能具备垂直权限划分,如果普
通用户能利用某种攻击手段访问到管理功能,那我们就称之为向上越权(就是以下犯上)。向下越权是一个高级别用户访问低级别用户信息(那这也是不行的,我们每个人都要有私生活和小秘密)。

常见场景

1、未认证账户访问无需认证就能访问该功能
2、不具备某个功能权限的账户认证后成功访问该功能

实例

实验环境为 pikachu 靶场 over permission 模块垂直越权

我们已事先知道两个账号:
admin/123456
pikachu/000000
admin是超级boss(管理员)

先分别登录看看,再确定出题人想要我们实现的是向上越权还是向下越权
首先是admin
水平越权与垂直越权
再是pikachu
水平越权与垂直越权
发现唯一的不同是管理员账户多了一个添加用户的功能。猜测此处是要不使用管理员账户来获取添加用户的功能。

我们先在登录 pikachu 的时候抓个包看看能不能更改 admin 的密码
水平越权与垂直越权
发现登录失败,说明通过普通用户改管理员密码是不行的
水平越权与垂直越权
经过排查初步确定是添加用户这个板块存在越权了,url是
http://192.168.244.1/pikachu/vul/overpermission/op2/op2_admin_edit.php
查看 op2_admin_edit.php 文件代码

$link=connect();
// 判断是否登录,没有登录不能访问
//这里只是验证了登录状态,并没有验证级别,所以存在越权问题。
if(!check_op2_login($link)){
    header("location:op2_login.php");
    exit();
}
if(isset($_POST['submit'])){
    if($_POST['username']!=null && $_POST['password']!=null){//用户名密码必填
        $getdata=escape($link, $_POST);//转义
        $query="insert into member(username,pw,sex,phonenum,email,address) values('{$getdata['username']}',md5('{$getdata['password']}'),'{$getdata['sex']}','{$getdata['phonenum']}','{$getdata['email']}','{$getdata['address']}')";
        $result=execute($link, $query);
        if(mysqli_affected_rows($link)==1){//判断是否插入
            header("location:op2_admin.php");
        }else {
            $html.="<p>修改失败,请检查下数据库是不是还是活着的</p>";

        }
    }
}

发现只判断了是否登陆,没有验证级别,确实存在越权

如何实现越权呢?我们只需要重新登入这个板块,把url改成
http://192.168.244.1/pikachu/vul/overpermission/op2/op2_admin_edit.php即可
水平越权与垂直越权
这样,即使不登陆管理员账户,也可以添加用户文章来源地址https://www.toymoban.com/news/detail-410561.html

到了这里,关于水平越权与垂直越权的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何解决水平越权(横向越权)和纵向越权

    目录 水平越权(横向越权) 采用token+手机号解决水平越权 纵向越权 纵向越权解决方法 水平越权指的是获取了同级别用户的权限:例如A登陆自己的商城,却能够看到B的订单。 采用token+手机号解决水平越权 横向越权产生的一个原因,是只做了认证,却没有做鉴权。 例如:国

    2024年02月12日
    浏览(45)
  • CSS实现盒子模型水平居中、垂直居中、水平垂直居中的多种方法

    水平居中效果图 水平居中 全局样式 第一种:margin+width 这种方法适用于已经知道width的盒子,实现起来比较简单 第二种:text-align+inline-block 这种方法适用于多种场景(width不固定) 第三种:float+position 这种方法适用于多种场景(width不固定) 第四种: 这种方法适用于多种场

    2024年02月09日
    浏览(54)
  • 微信小程序23__flex布局 相关的3种居中: 水平居中_垂直居中_水平垂直居中

    类似这样写法 display:  flex; flex-direction:  column;                //垂直布局 align-items:  center;                    // 水平居中     justify-content:  space-around; //垂直方向分散布局 类似这样写法 display:  flex; flex-direction: row;          //水平布局       align-items: center;    

    2024年02月03日
    浏览(34)
  • CSS水平垂直居中

    1.利用定位 + margin:auto 2.flex布局 3.grid布局 一、利用position+margin:auto  二、利用flex 三、gird布局

    2024年02月14日
    浏览(34)
  • 居中一个元素(水平+垂直居中)

    我们的示例代码全在此基础上修改: 具体原理参考下面这篇博客: flex 弹性布局_本郡主是喵的博客-CSDN博客 对于内容是 行内式元素(内容大小撑起标签宽高)或文字, 是有效的。 line-heignt == height ,能使文字垂直对齐,text-align:center,能使内容居中水平对齐 父元素,采用相对布局,

    2024年02月11日
    浏览(28)
  • 垂直分表、水平分表详解

    什么是垂直分表 垂直分表就是把一张表按列分为多张表,多张表通过主键进行关联,从而组成完整的数据。 分表之后,每张表的结构都不相同。 垂直分表不需要额外引用其他组件,需要到Repository层面建立好表映射即可。 根据什么分表呢? 根据数据是否是热点数据划分。

    2024年02月08日
    浏览(31)
  • 块、行内块水平垂直居中

    1.定位实现水平垂直居中 2.定位+位移 3.相对于整个视口水平垂直居中 4.flex+margin   5. flex 水平垂直居中 6.遮挡层

    2024年02月13日
    浏览(27)
  • uniapp 页面元素水平垂直居中

    在uniapp中如何让一个源码在页面中水平垂直居中?可添加如下操作: 在App.vue添加如下代码设置页面宽度100%显示 在你要居中的页面添加 效果如下

    2024年02月15日
    浏览(29)
  • 【CSS 布局】水平垂直方向居中

    单行元素 方式一: relative 和 absolute 方式二: relative 和 absolute (变种,适合于宽高固定) 方式三: flex 和 margin 方式四: flex 方式五: flex 多行元素

    2024年02月13日
    浏览(33)
  • CSS 水平垂直居中的方式

    目录 在不知道子元素宽高的情况下,水平垂直居中的六种方式: 1、弹性盒子布局方式来实现(flex)。  2、绝对定位 + transform 3、table标签 4、display:table-cell 5、display: grid 6、writing-mode 属性 在实际使用最好测试下最低版本是否支持对应的实现方式,尽量选各个浏览器支持比

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包