思维导图
知识点
水平越权,垂直越权,未授权访问 解释,原理,检测,利用,防御等 水平越权:通过更换的某个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工具比较强大,安装也比较麻烦,需要搭建自己的服务器,将工具安装在服务器上,然后需要在浏览器安装插件,将浏览器访问流量导入自己的服务器上,使用该工具检测是否有越权漏洞。