【逻辑漏洞】基于BurpSuite的越权测试实战教程
一、什么是越权漏洞?它是如何产生的?
越权漏洞是Web应用程序中一种常见的安全漏洞。它的威胁在于一个账户即可控制全站用户数据。当然这些数据仅限于存在漏洞功能对应的数据。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。所以测试越权就是和开发人员拼细心的过程。
二、越权漏洞的分类?
主要分为水平越权和垂直越权,根据我们的业务通俗的表达一下这两者的区别:
水平越权:两个不同的公司A和B,通过修改请求,公司A可以任意修改B公司的员工、部门、考勤等信息;
垂直越权:同一个公司不同权限的管理员A和B,通过修改请求,管理员A可以修改不在他管辖范围内的员工的部门、考勤、工资等信息;
三、测试越权漏洞需要用到哪些工具?
推荐一:【BurpSuite】+【firefox】
推荐二:【fiddler】+【fiddler】+【SwitchyOmega】
推荐的这两套工具都可以完成越权测试,用哪个都可以。
四、如何查找越权漏洞?
在与服务器进行数据交互时客户端携带着标识用户的身份的cookie,当服务端的session与cookie中的身份匹配成功后,才能允许该用户进行相关操作(cookie和session的关系-->一弹、二弹)。除了cookie之外,在请求中可能会带一些参数,细览下可能存在辨别信息的唯一值,来进行测试。这里要说一点,传输的参数并不一定在请求参数中,也有可能存在URL链接的位置(GET和POST请求的区别)。当拦截一个请求后分析是否有参数:
1、请求中不存在参数,只用cookie进行身份验证,无法水平越权,可能出现垂直越权;
2、请求中存在参数,并且参数中的某些值可能是辨别信息的唯一值(如employeeID、departmentID、ID等),可能存在水平和垂直越权;越权的原因是参数中的employeeID没有判断是否是cookie中用户所管辖的员工ID。
五、实战演练(Burp Suite)
下载安装burpsuite
burpsuite需要java运行环境,所以必须先安装JDK并配置好环境变量-->JDK下载及环境变量配置教程
配置好环境后双击.jar文件,弹出窗口无脑直接点击next即可打开(如果需要加载配置文件才需要勾选其他选项);切换到proxy模块,点击一下intercept is on按钮停止拦截数据。如图1
给浏览器安装证书用以访问https
首先打开firefox,在地址栏输入burpsuite的默认监听地址及端口127.0.0.1:8080,点击CA Certificate下载并保存证书cacert.der,如图二

接着依次点击firefox的菜单->选项->高级->证书->查看证书->证书机构->导入,选择刚才下载的cacert.der,在弹出的窗口中勾选“信任此CA标识的网站”,最后点击确定,如图三。
打开待测网站,拦截对应操作的请求数据
寻找网站中可以对数据进行增删改查的地方,比如我们要测试一下调整年假的操作是否存在越权时,先操作修改年假数量,然后在点击保存之前打开intercept的拦截开关,最后再点击确定按钮,就会拦截到请求数据,如图四

分析该请求是否有越权的可能
从拦截到的请求中我们可以看出,修改年假的操作使用的是POST请求,调用了接口/attendance/ajax-save-annual-adjust-days,并传递了参数employeeId、year、adjustDays。在这三个参数中明显可以看出employeeId是判断该条请求身份的参数,虽然cookie中存在QJYDID、WAVESSID、JSESSIONID等身份验证,但是如果开发人员没有判断这个employeeId是否是该cookie身份所在公司下的员工时,就会存在越权漏洞,导致修改任意employeeId就能操作年假的修改,不需要所属公司的限制。
把可能存在的越权的请求发送到repeater备用
repeater模块的功能就是对请求进行重放(repeat:重复),重放前我们可以对请求和参数任意修改。(直接在intercept模块修改参数,再点击forward放行也是可以的)
在请求数据页面点击右键,选择“Send to Repeater”,该请求自动复制到repeater模块,如图五
关闭intercept的拦截开关,点击“intercept is on”后开关变为“intercept is off”就是关闭了

修改参数employeeId后重放请求
再打开一个firefox的隐身窗口(小技巧:firefox的普通窗口和隐私窗口不同源,可以分别登录两个公司,方便操作和查看),用公司B登录;刚才用普通窗口登录的是公司A,拦截请求时的employeeId是属于公司A的员工A01;我们可以通过浏览器自带的调试工具或同样的拦截方法获取一下公司B的员工B01的employeeId。把burpsuite切换到repeater模块,修改参数为员工B01的employeeId,点击GO,如下图

查看这条返回数据的状态是true,message信息内容是“数据保存成功”,然后查看公司B的员工B01的年假是否显示我们请求时填写的99。
◆如果B公司的员工B01的年假显示为99:越权成功,我们用公司A的请求身份成功的修改了B公司员工B01的年假;
◆如果B公司的员工B01的年假没有变化:虽然返回数据为true,但是实际没有改变数值,这可以看做不存在越权漏洞;解决中文乱码

上面我们进行了水平越权的测试,想一想垂直越权怎么做呢?
水平越权是测试不同公司之间是否可以互相操作,垂直越权是测试同一公司不同权限的管理员是否可以操作不属于他管辖范围内的员工等。
大概说一下垂直越权测试流程,感兴趣的童鞋可以尝试一下:
◆事业部管理员操作员工年假修改,拦截到请求后,把employeeId改成属于这个公司但是不属于这个事业部的员工,查看是否可以修改成功。
◆考勤权限管理员登录并修改员工年假,拦截请求并添加到repeater;公告权限管理员登录获取cookie数据;回放请求时换成公告权限管理员的cookie,查看是否可以修改成功。
【逻辑漏洞】基于BurpSuite的越权测试实战教程的更多相关文章
- WEB安全第七篇--终结篇考验逻辑思维:逻辑漏洞大汇总(越权、会话逻辑、业务逻辑、暴力破解)
零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...
- 基于 burpsuite的web逻辑漏洞插件开发(来自JSRC安全小课堂,柏山师傅)
基于 burpsuite的web逻辑漏洞插件开发 BurpSuite 提供了插件开发接口,支持Java.Python.Ruby语言的扩展.虽然 BApp Store 上面已经提供了很多插件,其中也不乏 ...
- Web安全测试中常见逻辑漏洞解析(实战篇)
Web安全测试中常见逻辑漏洞解析(实战篇) 简要: 越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽,对信息进行增删改 ...
- 逻辑漏洞介绍 & 越权访问攻击 & 修复建议
介绍逻辑漏洞 逻辑漏洞就是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整性.一般出现在密码修改.越权访问.密码找回.交易支付金额等功能处.其中越权访问又有水平越权和垂直越权两种,如下所示. ...
- 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞
目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...
- 应用安全 - Web安全 - 逻辑漏洞整理
短信轰炸 .Fiddler抓包repeat .burpsuite 修改 PHPSESSID ->字典爆破 如选择a-z .burpsuite手机号遍历 防御: 设置图片验证码,每次获取短信验证码 ...
- Pikachu漏洞练习平台实验——越权漏洞(八)
1.概述 由于没有对用户权限进行严格的判断 导致低权限的账号(比如普通用户)可以去完成高权限账号(比如超管)范围内的操作 水行越权:A用户和B用户属于同一级别用户,但各自不能操作对方个人信息.A用户如 ...
- 一个登录点两个逻辑漏洞-edusrc
最近呢, 也是基础漏洞学的差不多了, 就在edusrc上面实战, 刚开始搞一些信息泄漏啥的, 提交了十几个, 结果就他娘的通过了一个. 咱也就不碰信息泄漏了, 没得意思. 关于这个学校测试时也是有坑的 ...
- [SRC初探]手持新手卡挖SRC逻辑漏洞心得分享
文章来源i春秋 本文适合新手参阅,大牛笑笑就好了,嘿嘿末尾有彩蛋!!!!!!!!!!!!!!!!!本人参加了本次"i春秋部落守卫者联盟"活动,由于经验不足,首次挖SRC,排名不是那 ...
随机推荐
- 并行模式库PPL应用实战(一):使用task类创建并行任务
自 VS2010 起,微软就在 CRT 中集成了并发运行时(Concurrency Runtime),并行模式库(PPL,Parallel Patterns Library)是其中的一个重要组成部分. ...
- vue中使用stompjs实现mqtt消息推送通知
最近在研究vue+webAPI进行前后端分离,在一些如前端定时循环请求后台接口判断状态等应用场景用使用mqtt进行主动的消息推送能够很大程度的减小服务端接口的压力,提高系统的效率,而且可以利用mqtt ...
- .NET Core程序中使用User Secrets存储敏感数据
前言 在开发中经常会用到一些敏感数据,比如AppSecret或数据库连接字符串,无论是硬编码还是写在配置文件中,最终都要push到svn或git上.对于开源项目,这些敏感数据就无隐私可言了,对于私有项 ...
- excel转html 实现在线预览
首先说一下,本人发布的代码都是经过本人亲测,并且用在实际项目中.如果觉得可以,希望大家点个赞,谢谢大家. 有什么问题,大家评论出来,一起交流.好了,不废话了,下面来说一说这个东西怎么做. 网上也有许多 ...
- codeM美团编程大赛初赛B轮D题
[编程题] 模 时间限制:1秒空间限制:32768K 给定四个正整数a,b,c,k,回答是否存在一个正整数n,使得a*n在k进制表示下的各位的数值之和模b为c.输入描述:第一行一个整数T(T < ...
- java高并发锁的3种实现
初级技巧 - 乐观锁 乐观锁适合这样的场景:读不会冲突,写会冲突.同时读的频率远大于写. 以下面的代码为例,悲观锁的实现: Java代码 public Object get(Object key) ...
- 【Android Developers Training】 6. 配置Action Bar
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Ionic开发笔记
Ionic 开发笔记 记录开发中遇到的一些问题 ion-side-menu,使所有顶部导航标题居中 <!-- 添加 align-title="center" 使顶部导航标题居 ...
- ASP.NET Core 四种释放 IDisposable 对象的方法
本文翻译自<Four ways to dispose IDisposables in ASP.NET Core>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! IDispos ...
- 算法设计与分析 上机题Mergesort
#include <iostream>using namespace std; #define N 100 int g_array[N]; //存放输入的数字static int ...