33:WEB漏洞-逻辑越权之水平垂直越权全解

思维导图

 知识点

水平越权,垂直越权,未授权访问
    解释,原理,检测,利用,防御等

水平越权:通过更换的某个ID之类的身份标识,从而使得A账号获取(修改,删除等)B账号的数据。
垂直越权:通过低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作。
未授权访问:通过删除请求中的认证信息后重放该请求,依旧可以访问或者完成操作。

原理
1.前端安全造成:界面
判断用户等级后,代码界面部分进行可选显示

2.后端安全造成:数据库
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>kobe登录系统后,点击查看个人信息,可以看到自己的手机,住址,邮箱等敏感信息。

<2>抓包,将username改为lucy,页面显示lucy的个人信息,成功水平越权。

原理:登录时判断级别,根据级别不同,显示不同的功能页面。在添加用户时,后台只判断了用户登录状态,并未验证级别,所以存在越权漏洞。

垂直越权演示

<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-authcheck

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

posted @ 2021-12-27 10:39  zhengna  阅读(2703)  评论(0编辑  收藏  举报