Web应用安全测试-防护功能失效

news2025/7/19 17:58:25

Web应用安全测试-防护功能失效

1、账号弱锁定机制

漏洞描述:系统帐号锁定时间太短

测试方法:登录时多次输入错误密码,触发账户锁定机制,查看锁定时间是否低于3分钟。

风险分析:若账户锁定时间过短,攻击者仍可利用其进行暴力破解。

风险等级:

低危:账户在多次尝试失败后锁定时间低于 3 分钟

修复方案:建议在不影响业务的前提下,账户在多次尝试失败后锁定时间不低于3分钟。

注意事项:暂无

2、图形验证码可自动获取

漏洞描述:图形验证码过于简单,可使用工具自动化识别。

测试方法:利用Python Image Library、tesseract-ocr、pytesser等python第三方库,经过二值化、文字分割等操作识别验证码。

风险分析:验证码通常使用一些线条和一些不规则的字符组成,这些字符通常同时包含字母和数字。但有些Web程序设计的验证码较简单,仅由数字或字母组成,且生成的验证码字符排列规整,很容易被程序自动识别。

风险等级:

中危:图形验证码可被自动化识别,且成功率高于95%。

修复方案:使用安全性强的验证码,验证码应从以下方面保证其安全性:验证码长度不低于4位,至少同时包含数字、字母或汉字,增加干扰因素比如线条,避免使用容易被程序自动识别的验证码,验证码不应返回到客户端。

注意事项:暂无

3、图形验证码绕过

漏洞描述:图形验证码可被绕过,执行暴力破解等操作。

测试方法:

  1. 验证码和用户名、密码是否一次性、同时提交给服务器验证,如果是分开提交、分开验证,则存在漏洞。
  2. 在服务器端,是否只有在验证码检验通过后才进行用户名和密码的检验,如果不是说明存在漏洞。(检测方法:输入错误的用户名或密码、错误的验证码。观察返回信息,是否只提示验证码错误,也就是说当验证码错误时,禁止再判断用户名和密码。)
  3. 验证码是否为图片形式且在一张图片中,不为图片形式或不在一张图片中,说明存在漏洞,完成检测。
  4. 生成的验证码是否可以通过html源代码查看到,如果可以说明存在漏洞,完成检测。
  5. 生成验证码的模块是否根据提供的参数生成验证码,如果是说明存在漏洞,完成检测。
  6. 请求10次观察验证码是否随机生成,如果存在一定的规律(例如5次后出现同一验证码)说明存在漏洞,完成检测。
  7. 验证码在认证一次后是否立即失效。

风险分析:图形验证码一般是防止使用程序恶意注册、暴力破解用户名密码或者批量发帖而设置的。在页面初始化时服务器向页面发送一个随机字符串,同时在Session里也保存一份,当用户提交时将随机数一起post到后台,通过与Session中保存的值对比,如果不相同,则有可能是恶意攻击。

风险等级:

中危:验证码可多次使用、发现特权验证码、前端校验、返回验证码、返回带有验证码信息的图片。

修复方案:

  1. 系统在开发时注意验证识别后销毁session中的验证码。
  2. 限制用户提交的验证码不能为空
  3. 判断提交的验证码与服务器上存储的是否一致
  4. 禁止将验证码明文信息发送至客户端

注意事项:暂无

4、短信验证码绕过

漏洞描述:短信验证码可被绕过,执行其他操作。

测试方法:

  1. 请求发送短信,填写任意验证码,然后提交其他操作请求,将验证码参数置空或删除,测试是否可绕过检测;
  2. 尝试特权验证码,如000000、111111等;
  3. 同一个短信验证码是否能使用多次;

风险分析:修改/重置密码、交易操作等功能通常需要短信验证码,若验证码可绕过,攻击者可利用该漏洞进行重置他人密码或转账等危险操作。

风险等级:

中危:验证码可多次使用或发现特权验证码

修复方案:

  1. 若存在特权验证码,建议将其删除;
  2. 应用服务端应严格校验验证码参数是否为空,格式是否正确;
  3. 关键操作每提交一次请求,应发送新的短信验证码,并且不可继续使用旧的验证码。

注意事项:暂无

5、短信验证码可暴力破解

漏洞描述:短信验证码位数太短或有效期太长导致可暴力破解

测试方法:点击发送短信验证码,输入任意验证码,提交请求,使用burpsuite拦截请求,在intruder模块设置验证码参数为枚举变量,这是payload类型为numbers,对验证码进行暴力破解。

风险分析:修改/重置密码、交易操作等功能通常需要短信验证码,若验证码可暴力破解,攻击者可利用该漏洞进行重置他人密码或转账等危险操作。

风险等级:

中危:手机短信验证码小于 6 位、有效期大于 1 分钟、验证错误次数无限制

修复方案:

  1. 短信验证码不少于6位;
  2. 有效期不超过1分钟;
  3. 验证码错误次数超过上限应采取账户锁定策略。

注意事项:暂无

6、参数覆盖

漏洞描述:参数覆盖,也叫对象自动绑定漏洞。许多框架均支持对象自动绑定,比如Spring MCV, 它允许将HTTP请求参数自动的绑定到对象,攻击者可以添加额外的HTTP请求参数,如果开发人员在处理业务逻辑时缺少安全校验就会导致参数覆盖问题。

测试方法:下面举一个具体的攻击场景:

这是国内某p2p平台账户余额功能

在账户余额的首页我们注册了账号进去以后发现余额是0元,需要充值才能进行投资理财然后提现。

在充值的页面可以同步余额,经过分析发现这个功能就是把平台上的钱和银行里账户的钱同步一致。这个p2p平台使用的是江西银行来保存客户资金所以最终同步的结果就是江西银行账号的钱和平台的钱一样。经过长期分析发现这个地方不存任何漏洞,然后继续往下看。

找到了一个用户地址的设置功能。

这是从burp response回来的数据包,通过对这个数据包的分析,发现请求的数据包和返回的数据包参数不一致。换句话说返回的数据包里面参数比请求的数据包多了几个字段其中有email字段和jdbalance字段。具体的测试操作就是在请求的数据包中把多出来的字段加入进去然后观察。

上面是请求的数据包,用burp截断返回数据包的方式看下返回的数据包

返回的金额变成了100.00。 这个时候并不代表真的达到了数据污染的目的。然后去余额账户里面看一下。

点击刷新以后我们发现余额和总资产已经变成了100。后面我们重复了前面开始的操作同步平台上账户里面的钱到银行然后在通过平台成功提现100。

风险分析:常见的所有输入的地方都会出现这个漏洞,攻击者可利用该漏洞修改任意用户信息,篡改金额等。

风险等级:

【高危】

修复方案:建议从以下三个方面进行修复:

DTO

public class companyInfo {

private String xxx;

private String xxx;

     //private String companyName;

  

     //Getters & Setters

   }

白名单

@Controller

  public class companyInfoController

  {

     @InitBinder

     public void initBinder(WebDataBinder binder, WebRequest request)

     {

        binder.setAllowedFields(["xxx","xxx","xxx"]);

     }

 

     ...

  }

黑名单

@Controller

  public class companyInfoController

  {

     @InitBinder

     public void initBinder(WebDataBinder binder, WebRequest request)

     {

        binder.setDisallowedFields(["companyName"]);

     }

 

     ...

  }

注意事项:暂无

7、关键逻辑判断前端验证

漏洞描述:关键逻辑仅在前端Javascript处进行验证,导致攻击者可以绕过前端验证直接向服务端提交数据。

测试方法:

  1. 开启代理软件拦截请求功能,查看关键逻辑判断是发生在前端还是向服务端发送请求去验证;
  2. 若在前端验证,则可通过禁用javascript绕过前端检测,或先在前端输入符合条件的数据,然后拦截请求包,修改参数。

风险分析:关键逻辑判断前端验证通常发生在上传文件时校验文件格式、验证表单输入内容是否合法、验证码校验等场景。攻击者可利用该漏洞上传任意文件、插入跨站脚本等。

风险等级:

高危:前端进行校验,绕过之后可执行后续业务操作/获取服务器权限/修改用户信息/修改业务数据/验证码本地校验。

中危:前端进行校验,绕过用户名密码组成规则或对业务影响不大。

修复方案:建议在不影响业务的前提下,关键业务逻辑放在服务端判断。

注意事项:暂无

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

洋人道歉,「国产」出品,全球最强端侧多模态大模型!(懒人包)

最近,在AI圈发生了一件大事,那就是斯坦福AI团队因抄袭清华系开源大模型而引起了国际社交平台上的巨大争议。事件的核心围绕一款名为“Llama3-V”的斯坦福团队开发的多模态大模型,该模型一经发布,便以其低成本高效率的特性&#xf…

广州酒吧安全管理:蓝牙可燃气体报警器的实践与检定

随着现代都市生活的丰富多样,酒吧已成为人们休闲娱乐的重要场所。然而,酒吧内大量使用的燃气设备也带来了不小的安全隐患。 如何在确保顾客享受愉悦时光的同时,保障他们的生命财产安全,成为广州各大酒吧经营者亟待解决的问题。 …

数据结构 实验 2

题目一:遍历二叉树 一、实验目的 熟练掌握指针变量、链表的含义掌握二叉树的结构特性,以及二叉链表的存储方式的特点掌握用递归的方法处理二叉树的基本算法掌握二叉树的四种遍历方式(先序、中序、后序、按层次) 二、实验步骤 …

Unity资源 之 最受欢迎的三消游戏开发包 - Bubble Shooter Kit 【免费领取】

三消游戏开发包 - Bubble Shooter Kit 免费领取 前言资源包内容领取兑换码 前言 如果你是一名 Unity 游戏开发者,并且正在寻找一种快速、简单的方式来创建自己的三消游戏,那么 Bubble Shooter Kit 就是你所需要的。 资源包内容 Bubble Shooter Kit 是…

typora+Picgo使用Lsky pro搭建本地服务图床

typoraPicgo使用Lsky pro搭建本地服务图床 Picgo下载lankong插件lankong插件安装Auth token获取 Picgo测试typora测试问题说明 Picgo下载 Picgo下载:https://github.com/Molunerfinn/PicGo/releases,注意:请直接使用尝鲜版,正式版…

【kaggle量化交易第一名方案】Trading at the Close

2024 1st Place Solution Overview 最终模型(CV/Private LB为5.8117/5.4030)是CatBoost(5.8240/5.4165)、GRU(5.8481/5.4259)和Transformer(5.8619/5.4296)的组合,权重分别为0.5、0.3、0.2,从验证集中搜索得到。这些模型共享相同的300个特征。 此外,在线学习(On…

2024【大模型】国内市场如何?程序员该何时入局?

1.市场形势 根据最新的市场研究报告,2023年中国的大模型市场呈现出显著的发展趋势和广阔的前景。以下是关于中国大模型市场的几个关键点: 市场规模和增长:2023年,中国AI大模型行业的市场规模达到了147亿元人民币,预计…

stable-diffusion 3 体验部署流程(ComfyUI)

环境准备 下载及简介 git clone https://huggingface.co/stabilityai/stable-diffusion-3-medium SD3 checkpoints: sd3_medium_incl_clips.safetensors (5.5GB)sd3_medium_incl_clips_t5xxlfp8.safetensors (10.1GB)sd3_medium.safetensors (4.3GB) 前两个可以…

RK3568笔记三十二:PaddleSeg训练部署

一、环境 1、Autodl配置 PyTorch 1.7.0Python 3.8(ubuntu18.04)Cuda 11.02、所需环境需求 - OS: 64-bit - Python 3(3.6/3.7/3.8/3.9/3.10),64-bit version - pip/pip3(9.0.1),64-bit version - CUDA > 10.2 - cuDNN > 7.6 - PaddlePaddle (the…

qmt量化交易策略小白学习笔记第28期【qmt编程之获取财务数据列表--十大股东和股东数】

qmt编程之获取财务数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 感谢关注,咨询免费开通量化回测与获取实盘权限,欢迎和博主联系! 十大股东/十大流通…

数据结构-稀疏数组

稀疏数组是一种特殊的数据结构,主要用于存储那些大部分元素为零或者未使用的大型数组。以下是关于稀疏数组的详细知识点,按照分点表示和归纳的方式整理: 一、定义 稀疏数组是指那些大部分内容值为空(通常为0)的数组。…

【Spring6】13-19章 JdbcTemplate+代理模式+AOP+Spring事务+Spring集成MyBatis

十三、JdbcTemplate JdbcTemplate是Spring提供的一个JDBC模板类,是对JDBC的封装,简化JDBC代码。 当然,你也可以不用,可以让Spring集成其它的ORM框架,例如:MyBatis、Hibernate等。 接下来我们简单来学习一下…

【网络编程】TCP原理

TCP套接字中的I/O缓冲 write函数调用后并非立即传输数据,read函数调用后也非马上接收数据。write函数调用瞬间,数据将移至输出缓冲;read函数调用瞬间,从缓冲读取数据。 这些IO缓冲特性可整理如下。 口IO缓冲在每个TCP套接字中单…

人工智能发展历程和工具搭建学习

目录 人工智能的三次浪潮 开发环境介绍 Anaconda Anaconda的下载和安装 下载说明 安装指导 模块介绍 使用Anaconda Navigator Home界面介绍 Environment界面介绍 使用Jupter Notebook 打开Jupter Notebook 配置默认目录 新建文件 两种输入模式 Conda 虚拟环境 添…

C#开发-集合使用和技巧(一)常用集合和方法介绍

C#开发-集合使用和技巧 &#xff08;一&#xff09;常用集合和方法介绍常用集合和方法介绍 C#开发-集合使用和技巧1. 集合基础集合介绍集合跟数组对比 2.我们常用的集合类型列表List<T>键值对集合Dictionary<TKey,TValue>队列Queue<T>其他一些集合类型堆栈St…

04-让LLM理解知识 -Prompt

1 Prompt Prompt 可理解为用于指导AI模型生成特定类型、主题或格式内容的文本。在NLP中&#xff0c;Prompt 通常由一个问题或任务描述组成&#xff0c;例如“给我写一篇有关RAG的文章”&#xff0c;这句话就是Prompt。 Prompt赋予了LLM小样本甚至零样本学习的能力。 大模型的…

07 SpringBoot 配置绑定

所谓“配置绑定”就是把配置文件中的值与 JavaBean 中对应的属性进行绑定。通常&#xff0c;我们会把一些配置信息&#xff08;例如&#xff0c;数据库配置&#xff09;放在配置文件中&#xff0c;然后通过 Java 代码去读取该配置文件&#xff0c;并且把配置文件中指定的配置封…

TF-IDF算法:从文本中发现价值的黄金法则

TF-IDF算法 一、简介二、TF-IDF算法原理2.1 词频&#xff08;TF&#xff09;2.2 逆文档频率&#xff08;IDF&#xff09;2.3 TF-IDF的计算 三、TF-IDF算法应用3.1 搜索引擎3.2 文本分类3.3 信息提取3.4 文本摘要 四、TF-IDF算法的改进4.1、TF-IDF算法的改进4.1.1. 基于词的权重…

DC12V升压24V/5A电流 布控球产品应用 升压恒压SL4010耐压40V芯片

随着科技的不断发展&#xff0c;布控球作为一种高效、精准的安全监控设备&#xff0c;被广泛应用于公安、消防、交通等多个领域。然而&#xff0c;布控球在工作过程中需要稳定的电源供应&#xff0c;以保证其正常运行和长期稳定性。因此&#xff0c;一款性能优良的升压恒压芯片…

百度地图3.0截图,下载(解决图形下载偏移的问题)

百度地图应用3.0开发的页面&#xff0c;需要截图并下载的功能。前端采用html2canvas生成base64图片 由于百度地图绘制多边形是svg&#xff0c;而html2canvas不支持生成。不绘制线的截图是正常的&#xff0c;绘制了线条就会出现偏移。以下是对比&#xff0c;上一张是正常的&…