一、概念理解 1.什么是越权越权:越权访问(Broken Access Control,简称BAC)是我们在测试过程中遇到比较多的漏洞,该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户…
一、概念理解
1.什么是越权:
越权访问(Broken Access Control,简称BAC)是我们在测试过程中遇到比较多的漏洞,该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。也可以这样来理解越权漏洞,一个用户一般只能够对自己本身的信息进行增删改查,然而由于后台开发人员的疏忽,没有在信息进行增删改查时候进行用户判断(或者设置判断条件是较简单),从而导致用户可以对其他用户(同级或者更加高级的管理员)进行增删改查等等操作。
2.分类:
水平越权:同级别的用户之间权限的跨越;通过更换某个ID之类的身份标识从而使A账号获取(修改、删除等)B账号的数据
垂直越权:可通过普通用户的权限访问到较高级用户的权限;使用低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作,得到核心的
未授权访问:通过删除请求中的认证消息后重放该请求,依旧可以访问或者完成操作
3.原理:
前端安全问题造成:界面:判断用户等级后代码界面部分进行可选显示,代码在界面只判断是否为管理员
后端安全造成:数据库(通常登入用户判断是哪一级别的用户是靠用户类型usertype进行的)
二、演示案例:
Pikachu水平垂直越权演示
pikachu是一个漏洞练习平台。其中包含了常见的web安全漏洞,pikachu的安装需要集成环境的配合,实验主要用到了以下的工具,大家可以自行下载
小皮:https://www.xp.cn/
Pichachu:https://github.com/zhuifengshaonianhanlu/pikachu
Burpsite:https://portswigger.net/burp/communitydownload(最好下载1.6以上版本)
Java环境:直接百度搜
火狐浏览器(要去更改一些配置这里不多做介绍):https://download-origin.cdn.mozilla.net/pub/devedition/releases/56.0b9/win32/zh-CN/Firefox%20Setup%2056.0b9.exe
成功之后界面如下:
选择over permission(越权)主要从越权和垂直来进行实验
先练习水平越权点击tip提示选择一个用户进行登入(这里选择lucy)
开启burpsite进行抓包,点击“查看个人信息”抓到数据包
更换数据包内容再把数据包返回(现实中可以通过猜测、查看用户是否注册等方法发现用户信息)
得到lili用户的具体信息,简单的水平越权就结束了
点击垂直越权,选择admin管理员登入查看权限
发现拥有查看用户列表、添加、删除用户的较高权限
退出登入再选择普通用户进行查看,发现只有查看功能
在admin中点击添加用户创建一个新的用户打开抓包,获取数据
抓取到数据包之后右击发送到Repeater,然后把数据包drop丢掉,重新登入到pikachu用户下
回到用户界面,右击查看页面元素,查看当前页面的cookie(储存在用户本地终端上的数据,网站上用于辩护用户的信息)
把cookie进行替换之后重新发送,右击刷新页面发现zzz用户
三、总结
1.检测:
如果在访问网站数据包中有传输用户的编号用户,用户组编号或者类型编号的时候,那么尝试对这个值进行修改,就是测试漏洞的基本。账号获取可以通过注册是提示已经被注册获取到,或者通过别的渠道能够看到用户的账号;通过数据包的修改得到了同一级别用户的信息。
水平越权:通过一个更改一个普通用户的id值来获取其他用户的数据,观察用户的地址链接的编号,往往与之有关
垂直越权:一般是通过用户类型编号,判断你是什么类型级别的用户,给予你不同级别的权力
有如下方法
(1)普通用户前端有操作界面可以抓取数据包
(2)通过网站源码本地搭建自己去模拟抓取
(3)盲猜,通过账户构造规律
利用burpsit插件进行检测越权漏洞(环境和上面的一样)
在burpsite的商店(BApp Store)
继续在水平越权中登入到lucy用户中,抓取用户数据包数据
右击发送到安装的插件Authz中再更改用户名称之后再次发送到AUthz中
在Authz上面的cookie里面输入刚刚发送的lucy数据包中的cookie
出现绿色表明都可以访问到说明存在越权漏洞
2.防御:
(1)执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
(2)前后端同时对用户输入信息进行校验,双重验证机制
(3)直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
(4)可以从用户的加密认证 cookie 中获取当前用户 id,防止攻击者对其修改。或在 session、cookie 中加入不可预测、不可猜解的 user 信息。
(5)特别敏感操作可以让用户再次输入密码或其他的验证信息。
(6)永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤
- 本文作者: ZHUZHU715
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/467
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!