【逻辑漏洞】基于BurpSuite的越权测试实战教程

时间:2021-03-25 03:07:33

一、什么是越权漏洞?它是如何产生的?

越权漏洞是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)

  1. 下载安装burpsuite

    burpsuite需要java运行环境,所以必须先安装JDK并配置好环境变量-->JDK下载及环境变量配置教程
            配置好环境后双击.jar文件,弹出窗口无脑直接点击next即可打开(如果需要加载配置文件才需要勾选其他选项);切换到proxy模块,点击一下intercept is on按钮停止拦截数据。如图1
    【逻辑漏洞】基于BurpSuite的越权测试实战教程

  2. 给浏览器安装证书用以访问https

    首先打开firefox,在地址栏输入burpsuite的默认监听地址及端口127.0.0.1:8080,点击CA Certificate下载并保存证书cacert.der,如图二【逻辑漏洞】基于BurpSuite的越权测试实战教程
            接着依次点击firefox的菜单->选项->高级->证书->查看证书->证书机构->导入,选择刚才下载的cacert.der,在弹出的窗口中勾选“信任此CA标识的网站”,最后点击确定,如图三。
    【逻辑漏洞】基于BurpSuite的越权测试实战教程

  3. 打开待测网站,拦截对应操作的请求数据

            寻找网站中可以对数据进行增删改查的地方,比如我们要测试一下调整年假的操作是否存在越权时,先操作修改年假数量,然后在点击保存之前打开intercept的拦截开关,最后再点击确定按钮,就会拦截到请求数据,如图四【逻辑漏洞】基于BurpSuite的越权测试实战教程

  4. 分析该请求是否有越权的可能

            从拦截到的请求中我们可以看出,修改年假的操作使用的是POST请求,调用了接口/attendance/ajax-save-annual-adjust-days,并传递了参数employeeId、year、adjustDays。在这三个参数中明显可以看出employeeId是判断该条请求身份的参数,虽然cookie中存在QJYDID、WAVESSID、JSESSIONID等身份验证,但是如果开发人员没有判断这个employeeId是否是该cookie身份所在公司下的员工时,就会存在越权漏洞,导致修改任意employeeId就能操作年假的修改,不需要所属公司的限制。

    【逻辑漏洞】基于BurpSuite的越权测试实战教程

  5. 把可能存在的越权的请求发送到repeater备用

    repeater模块的功能就是对请求进行重放(repeat:重复),重放前我们可以对请求和参数任意修改。(直接在intercept模块修改参数,再点击forward放行也是可以的)
            在请求数据页面点击右键,选择“Send to Repeater”,该请求自动复制到repeater模块,如图五
    【逻辑漏洞】基于BurpSuite的越权测试实战教程

  6. 关闭intercept的拦截开关,点击“intercept is on”后开关变为“intercept is off”就是关闭了

    【逻辑漏洞】基于BurpSuite的越权测试实战教程
  7. 修改参数employeeId后重放请求

            再打开一个firefox的隐身窗口(小技巧:firefox的普通窗口和隐私窗口不同源,可以分别登录两个公司,方便操作和查看),用公司B登录;刚才用普通窗口登录的是公司A,拦截请求时的employeeId是属于公司A的员工A01;我们可以通过浏览器自带的调试工具或同样的拦截方法获取一下公司B的员工B01的employeeId。把burpsuite切换到repeater模块,修改参数为员工B01的employeeId,点击GO,如下图【逻辑漏洞】基于BurpSuite的越权测试实战教程
            查看这条返回数据的状态是true,message信息内容是“数据保存成功”,然后查看公司B的员工B01的年假是否显示我们请求时填写的99。
            ◆如果B公司的员工B01的年假显示为99:越权成功,我们用公司A的请求身份成功的修改了B公司员工B01的年假;
            ◆如果B公司的员工B01的年假没有变化:虽然返回数据为true,但是实际没有改变数值,这可以看做不存在越权漏洞;

  8. 解决中文乱码

    【逻辑漏洞】基于BurpSuite的越权测试实战教程

  9. 上面我们进行了水平越权的测试,想一想垂直越权怎么做呢?

            水平越权是测试不同公司之间是否可以互相操作,垂直越权是测试同一公司不同权限的管理员是否可以操作不属于他管辖范围内的员工等。
            大概说一下垂直越权测试流程,感兴趣的童鞋可以尝试一下:
            ◆事业部管理员操作员工年假修改,拦截到请求后,把employeeId改成属于这个公司但是不属于这个事业部的员工,查看是否可以修改成功。
            ◆考勤权限管理员登录并修改员工年假,拦截请求并添加到repeater;公告权限管理员登录获取cookie数据;回放请求时换成公告权限管理员的cookie,查看是否可以修改成功。

【逻辑漏洞】基于BurpSuite的越权测试实战教程的更多相关文章

  1. WEB安全第七篇--终结篇考验逻辑思维:逻辑漏洞大汇总(越权、会话逻辑、业务逻辑、暴力破解)

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  2. 基于 burpsuite的web逻辑漏洞插件开发(来自JSRC安全小课堂,柏山师傅)

    基于 burpsuite的web逻辑漏洞插件开发 BurpSuite 提供了插件开发接口,支持Java.Python.Ruby语言的扩展.虽然 BApp Store 上面已经提供了很多插件,其中也不乏 ...

  3. Web安全测试中常见逻辑漏洞解析(实战篇)

    Web安全测试中常见逻辑漏洞解析(实战篇) 简要: 越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽,对信息进行增删改 ...

  4. 逻辑漏洞介绍 & 越权访问攻击 & 修复建议

    介绍逻辑漏洞 逻辑漏洞就是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整性.一般出现在密码修改.越权访问.密码找回.交易支付金额等功能处.其中越权访问又有水平越权和垂直越权两种,如下所示. ...

  5. 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞

    目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...

  6. 应用安全 - Web安全 - 逻辑漏洞整理

    短信轰炸 .Fiddler抓包repeat .burpsuite 修改 PHPSESSID ->字典爆破 如选择a-z .burpsuite手机号遍历 防御: 设置图片验证码,每次获取短信验证码 ...

  7. Pikachu漏洞练习平台实验——越权漏洞(八)

    1.概述 由于没有对用户权限进行严格的判断 导致低权限的账号(比如普通用户)可以去完成高权限账号(比如超管)范围内的操作 水行越权:A用户和B用户属于同一级别用户,但各自不能操作对方个人信息.A用户如 ...

  8. [SRC初探]手持新手卡挖SRC逻辑漏洞心得分享

    文章来源i春秋 本文适合新手参阅,大牛笑笑就好了,嘿嘿末尾有彩蛋!!!!!!!!!!!!!!!!!本人参加了本次"i春秋部落守卫者联盟"活动,由于经验不足,首次挖SRC,排名不是那 ...

  9. 《Web安全攻防 渗透测试实战指南 》 学习笔记 (三)

    Web安全攻防 渗透测试实战指南   学习笔记 (三) burp suite详解                                                 是一款集成化渗透测试工 ...

随机推荐

  1. BigDecimal使用中的坑

    1.BigeDecimal调用divide时一定要记得规定小数位数的保留情况,不然除不尽的时候报错. 2.使用该种BigeDecimal时,加减乘除都要使用它内部封装好的方法,不然容易报错.

  2. visual studio installer制作安装包——Installer 类

    链接:https://msdn.microsoft.com/zh-cn/library/system.configuration.install.installer.aspx Installer 类 ...

  3. Oracle EBS-SQL (PO-6):检查订单接收总数.sql

    SELECT sum(rcvt.quantity) 接收事务处理汇总数--已排除退货 --rsh.receipt_num                   收据号, --pov.vendor_nam ...

  4. java基础学习周计划之2--面向对象

    JAVA面向对象第一天一. 知识点:1. 类和对象二. 关键问题(理论):1. 简述什么是类.什么是对象2. 简述基本类型变量与引用类型变量赋值时的差别3. 简述null的含义三. 关键代码(操作): ...

  5. unittest框架(惨不忍睹低配版)

    根据我上个随笔的unittest框架优化得来,虽然对于smtp模块还是有点迷糊,不过还是勉强搭建运行成功了,还是先上代码: #login_test.py import requests class L ...

  6. delphi中Time消息的使用方法

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  7. linux c 编程 ------ 程序入口参数,即 main 参数

    #include <stdio.h> int main(int argc, char *argv[]) { printf(]); int i = argc; printf("th ...

  8. ccc数据库的水平分割和垂直分割

    在数据库操作中,我们常常会听说这两个词语:水平分割和垂直分割.那么到底什么是数据库的水平分割,什么是数据库的垂直分割呢?本文我们就来介绍一下这部分内容. 1.水平分割: 按记录进分分割,不同的记录可以 ...

  9. Java 之多态

    Java 之多态(包含封装) 基础知识: Java 在处理基本数据类型(例如int ,char,double)时,都是采用按值传递的方式执行,除此之外的其它类型都是按引用传递的方式执行.对象除了在函数 ...

  10. 安装notepad&plus;&plus;之后鼠标右键无Edit with notepad&plus;&plus;

    在鼠标右键上加入使用notepad++编辑 最近发现一个问题在安装完notepad++文本编辑器之后,在一个文本文件上右键有时候并没有出现“使用notepad++编辑的选项”,不用着急可以通过简单地修 ...