涉及知识

水平、垂直越权、未授权访问

解释

水平越权:同级别用户越权

通过更换的某个 ID 之类的身份标识,从而使 A 账号获取(修改、删除等)B 账号数据。

垂直越权:不同级别用户越权

使用低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作。

未授权访问

通过删除请求中的认证信息后重放该请求,依旧可以访问或者完成操作。

原理

前端安全造成:界面

判断用户等级后,代码界面部分进行可选显示

普通用户和管理员用户权限在操作逻辑上相同,但是返回到前端的数据可选显示,以区分普通用户和管理员用户,比如pikachu靶场的垂直越权,管理员用户可以添加、删除用户,普通用户只能查看,但是使用普通用户的Cookie发送添加用户的数据包也能成功添加新用户,查看pikachu靶场的逻辑越权的代码

后端安全造成:数据库

user 表(管理员和普通用户同表)

id,username,password,usertype

1,admin,123456,1

2,xiaodi,11111,2

登录用户 admin 或 xiaodi 时,代码是如何验证这个级别?(usertype 判断) 如果在访问数据包中有传输用户的编号、用户组编号

或类型编号的时候,那么尝试对这个值进行修 改,就是测试越权漏洞的基本。

检测

利用

修复防御方案

  1. 前后端同时对用户输入信息进行校验,双重验证机制

  2. 调用功能前验证用户是否有权限调用相关功能

  3. 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限

  4. 直接对象引用的加密资源 ID,防止攻击者枚举 ID,敏感数据特殊化处理

  5. 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤

演示案例

Pikachu-本地水平垂直越权演示(漏洞成因)

水平越权

pikachu靶场进入Over Permission模块的水平越权,使用用户名kobe密码123456登录

点击查看用户信息抓包

image-20220328144459335

修改数据数据包中username值为Lucy,即可查看Lucy用户的信息(知晓Lucy用户名是前期信息收集得到的信息)

image-20220328144349871

image-20220328144441654

垂直越权

pikachu靶场进入Over Permission模块的垂直越权

使用一个普通用户pikachu/000000登录,只有查看权限

image-20220328150219149

使用管理员用户adimin/123456登录,拥有添加用户、删除用户等权限

image-20220328150240877

使用管理员用户登录后点击添加一个用户并抓包

image-20220328150306010

抓包结果发到repeater模块,取消burp截断

image-20220328150338039

退出管理员登录使用普通用户登录,检查页面找到普通用户Cookie值,复制到上述管理员数据包的Cookie值处,提交数据包

image-20220328150524750

image-20220328151404207

刷新普通用户的页面,可见我们使用普通用户登录,添加了一个用户,实现了管理员用户才可以的操作

image-20220328151347400

通过上述垂直越权案例可知垂直越权:添加用户

前提条件:获取添加用户的数据包

如何得到管理员添加用户的数据包:

  1. 普通用户前端有操作界面可以抓取数据包
  2. 通过网站源码本地搭建,自己模拟抓取
  3. 盲猜

墨者水平-身份认证失效漏洞实战(漏洞成因)

靶场地址:https://www.mozhe.cn/bug/detail/eUM3SktudHdrUVh6eFloU0VERzB4Zz09bW96aGUmozhe

背景介绍

钻石代理商马春生同学卷款逃跑,多位下级代理内心受到了难以磨灭的伤害,为了找到她我们将通过代理网站获取到她的手机号码等信息。

实训目标

  1. 了解越权漏洞的相关知识;

  2. 熟练的使用burp工具获取用户信息;

  3. 掌握一定的前端知识;

解题方向

越权访问,遍历用户信息

解题过程

看到提示使用test/test登录,在登录时进行抓包,可以抓到2个数据包

第一个数据包

第二个数据包

image-20220328153352341

登录后页面显示结果如下

image-20220328153421324

观察数据包的特征可知,第一个数据包是登录的请求数据包,第二个数据包是请求查看用户信息的数据包,注意到第二个数据包的以下标示的关键部分

image-20220328153842323

于是我们猜测,当card_id的值改变时,查看到的用户信息就会改变,而且提示信息指示存在水平越权,因此将数据包发送到intruder模块,修改爆破card_id的值后2位进行遍历,查看返回消息长度

image-20220328154335505

image-20220328154417421

注意到登录页面的用户头像信息,查看页面源码可知目标用户马春生的头像地址为http://124.70.64.48:48994/static/img/20128880316.jpg,于是猜测马春生的用户card_id值就是20128880316

在上述爆破返回的数据包中,查找20128880316返回结果,可以看到马春生的账号信息

image-20220328154759592

对返回数据包的password值进行md5解密得到账号密码为9732343

image-20220328154904949

使用用户名m233241,密码9732343登录,即可得到马春生的账号信息以及本关卡flag

image-20220328155031911

即通过水平越权拿到同级别用户的账号信息

越权检测-小米范越权漏洞检测工具(工具使用)

越权检测-Burpsuite 插件 Authz 安装测试(插件使用)

涉及资源

越权检测工具:https://github.com/ztosec/secscan-authcheck

http://pan.baidu.com/s/1pLjaQKF (privilegechecker)

https://www.mozhe.cn/bug/detail/eUM3SktudHdrUVh6eFloU0VERzB4Zz09bW96aGUmozhe

https://github.com/alphaSeclab/awesome-burp-suite

站内搜索

没有找到内容!