三十三.WEB 漏洞-逻辑越权之水平垂直越权全解
2022年 08月 31 日

BIGFISH

在这里插入图片描述

知识点

  • 解释
    • 水平越权:通过更换的某个ID之类的身份标识,从而使得A账号获取(修改,删除等)B账号的数据。

      垂直越权:通过低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作。
    • 未授权访问:通过删除请求中的认证信息后重放该请求,依旧可以访问或者完成操作。
    • 注意:水平越权和垂直越权不属于未授权访问
    • 在这里插入图片描述
  • 原理
    • 前端安全造成-界面
      • 判断用户等级后,代码界面部分进行可选显示
    • 后端安全造成-数据库
      • user表(管理员和普通用户同表)

      • id,username,password,usertype


        • 1,admin,123456,1

        • 2,xiaodi,111111,0

      • 登录用户admin或xiaodi是,代码是如何验证级别?(usertype判断)

      • 如果在访问网站数据包中有传输用户的编号、用户组编号或类型编号的时候,那么尝试对这个值进行修改,就是测试越权漏洞的基本。

修复方法

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

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

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

  • 4.加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理

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

 

案例演示

  • 案例1:pikachu-本地水平垂直越权演示-漏洞成因
  • 案例2:墨者学院-身份认证失效漏洞实战-漏洞成因
  • 案例3:越权检测-小米范越权漏洞检测工具-工具使用
  • 案例4:越权检测-Burpsuite插件Authz安装测试-插件使用
  • 案例5:越权检测-secscan-authcheck安装测试-工具使用

 

案例1:pikachu-本地水平垂直越权演示-漏洞成因

  • 水平越权
    • 原理:登录时判断级别,根据级别不同,显示不同的功能页面。在添加用户时,后台只判断了用户登录状态,并未验证级别,所以存在越权漏洞。
    • <1>lucy登录系统后,点击查看个人信息,可以看到自己的手机,住址,邮箱等敏感信息。
    • <2>抓包,将username改为kobe,页面显示kobe的个人信息,成功水平越权。
  • 垂直越权演示
    • <1>管理员有查看、添加、删除用户的权限,而普通用户只有查看权限。
    • <2>管理员登录系统,添加一个用户,抓包得到添加请求A。
    • <3>注销管理员,登录普通用户,得到普通用户的PHPSESSID。
    • <4>在请求A中替换PHPSESSID值为普通用户的PHPSESSID,成功添加用户。存在垂直越权。
    • 在垂直越权实战中,可能我们只有普通用户的权限,没有管理员权限,所以也不知道管理员添加用户的数据包形式,这时我们该什么办呢?
      • 1.普通用户前端有操作界面可以抓取数据包
      • 2.通过网站源码本地搭建自己去模拟抓取(已知源码情况下)
      • 3.盲猜

案例2:墨者学院-身份认证失效漏洞实战-漏洞成因

  • 靶场地址:https://www.mozhe.cn/bug/detail/eUM3SktudHdrUVh6eFloU0VERzB4Zz09bW96aGUmozhe
  • <1>进入靶场后,界面如下,已知测试账户test/test,需要获取马春生的个人信息。
  • <2>登录test/test后,可以查看test用户的个人信息。
  • <3>抓包分析,找到查看个人信息的数据包。修改card_id值的最后2位,相应地会返回不用用户的个人信息。
  • <4>查看首页代码,可以找到马春生用户的ID
  • <5>修改card_id值为20128880316,成功获取到马春生的的个人信息。
    • 在这里插入图片描述
  • <6>用户密码是用md5加密的,去加密网站解密,成功得到马春生的密码。
  • <7>使用账号m233241/9732343登录,确认是马春生账户,成功拿到本关key。
  • <8>还可以使用bp的intruder模块,将card_id值的最后2位改为00-99,可以遍历所有的用户。

案例3:越权检测-小米范越权漏洞检测工具-工具使用

  • privilegechecker下载地址:http://pan.baidu.com/s/1pLjaQKF小米范越权漏洞检测工具主要是检测网站越权漏洞的工具。

    此工具请使用Java 1.8以上版本运行。

    检测原理:

    此工具内置了三个浏览器,三个浏览器完全独立,目前采用的是chrome内核,我们可以为三个浏览器使用不同的用户登录目标网站,或者为三个浏览器设置不同的cookie,然后让他们同时去访问同一个url或者发送同样的请求,观察三个浏览器的页面变化。

    假如某个URL本应只有1号浏览器的用户有权限查看,但是2、3号浏览器的用户也正常访问了URL,并获取了不该获取的数据,则可能存在越权漏洞。界面如下:
  • 目前操作模式主要有两种:一、2、3号浏览器与1号浏览器同步。

    这种情况我们只要操作1号浏览器,2、3号浏览器会跟随1号浏览器访问同样的地址,这样我们可以为1号浏览器设置更高权限的用户即可检测垂直越权。为三个浏览器设置同样级别的用户即可检测水平越权。

    二、所有浏览器与表格同步。

    这种情况主要针对ajax、post、手机app等情况,开启代理功能,类似burp,浏览器或者手机app设置代理为此工具,则会抓下所有的请求,然后我们点击表格中的任意请求,三个浏览器会以各自的身份去发送这个请求,同样我们观察页面变化来判断是否存在越权问题。

    另外此工具也可用于检测csrf漏洞。

    操作方法:

    1、在三个浏览器各自的文本输入框输入cookie,点击设置cookie,即可为对应的浏览器设置cookie。

    2、点击三个浏览器上方的清除cookie,即可清除已经设置的cookie。

    3、点击 启动即可启动代理,默认为监听 。0.0.0.0:8088端口。

    4、在搜索框内输入关键字,点击搜索即可对表格内所有记录的请求进行搜索。

    下载地址:http://www.cnblogs.com/SEC-fsq/p/5736675.html 文件名 privilegecheck.jar 目前只做了windows版本。

案例4:越权检测-Burpsuite插件Authz安装测试-插件使用

  • Authz工作原理:将用户认证的HTTP请求头进行修改(Cookie等),然后通过响应长度、响应状态码判断是否存在越权。安装:Extender > BApp Store > Authz > install > 安装成功。

    使用前提:同个业务系统中两个测试账号A、B

    使用方法:A账户机进行功能操作,抓包,将待测请求包发送给Authz模块,修改cookie值(或者其他的用户身份凭证请求头)为B账户凭证,运行,当原响应内容长度、响应状态码和被修改后请求的响应内容长度、响应状态码一致则会绿,代表存在越权。

    优缺点
    • 优点:使用简单、省时省力。
    • 缺点:只是适用于检测越权读取类操作,删除编辑类操作还需人工判断。
  • bp中还有一个插件AuthMatrix可用来检测越权漏洞,这个插件比Authz更新更好用,但是需要下载Jython,比较麻烦。

案例5:越权检测-secscan-authcheck安装测试-工具使用

  • 下载地址:https://github.com/ztosec/secscan-authchecksecscan-authcheck工具比较强大,安装也比较麻烦,需要搭建自己的服务器,将工具安装在服务器上,然后需要在浏览器安装插件,将浏览器访问流量导入自己的服务器上,使用该工具检测是否有越权漏洞。

相关链接

三十三.WEB 漏洞-逻辑越权之水平垂直越权全解

在这里插入图片描述

知识点

  • 解释
    • 水平越权:通过更换的某个ID之类的身份标识,从而使得A账号获取(修改,删除等)B账号的数据。

      垂直越权:通过低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作。
    • 未授权访问:通过删除请求中的认证信息后重放该请求,依旧可以访问或者完成操作。
    • 注意:水平越权和垂直越权不属于未授权访问
    • 在这里插入图片描述
  • 原理
    • 前端安全造成-界面
      • 判断用户等级后,代码界面部分进行可选显示
    • 后端安全造成-数据库
      • user表(管理员和普通用户同表)

      • id,username,password,usertype


        • 1,admin,123456,1

        • 2,xiaodi,111111,0

      • 登录用户admin或xiaodi是,代码是如何验证级别?(usertype判断)

      • 如果在访问网站数据包中有传输用户的编号、用户组编号或类型编号的时候,那么尝试对这个值进行修改,就是测试越权漏洞的基本。

修复方法

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

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

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

  • 4.加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理

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

 

案例演示

  • 案例1:pikachu-本地水平垂直越权演示-漏洞成因
  • 案例2:墨者学院-身份认证失效漏洞实战-漏洞成因
  • 案例3:越权检测-小米范越权漏洞检测工具-工具使用
  • 案例4:越权检测-Burpsuite插件Authz安装测试-插件使用
  • 案例5:越权检测-secscan-authcheck安装测试-工具使用

 

案例1:pikachu-本地水平垂直越权演示-漏洞成因

  • 水平越权
    • 原理:登录时判断级别,根据级别不同,显示不同的功能页面。在添加用户时,后台只判断了用户登录状态,并未验证级别,所以存在越权漏洞。
    • <1>lucy登录系统后,点击查看个人信息,可以看到自己的手机,住址,邮箱等敏感信息。
    • <2>抓包,将username改为kobe,页面显示kobe的个人信息,成功水平越权。
  • 垂直越权演示
    • <1>管理员有查看、添加、删除用户的权限,而普通用户只有查看权限。
    • <2>管理员登录系统,添加一个用户,抓包得到添加请求A。
    • <3>注销管理员,登录普通用户,得到普通用户的PHPSESSID。
    • <4>在请求A中替换PHPSESSID值为普通用户的PHPSESSID,成功添加用户。存在垂直越权。
    • 在垂直越权实战中,可能我们只有普通用户的权限,没有管理员权限,所以也不知道管理员添加用户的数据包形式,这时我们该什么办呢?
      • 1.普通用户前端有操作界面可以抓取数据包
      • 2.通过网站源码本地搭建自己去模拟抓取(已知源码情况下)
      • 3.盲猜

案例2:墨者学院-身份认证失效漏洞实战-漏洞成因

  • 靶场地址:https://www.mozhe.cn/bug/detail/eUM3SktudHdrUVh6eFloU0VERzB4Zz09bW96aGUmozhe
  • <1>进入靶场后,界面如下,已知测试账户test/test,需要获取马春生的个人信息。
  • <2>登录test/test后,可以查看test用户的个人信息。
  • <3>抓包分析,找到查看个人信息的数据包。修改card_id值的最后2位,相应地会返回不用用户的个人信息。
  • <4>查看首页代码,可以找到马春生用户的ID
  • <5>修改card_id值为20128880316,成功获取到马春生的的个人信息。
    • 在这里插入图片描述
  • <6>用户密码是用md5加密的,去加密网站解密,成功得到马春生的密码。
  • <7>使用账号m233241/9732343登录,确认是马春生账户,成功拿到本关key。
  • <8>还可以使用bp的intruder模块,将card_id值的最后2位改为00-99,可以遍历所有的用户。

案例3:越权检测-小米范越权漏洞检测工具-工具使用

  • privilegechecker下载地址:http://pan.baidu.com/s/1pLjaQKF小米范越权漏洞检测工具主要是检测网站越权漏洞的工具。

    此工具请使用Java 1.8以上版本运行。

    检测原理:

    此工具内置了三个浏览器,三个浏览器完全独立,目前采用的是chrome内核,我们可以为三个浏览器使用不同的用户登录目标网站,或者为三个浏览器设置不同的cookie,然后让他们同时去访问同一个url或者发送同样的请求,观察三个浏览器的页面变化。

    假如某个URL本应只有1号浏览器的用户有权限查看,但是2、3号浏览器的用户也正常访问了URL,并获取了不该获取的数据,则可能存在越权漏洞。界面如下:
  • 目前操作模式主要有两种:一、2、3号浏览器与1号浏览器同步。

    这种情况我们只要操作1号浏览器,2、3号浏览器会跟随1号浏览器访问同样的地址,这样我们可以为1号浏览器设置更高权限的用户即可检测垂直越权。为三个浏览器设置同样级别的用户即可检测水平越权。

    二、所有浏览器与表格同步。

    这种情况主要针对ajax、post、手机app等情况,开启代理功能,类似burp,浏览器或者手机app设置代理为此工具,则会抓下所有的请求,然后我们点击表格中的任意请求,三个浏览器会以各自的身份去发送这个请求,同样我们观察页面变化来判断是否存在越权问题。

    另外此工具也可用于检测csrf漏洞。

    操作方法:

    1、在三个浏览器各自的文本输入框输入cookie,点击设置cookie,即可为对应的浏览器设置cookie。

    2、点击三个浏览器上方的清除cookie,即可清除已经设置的cookie。

    3、点击 启动即可启动代理,默认为监听 。0.0.0.0:8088端口。

    4、在搜索框内输入关键字,点击搜索即可对表格内所有记录的请求进行搜索。

    下载地址:http://www.cnblogs.com/SEC-fsq/p/5736675.html 文件名 privilegecheck.jar 目前只做了windows版本。

案例4:越权检测-Burpsuite插件Authz安装测试-插件使用

  • Authz工作原理:将用户认证的HTTP请求头进行修改(Cookie等),然后通过响应长度、响应状态码判断是否存在越权。安装:Extender > BApp Store > Authz > install > 安装成功。

    使用前提:同个业务系统中两个测试账号A、B

    使用方法:A账户机进行功能操作,抓包,将待测请求包发送给Authz模块,修改cookie值(或者其他的用户身份凭证请求头)为B账户凭证,运行,当原响应内容长度、响应状态码和被修改后请求的响应内容长度、响应状态码一致则会绿,代表存在越权。

    优缺点
    • 优点:使用简单、省时省力。
    • 缺点:只是适用于检测越权读取类操作,删除编辑类操作还需人工判断。
  • bp中还有一个插件AuthMatrix可用来检测越权漏洞,这个插件比Authz更新更好用,但是需要下载Jython,比较麻烦。

案例5:越权检测-secscan-authcheck安装测试-工具使用

  • 下载地址:https://github.com/ztosec/secscan-authchecksecscan-authcheck工具比较强大,安装也比较麻烦,需要搭建自己的服务器,将工具安装在服务器上,然后需要在浏览器安装插件,将浏览器访问流量导入自己的服务器上,使用该工具检测是否有越权漏洞。

相关链接

赞 (0)

猜您想看

评论区(暂无评论)

这里空空如也,快来评论吧~

我要评论