Web应用安全测试-业务逻辑缺陷

Web应用安全测试-业务逻辑缺陷

密码修改/重置流程跨越

漏洞描述:密码修改功能常采用分步骤方式来实现,攻击者在未知原始密码的情况下绕过某些检验步骤修改用户密码。

测试方法:

  1. 完成修改/重置密码的正常流程;
  2. 绕过检验原密码等步骤,直接访问输入新密码页面,输入新密码,修改/重置密码。

风险分析:有些密码修改/重置流程采用step=1、step=2类似的方式实现,如果应用校验不全面,攻击者可绕过前面的步骤,直接访问最后一步,输入新密码进行修改/重置。

风险等级:

高危:绕过原密码验证或绕过验证码

修复方案:一次性填写校验信息(原始密码、新密码等)后再提交修改/重置密码请求。

注意事项:暂无

负值反冲

漏洞描述:应用程序未校验订单数据的取值范围,交易存在负值反冲。

测试方法:提交订单时拦截请求,修改订单参数为负数,如商品单价、数量、总价等。

风险分析:通过篡改订单参数,使得订单金额为负值,在使用余额支付时余额反而增加。

风险等级:

高危:未对数据进行校验,导致业务数据被污染。

修复方案:

  1. 服务器端在生成交易订单时,商品的价格从数据库中取出,禁止使用客户端发送的商品价格。
  2. 服务器端对客户端提交的交易数据(如商品ID、商品数量、商品价格等)的取值范围进行校验,将商品ID和商品价格与数据库中的数据对比校验,商品数量为大于零的整型数。
  3. 服务器端在生成支付订单时,对支付订单中影响支付金额的所有因素(比如商品ID、商品数量、商品价格、订单编号等)进行签名,对客户端提交的支付订单进行校验。

注意事项:暂无

正负值对冲

漏洞描述:应用程序未校验订单数据的取值范围,交易存在正负值对冲。

测试方法:提交订单(包含多种商品)时拦截请求,修改部分商品的单价或数量,保证订单总金额为正数。

风险分析:由于应用会校验订单总金额的取值范围,所以在保证该条件满足的前提下,修改个别商品的数量,达到正负值对冲。

风险等级:

高危:未对数据进行校验,导致业务数据被污染。

修复方案:

  1. 服务器端在生成交易订单时,商品的价格从数据库中取出,禁止使用客户端发送的商品价格。
  2. 服务器端对客户端提交的交易数据(如商品ID、商品数量、商品价格等)的取值范围进行校验,将商品ID和商品价格与数据库中的数据对比校验,商品数量为大于零的整型数。
  3. 服务器端在生成支付订单时,对支付订单中影响支付金额的所有因素(比如商品ID、商品数量、商品价格、订单编号等)进行签名,对客户端提交的支付订单进行校验。

注意事项:暂无

业务流程跳跃

漏洞描述:业务逻辑流程分步骤进行且能越过中间校验步骤直接进行后续操作,导致中间校验等步骤失效。

测试方法:

  1. 首先完成正常的业务逻辑步骤,获取每一个步骤的请求;
  2. 绕过中间步骤,直接访问最后一个或几个验证请求,看是否可绕过。

风险分析:攻击者可利用该漏洞绕过业务流程检测,进行非法修改他人密码等危险操作。

风险等级:

高危:绕过前面的校验步骤,直接跳转至后面的校验步骤。

修复方案:建议在不影响业务的前提下,在Session中添加对每一步流程页面的校验标志位,在新步骤页面浏览过程中,仅能够顺序执行页面校验,不可进行跳步操作,例如:页面二完成后,应更新Flag=3,则仅能够打开页面三。

注意事项:暂无

通配符注入

漏洞描述:允许使用通配符构造语句查询数据库,导致拒绝服务攻击问题。

测试方法:模糊查询时输入第一个字符'%'或'_',sql会遍历全表,导致应用访问缓慢。

风险分析:SQL中通配符的使用如下:

%包含零个或多个字符的任意字符串。

_任何单个字符。

[]指定范围(例如 [a-f])或集合(例如 [abcdef])内的任何单个字符。

[^]不在指定范围(例如 [^a - f])或集合(例如 [^abcdef])内的任何单个字符。

在模糊查询LIKE中,对于输入数据中的通配符必须转义,否则会造成客户想查询包含这些特殊字符的数据时,这些特殊字符却被解析为通配符,数据库响应缓慢,导致拒绝服务攻击。

风险等级:

中危:通配符注入引发数据库响应缓慢

修复方案:有两种将通配符转义为普通字符的方法:

1)   使用ESCAPE关键字定义转义符(通用)

在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串 5% 的字符串,请使用:

       

 WHERE ColumnA LIKE '%5/%%' ESCAPE '/'

2)   在方括号 ([ ]) 中只包含通配符本身,或要搜索破折号 (-) 而不是用它指定搜索范围,请将破折号指定为方括号内的第一个字符。例如:

符号

含义

LIKE '5[%]'

5%

LIKE '5%'

5 后跟 0 个或多个字符的字符串

LIKE '[_]n'

_n

LIKE '[ [ ]'

[

LIKE ']'

]   (右括号不需要转义)

所以,对输入参数的关键字过滤后,还需要做下面转换确保LIKE的正确执行

private static string ConvertSqlForLike(string sql)

{

sql = sql.Replace("[",

"[[]");

// 这句话一定要在下面两个语句之前,否则作为转义符的方括号会被当作数据被再次处理

sql = sql.Replace("_",

"[_]");

sql = sql.Replace("%",

"[%]");

returnsql;

}

注意事项:暂无

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器视觉:光源的类型以及主要参数

光源在机器视觉中起着决定性的作用,决定了视觉算法的复杂性,也决定了视觉系统的精度和稳定性。光源用于突出目标物体的特征,增加目标物体与背景的对比度,克服环境光线的干扰。光源的选择与打光方式在视觉系统的前期评估中非常重要…

自然语言处理领域的重大挑战:解码器 Transformer 的局限性

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

frp55版本如何配置泛域名

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 前言 之前配置的好好的frp,结果到用的时候不能用了,直接影响了我早上的一堆rss订阅源不能用,群里的新闻简报也没有正常推送,今天又翻出来捋…

如何将NextJs中的File docx保存到Prisma ORM

背景/引言 在现代 Web 开发中,Next.js 是一个备受欢迎的 React 框架,它具有许多优点,如: 服务器端渲染 (SSR):Next.js 支持服务器端渲染,可以提高页面加载速度,改善 SEO,并提供更好…

计算机网络 —— 运输层(UDP和TCP)

计算机网络 —— 运输层(UDP和TCP) UDPTCPUDP和TCP的异同点相同点不同点 我们今天来看运输层的两个重要的协议——UDP和TCP UDP UDP,全称为用户数据报协议(User Datagram Protocol),是互联网中一种核心的…

Day07-06_13【CT】LeetCode手撕—1. 两数之和

目录 题目1-思路2- 实现⭐1. 两数之和——题解思路 3- ACM实现 题目 原题连接:1. 两数之和 1-思路 哈希表 利用哈希表存储 key 数组元素值 ——> value 数组下标遍历数组 2- 实现 ⭐1. 两数之和——题解思路 class Solution {public int[] twoSum(int[] nums…

【MySQL】E-R图-关系数据模型-3NF--精讲+练习(巨全面)

一.知识储备 E-R图 E-R图,即实体-关系图(Entity-Relationship Diagram),是数据库建模的一种工具,用于表示实体类型、属性以及它们之间的关系。 在E-R图中,实体用矩形表示,属性用椭圆表示&…

【精品方案】离散型制造行业智能工厂标准解决方案(49页 PPT)

引言:随着科技的不断进步和制造业的转型升级,离散型制造行业正面临着从传统制造向智能制造转型的迫切需求。离散型制造行业涉及的产品种类繁多,生产流程复杂,对生产效率、产品质量和成本控制有着极高的要求。因此,开发…

Nginx部署Vue项目css文件能加载但是不生效

目录 问题描述问题解决 问题描述 Nginx部署打包后的Vue项目css文件能加载但是不生效, 问题解决 查看响应标头,发现不对劲, Content-Type: text/plain正确的应该是 Content-Type: text/css根本原因是nginx没有告诉浏览器正确的文件类型 所…

大厂Java面试题:详细描述MyBatis缓存的实现原理

大家好,我是王有志。今天给大家带来的是一道来自光大科技的 MyBatis 面试题:详细描述MyBatis缓存的实现原理。 在通过源码分析 MyBatis 一二级缓存的实现原理前,我先给出我的回答。 首先是 MyBatis 一级缓存的实现原理: MyBaits…

vscode插件开发之 - menu配置

上一遍博客介绍了如何从0到1搭建vscode插件开发的base code,这遍博客将重点介绍如何配置menu。通常,开发一款插件,会将插件显示在VSCode 左侧的活动栏(Activity Bar),那么如何配置让插件显示在Activity Bar…

[Shell编程学习路线]——深入理解Shell编程中的变量(理论与实例)

🏡作者主页:点击! 🛠️Shell编程专栏:点击! ⏰️创作时间:2024年6月12日11点40分 🀄️文章质量:95分 文章目录 ————前言———— 1 自定义变量 🫠…

数据结构笔记39-48

碎碎念:想了很久,不知道数据结构这个科目最终该以什么笔记方式呈现出来,是纸质版还是电子版?后来想了又想,还是电子版吧?毕竟和计算机有关~(啊哈哈哈哈哈哈哈) 概率论已经更新完了&…

为国产加油:“缺芯少屏”暂缓,另一领域,也要加把劲

说起咱中国之前的“缺芯少屏”,真的是让人挺闹心的。 不过呢,为了改变这个状况,咱们的工程师们可是费了不少劲儿,辛辛苦苦努力了数十年。现在好了,咱们也迎来了柔性屏的时代。 柔性屏 说起来,在触摸屏或者…

消费者消费数据时报错:INVALID_REPLICATION_FACTOR

今天部署了kafka集群,三台服务器,启动后,生产者发送数据,消费者接收数据的时候报错,INVALID_REPLICATION_FACTOR。 查了很多资料,说是要改kafka下config目录的server.properties,可能是副本数太小&#xff…

【MATLAB源码-第225期】基于matlab的计算器GUI设计仿真,能够实现基础运算,三角函数以及幂运算。

操作环境: MATLAB 2022a 1、算法描述 界面布局 计算器界面的主要元素分为几大部分:显示屏、功能按钮、数字按钮和操作符按钮。 显示屏 显示屏(Edit Text):位于界面顶部中央,用于显示用户输入的表达式和…

Python学习打卡:day05

day5 笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了 目录 day538、函数的初体验39、函数的基础定义语法函数的定义注意事项 40、函数的基础定义案例练习41、函数的传入参数42、函数的传入参数案例练习——升…

python django初步搭建(一)

记录一次简单的python django使用,后续调用api相关的暂时不想写。。。 一、环境 windows python 3.11.7 django 二、初步搭建 2.1 新建空文件夹 为了方便本次记录,新建了一个空的文件夹来使用。 直接在这里输入cmd 然后按下回车 2.2 安装virtual…

Kubernetes集群持久化部署实践

WordPress 网站持久化部署 要持久化MariaDB 可以把 Deployment 改成了 StatefulSet,修改 YAML添加“serviceName”“volumeClaimTemplates”这两个字段,定义网络标识和 NFS 动态存储卷,然后在容器部分用“volumeMounts”挂载到容器里的数据目…

利用three-csg-ts对做物体交互式挖洞

默认物体均为居中,如果指定位置没有发生偏移,可能是因为在执行布尔操作之前没有正确设置变换。确保在进行布尔运算之前应用所有必要的变换。以下是经过修正的完整代码示例,它会确保圆柱正确旋转并与盒子进行 CSG 操作。 安装依赖 首先&…