网络安全进阶学习第十六课——业务逻辑漏洞介绍

文章目录

  • 一、什么是业务逻辑
  • 二、业务逻辑漏洞的成因
  • 三、逻辑漏洞的重要性
  • 四、业务逻辑漏洞分类
  • 五、业务逻辑漏洞——业务授权安全
    • 1、未授权访问
    • 2、越权访问
      • 1) 平行越权(水平越权是指相同权限的不同用户可以互相访问)
      • 2) 垂直越权(垂直越权是指使用权限低的用户可以访问权限较高的用户)
    • 3、越权访问挖掘思路
    • 4、越权漏洞的危害
    • 5、如何检测越权漏洞
    • 6、业务流程乱序
      • 顺序执行缺陷
  • 六、业务逻辑漏洞——业务接口调用
    • 1、重放攻击
      • 1)恶意注册
      • 2)短信炸弹
      • 3)无限刷积分/投票
      • 4)投票活动刷票
    • 2、内容编辑
      • 1)时间范围修改
  • 七、业务逻辑漏洞——业务一致性安全
    • 1、手机号篡改
    • 2、邮箱地址篡改
    • 3、订单id篡改
    • 4、商品编号篡改
    • 5、用户id篡改


一、什么是业务逻辑

– – 实际上,我们口口声声的业务逻辑,是只用代码实现的真实业务的规则映射。注意“规则”这个词,简单说,一个业务中,存在什么逻辑,可以通过在纸上画出不同业务对象之间的联系和约束,并将这些联系和约束一条条列出来,形成一个列表,而这列表中的每一条,就是一条规则,这些规则的总和,就是这个业务的业务逻辑,而且是全部业务逻辑,你不能再多列出一条了。


二、业务逻辑漏洞的成因

– – 应用程序在设计和实施的时候存在缺陷,允许攻击者诱发意外行为,像是设计的方案被人钻了空子。 通俗理解就是:在编写程序时,只考虑了常规的操作流程,即“当在A情况下,就会出现B,此时执行C即可”,但是开发者却没有考虑当用户执行了意料之外的操作时会发生什么。这种对于异常情况的欠考虑,最终导致了安全漏洞的产生。


三、逻辑漏洞的重要性

– – 常见的OWASP漏洞,通过漏洞扫描工具,大多支持自动化或者半自动化扫描出来;并且传统的安全防御设备和措施收效甚微;

– – 但逻辑漏洞属于和系统自身功能和逻辑有关系的漏洞,每一家的漏洞出现可能存在一定的独特性,很难复制或者通过规则通过脚本扫描,因此逻辑漏洞大多需要配合代码审计和手动测试才可发现相关漏洞,也是工具无法完全替代人所作的一类漏洞。

– – 业务逻辑属于正常请求,都是按照正常的程序走的,一般的安全设备是无法拦截的。


四、业务逻辑漏洞分类

  1. 验证码突破
  2. 业务授权安全
  3. 业务流程乱序
  4. 业务接口调用
  5. 时效绕过测试
  6. 身份认证安全
  7. 业务一致性安全
  8. 业务数据篡改
  9. 用户输入合规性
  10. 密码找回漏洞

五、业务逻辑漏洞——业务授权安全

1、未授权访问

– – 非授权访问是指用户在没有通过认证授权的情况下能够直接访问需要通过认证才能访问到的页面或文本信息。

– – 可以尝试在登录某网站前台或后台之后,将相关的页面链接复制于其他浏览器或其他电脑上进行访问,看是否能访问成功。例如:我用谷歌浏览器登录了百度的账号,然后我把登录后的个人中心页面链接复制下来,复制到火狐浏览器(从来没有登录过百度的账号)中,发现直接就登录成功了。这种就是未授权访问。

2、越权访问

– – 越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。
在这里插入图片描述

1) 平行越权(水平越权是指相同权限的不同用户可以互相访问)

– – 就是我登录某平台时,发现URL有ID号,我通过直接修改ID,就登录上了其他人的账号。

2) 垂直越权(垂直越权是指使用权限低的用户可以访问权限较高的用户)

– – 就是某平台的某高级功能的路径被泄露了,我用普通的账号登录,然后直接访问该路径,发现我的账号可以直接访问,并且可以使用原来不存在的功能。(低权限用户访问高权限用户)

3、越权访问挖掘思路

  • 水平越权:如果在访问网站数据包中有传输用户的编号、用户组编号或类型综号的时候,那么尝试对这个值进行修改,就是测试越权漏洞的基本。
  • 垂直越权:添加用户,获取高权限用户的功能,在前端JS里面寻找泄露的路径

4、越权漏洞的危害

– – 越权漏洞的危害与影响主要是与对应业务的重要性相关,比如说某一页面服务器端响应(不局限于页面返回的信息,有时信息在响应包中,页面不一定能看见)中返回登录名、登录密码、手机号、身份证等敏感信息,如果存在平行越权,通过对用户ID的遍历,就可以查看所有用户的敏感信息,这也是一种变相的脱库,而且很难被防火墙发现,因为这和正常的访问请求没有什么区别,也不会包含特殊字符,具有十足的隐秘性。

5、如何检测越权漏洞

– – 最简单的一种检测方式是,首先是通过定位鉴权参数,然后替换为其他账户鉴权参数的方法来发现越权漏洞。

6、业务流程乱序

顺序执行缺陷

  • a) 部分网站逻辑可能是先A过程后B过程然后C过程最后D过程
  • b) 用户控制着他们给应用程序发送的每一个请求,因此能够按照任何顺序进行访问。于是,用户就从B直接进入了D过程,就绕过了C。如果C是支付过程,那么用户就绕过了支付过程而买到了一件商品。如果C是验证过程,就会绕过验证直接进入网站程序了。
  • 举例:
    访问注册页面,注册账户之后充值提交并抓取数据包,填写任意金额然后并抓包,获取订单号,利用订单号构造充值链接并访问,看是否能充值成功

六、业务逻辑漏洞——业务接口调用

1、重放攻击

– – 在短信、邮件调用业务或生成业务数据环节中(例:短信验证码,邮件验证码,订单生成,评论提交,签到,投票等),对其业务环节进行调用(重放)测试。如果业务经过调用(重放)后被多次生成有效的业务或数据结果。

1)恶意注册

– – 利用BURP不断发同一个包就可以注册,这样可以一次性发送大量的注册请求包,这就导致了恶意注册。

2)短信炸弹

– – 在测试的过程中,我们发现众多的系统仅在前端通过JS校验时间来控制短信发送按钮,但后台并未对发送做任何限制,导致可通过重放包的方式大量发送恶意短信。

3)无限刷积分/投票

– – 比如每天签到送5个积分,如果签到接口未做限制,无限重放签到接口,就能实现无限刷积分。

4)投票活动刷票

– – 投票接口未做限制,或仅仅在前端JS做限制,可无限重放投票接口,给指定用户刷票。

– – 不过目前大部分投票系统都有做限制,比如同一个IP每天只能投三次票,可尝试用XForwarded-For:127.0.0.1来绕过IP限制。
在这里插入图片描述

2、内容编辑

  • 类似案例如下:
    – – 点击“获取短信验证码”,并抓取数据包内容,如下图。通过分析数据包,可以发现参数sendData/insrotxt的内容有客户端控制,可以修改为攻击者想要发送的内容。
    – – 篡改短信内容,可用来钓鱼。

1)时间范围修改

– – 针对某些带有时间限制的业务,修改其时间限制范围,例如在某项时间限制范围内查询的业务,修改含有时间明文字段的请求并提交,查看能否绕过时间限制完成业务流程。

– – 这种漏洞某些程度也回导致严重后果,例如曾经很盛行的暂住证买卖。


七、业务逻辑漏洞——业务一致性安全

1、手机号篡改

– – 抓包修改手机号码参数为其他号码尝试。

– – 例如:在办理查询页面,输入自己的号码然后抓包,修改手机号码参数为其他人号码,查看是否能查询其他人的业务。

– – 还有一种情况,在修改密码的时候,是需要接收手机验证码的,这时候通过抓包,把接收验证码的手机改成我自己的,要是能修改,那我就可以修改其他账号的密码了。

2、邮箱地址篡改

– – 抓包修改用户邮箱参数为其他用户的邮箱。

3、订单id篡改

– – 抓包修改用户邮箱参数为其他用户的邮箱。

4、商品编号篡改

– – 例如:积分兑换处,100个积分只能换商品编号为001,1000个积分只能换商品编号005,在100积分换商品的时候抓包把换商品的编号修改为005,用低积分换区高积分商品。

5、用户id篡改

– – 抓包查看自己的用户id,然后修改id(加减1)查看是否能查看其它用户id信息。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/133479.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯 题库 简单 每日十题 day1

01 空间 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位 二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间&#xff…

免费开箱即用微鳄OA办公系统

编者按:本文介绍基于天翎低代码平台实现的微鳄OA办公系统功能,免费开箱即用。支持私有化部署,同时提供天翎开发后台,企业可按需求可灵活调整配置。 OA办公系统可以提高企业的效率、降低成本、增强管理能力和灵活性,同时…

华为云云耀云服务器L实例评测|华为云云耀云服务器L实例开展性能评测

作者简介: 辭七七,目前大二,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&#x1f…

element-ui tree组件实现在线增删改

这里要实现一个tree 增删改 <!--oracle巡检项--> <template><div class"oracle_instanceType"><el-row type"flex" align"middle" justify"space-between"><iclass"el-icon-s-fold iBox"click&q…

笔记1.1 计算机网络基本概念

计算机网络是通信技术与计算机技术紧密结合的产物 通信系统模型&#xff1a; 计算机网络是一种通信网络 计算机网络是互连的、自洽的计算机集合。 互连&#xff1a;互联互通 自洽&#xff1a;无主从关系 通过交换网络互连主机 Internet&#xff1a;数以百万计的互连的计算设…

webpack-cl明明已经安装了,但是还是会报未安装

解决办法&#xff1a;对当前项目目录进行安装 npm install webpack webpack-cli --save-dev

腾讯mini项目-【指标监控服务重构】2023-08-06

今日已办 feature/client_traces_profile 修改 consumer 4个阶段的 spankind将 profile 的 span 作为 root span&#xff0c;保持与 venus 的 follows from 的 link feature/profile-otelclient-metric 将 metric 部分使用新分支 push go.opentelemetry.io/otel/propagatio…

记一次在amd架构打包arm64架构的镜像的试错经历

前提 在amd架构打包了一个镜像&#xff0c;放在arm64架构服务器上可以load ,但是run的时候报平台不兼容的问题。 运行如下命令查看发现 架构属于 amd64 如下&#xff1a; docker inspect 镜像ID需要生成一个arm的镜像才能运行。 尝试 首先Dockerfile 的FROM 基础镜像就的是…

I/O多路复用三种实现

一.select 实现 &#xff08;1&#xff09;select流程 基本流程是&#xff1a; 1. 先构造一张有关文件描述符的表; fd_set readfds 2. 清空表 FD_ZERO() 3. 将你关心的文件描述符加入到这…

LeetCode-热题100-笔记-day29

199. 二叉树的右视图https://leetcode.cn/problems/binary-tree-right-side-view/ 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1…

OpenGL ES视频特效开发参考Shadertoy参数详解参考Godot文档

今天一个大厂的学员过来问shadertoy上一些参数的问题&#xff0c;因为我之前用过一段时间Godot引擎&#xff0c; 我清晰记得Godot官方文档有明确的解释&#xff0c;所以整理下发给做特效的同学。 Shadertoy是一个网站&#xff0c;它方便用户编写片段着色器并创造出纯粹的魔法。…

网站排名下降的原因和解决方法(SEO优化失误可能导致网站排名下降)

SEO优化是网站推广的重要环节&#xff0c;它可以提升网站的访问量和排名。但是&#xff0c;SEO优化不当也可能会导致网站排名下降。本文将分析SEO优化失误可能导致网站排名下降的原因&#xff0c;并提供相应的解决方法。 一&#xff1a;标题——SEO优化过度 SEO优化的目的是为…

数据结构与算法--排序算法复习

目录 1.三种常见的简单排序&#xff1a; 1.1冒泡排序 1.2 选择排序 1.3 插⼊排序 2 常见高级排序算法 2.1 希尔排序 2.2 快速排序 2.3 归并排序 2.4计数排序 先上结论&#xff1a; 1.三种常见的简单排序&#xff1a; 1.1冒泡排序 1.⾸先在未排序数组的⾸位开始&#…

spring_javaConfig实现配置

现在我们尝试不使用Spring的XML文件来配置了&#xff0c;全权交给Java来做 1 编写pojo类 这个类要被Spring接管&#xff0c;要被注册到容器中 添加Component注解通过Value注解来为属性注入值 package com.wq.pojo;import org.springframework.beans.factory.annotation.Value…

利用芯片74hc165为单片机增加输入扩展端口proteus仿真arduino

我们前面的博文《输入端口少如何扩展&#xff1f;74hc148或74ls148级联在arduino中实现16转4的应用》介绍了148,148输入后可以立即输出到数码管&#xff0c;可以说它是自带编BCD编码器的。而今天这里我们主要介绍的74hc165是没有编码器&#xff0c;这里我们以proteus为仿真环境…

CMake高级用法实例分析(学习paddle官方的CMakeLists)

cmake基础学习教程 https://juejin.cn/post/6844903557183832078 官方完整CMakeLists cmake_minimum_required(VERSION 3.0) project(PaddleObjectDetector CXX C)option(WITH_MKL "Compile demo with MKL/OpenBlas support,defaultuseMKL." ON) o…

GaussDB(DWS)云原生数仓技术解析:湖仓一体,体验与大数据互联互通

文章目录 前言一、关于数据仓库需求场景分类二、数据仓库线下部署场景2.1、线下部署场景介绍及优劣势说明2.2、线下部署场景对应的客户需求 三、数据仓库公有云部署场景3.1、公有云部署场景介绍及优劣势说明3.2、公有云部署场景对应的客户需求 四、为何重视数据共享&#xff08…

postgresql-视图

postgresql-视图 视图概述使用视图的好处 创建视图修改视图删除视图递归视图可更新视图WITH CHECK OPTION 视图概述 视图&#xff08;View&#xff09;本质上是一个存储在数据库中的查询语句。视图本身不包含数据&#xff0c;也被称为 虚拟表。我们在创建视图时给它指定了一个…

IAM、EIAM、CIAM、RAM、IDaaS 都是什么?

后端程序员在做 ToB 产品或者后台系统时&#xff0c;都不可避免的会遇到账号系统、登录系统、权限系统、日志系统等这些核心功能。这些功能一般都是以 SSO 系统、RBAC 权限管理系统等方式命名&#xff0c;但这些系统合起来有一个专有名词&#xff1a;IAM。 IAM IAM 是 Identi…

数学建模__线性规划Python实现

我使用到的是python库中scipy。 线性规划 #目标函数的系数 # min z 2x13x2-5x3 c np.array([-2,-3,5])#不等式限制条件的系数&#xff0c;转化为小于等于 # 2x1-5x2x3 < 10, x13x2x3<12 Aup np.array([[-2,5,-1],[-1,-3,-1]]) #必须是二维 #右侧系数 bup np.array(…