聊聊模糊测试,以及几种模糊测试工具的介绍!

以下为作者观点:

在当今的数字环境中,漏洞成为攻击者利用系统漏洞的通道,对网络安全构成重大威胁。这些漏洞可能存在于硬件、软件、协议实施或系统安全策略中,允许未经授权的访问并破坏系统的完整性。

根据 "常见漏洞与暴露"(Common Vulnerabilities and Exposures,CVE)的跟踪,漏洞披露的激增令人震惊......

图片

就连开放源代码软件也未能幸免,据Synopsys的一份报告显示,在1481个受检代码库中,84%的代码库至少包含一个开放源代码漏洞。

更令人担忧的是网络犯罪的指数式增长。根据网络安全风险投资公司(Cybersecurity Ventures)的预测,2023年全球网络犯罪成本将达到8万亿美元,到 2025年估计将飙升至10.5万亿美元。

如果以一个国家来衡量,网络犯罪将成为仅次于美国和中国的世界第三大经济体。

这些数字听起来确实很吓人,如今,无论规模大小,没有一家公司能幸免于威胁。每个组织,无论规模大小,都面临着潜在的漏洞风险,危及运营、品牌声誉和收入渠道。

作为一种预防措施,漏洞评估似乎是软件安全不可或缺的组成部分。然而,手动识别漏洞是一个艰巨而耗时的过程,尤其是面对日益复杂的软件。此外,在某些情况下,由于无法直接访问软件源代码,人工审查几乎是不可能的。

解决方案在于能够自动检测漏洞的智能工具,模糊处理就是这样一种方法,它是一种高效、有效的漏洞发现方法。

什么是模糊测试?

模糊测试(又称应用程序模糊测试),可帮助团队发现软件应用程序源代码中的安全漏洞和错误。

有别于静态应用安全测试(SAST)等传统软件测试方法,模糊测试采用了一种独特的方法。

它基本上是用随机输入对代码进行轰炸,目的是引发崩溃从而揭示隐藏的缺陷,否则这些缺陷可能会一直未被发现。这些代码缺陷(包括与业务逻辑相关的问题)标志着容易受到安全威胁的潜在高风险区域。

当出现故障或漏洞时,fuzzer(一种专门用于找出这些崩溃潜在原因的工具)就会介入,针对源代码中的特定弱点进行攻击。

模糊器(fuzzer)擅长于暴露可被 SQL 注入和跨站脚本等攻击利用的漏洞,这些攻击是恶意行为者用来破坏安全、窃取信息或破坏系统的手段。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

什么是简单实用的用例?

假设用户需要在网络表单上输入电子邮件地址。

在传统测试中,通常会验证输入的正确性,确保符合预期格式(例如,包含"@"和域)。

下面是一些经典测试案例:

1.输入一个有效的电子邮件地址(如 "user@example.com")。测试通过,因为它符合预期格式。

2.输入无效的电子邮件地址(如 "user@")。由于格式出乎意料,测试失败。

在某些情况下,甚至可以添加一个额外的测试用例来覆盖空状态,仅此而已。

现在,我们来引入模糊测试。

模糊测试包括注入各种意外的、通常是恶意的输入,以识别漏洞或意外行为。

在这种情况下,模糊测试可能包括以下输入:

  • 很长的电子邮件地址

  • 带有特殊字符的电子邮件地址

  • 域名不完整的电子邮件地址(如 "user@")

  • 带有非标准字符的电子邮件地址(如 "user@ex@mple.com")

  • 非标准编码或编码组合(如URL编码、HTML实体)

模糊测试的目标是确定系统如何处理这些意外输入。模糊测试将揭示传统测试可能忽略的潜在问题,例如:

1.系统无法处理过长的输入,导致潜在的缓冲区溢出。

2.因特殊字符导致注入攻击而产生的安全漏洞。

3.遇到不完整或畸形的电子邮件地址时,系统崩溃或出现意外行为。

4.可能导致跨站脚本 (XSS) 或其他安全漏洞的编码相关漏洞。

在这个例子中,模糊测试有助于发现传统测试可能忽略的漏洞和薄弱环节,最终提高系统的整体稳健性和安全性。在处理现实世界中可能出现的意外输入时,模糊测试尤为重要。

如果你觉得这个例子很有用,那么想象一下,把接受不同输入数据类型的多个输入字段的测试用例结合起来...... 

模糊器如何生成输入数据?

模糊器(fuzzer)旨在测试不同数据类型的各种攻击组合,包括:

  • 数字:包括有符号和无符号整数、浮点数和其他数字数据类型。

  • 字符:模糊测试涉及操作字符数据,如URL、命令行输入和元数据(如用户输入文本,包括ID3标签)。

  • 纯二进制序列:模糊器也可对原始二进制数据进行操作。

通常采用的模糊处理方法是为每种数据类型定义一组 "已知危险值 "或模糊向量,然后注入或组合这些值。例如:

  • 对于整数,可能需要使用零、潜在的负值或极大的数字。

  • 在处理字符数据时,模糊器可能会引入转义或可解释字符和指令。例如,在 SQL 请求中,模糊测试可能涉及测试引号、命令和其他敏感字符。

  • 在二进制数据领域,模糊器经常使用随机二进制序列来发现漏洞和弱点。

模糊测试有哪些主要类型?

模糊测试包括几种主要类型,分别针对被测软件的不同方面,即应用程序协议文件格式模糊测试。

应用程序模糊测试侧重于被测系统的输入和输出。对于桌面应用程序,这包括测试各个方面,例如

  • 用户界面(UI)元素,检查按钮序列和文本输入。

  • 命令行选项,确保正确处理不同的输入参数。

  • 导入和导出功能,特别是文件格式处理(见下文的文件格式模糊测试)。对于网络应用程序,攻击向量可扩展到 URL、表单、用户生成的内容和远程过程调用 (RPC) 请求。

另一方面,协议模糊涉及向被测应用发送篡改或伪造的数据包。在某些情况下,模糊器可能充当代理,在重放请求之前实时更改请求。

这种方法旨在发现网络协议及其实现中的漏洞。

最后,文件格式模糊法用于评估应用程序如何处理不同的文件格式。它生成多个畸形样本并依次打开。当应用程序崩溃时,调试信息会被保留下来,以供进一步分析。

这种文件格式模糊测试主要针对两层:

  • 解析器层(容器层):这将评估文件格式约束、结构、约定、字段大小、标志以及与格式本身相关的其他方面。

  • 编解码器/应用层:这将深入到较低层次的攻击,探测程序更深层次的内部结构。

这种模糊类型并不常见,但近来逐渐受到重视。这类工具和实例包括:

  • 通用文件格式模糊器,如 Ilja van Sprundel 的 "mangle.c",可修改头数据。

  • Zzuf,可用作模糊文件生成器。

  • Hachoir 等工具,可用作开发文件格式模糊器的通用解析器。

这些类型的模糊测试在识别漏洞和加强软件系统安全性方面发挥着至关重要的作用。

模糊测试工具有哪些?

一些免费的开源模糊测试工具,为识别和缓解软件应用程序中的漏洞提供了重要资源:

1.Google OSS-Fuzz

Google的OSS-Fuzz项目是一项开源计划,源于他们在开发Chrome OS和 Chrome浏览器时对模糊测试的广泛使用。

它利用各种模糊引擎,包括AFL++、libFuzzer和Honggfuzz。

兼容C、C++、Rust、Go、Python、Java/JVM等语言,还可能兼容其他语言。

支持x86-64和i386版本,拥有强大的社区支持。

2.FuzzDB

FuzzDB是一个广泛的攻击有效载荷和注入技术库,旨在暴露应用程序中的漏洞。

按平台类型、潜在问题、源暴露等进行分类。

非常适合与可编程模糊引擎一起使用,结合已知和未知的攻击模式。

3.Ffuf(Fuzz Faster U Fool)

Ffuf 是一个用Go编写的模糊引擎,是一个功能强大、基于命令行的工具。

它功能强大,基于命令行,适用于常见的模糊任务,如测试应用程序对未知 GET和POST请求的响应。

定期更新新功能;支持赞助模式,可立即获得更新。

图片

4.Google ClusterFuzz

谷歌的ClusterFuzz用于发现Chrome浏览器中的漏洞,它与OSS-Fuzz项目集成,可以对任何程序或应用程序进行模糊测试。

值得注意的是它的扩展能力,甚至可以运行在10万台虚拟机上进行大规模测试。

图片

5.go-fuzz

备受推崇的模糊平台,用于测试Go语言包,尤其是解析复杂输入的语言包。

对于加强解析来自潜在恶意源(如基于网络的应用程序)的输入的系统而言,该平台非常有价值。

图片

6.Jazzer.js

Jazzer.js是Code Intelligence开发的一款专为Node.js平台定制的覆盖引导型进程内模糊器。

它以libFuzzer为基础,为JavaScript生态系统引入了仪器驱动的突变功能。

它是通过系统识别漏洞来增强Node.js应用程序安全性的理想工具。

模糊测试的优点和局限性

使用Fuzz测试有以下几个优点:

  • 自动化:模糊测试可配置为自动运行测试,只需最少的人工干预,从而节省时间和资源。

  • 系统化方法:模糊测试的随机输入消除了人为偏差,发现了人工测试人员可能遗漏的漏洞。

  • 适用于封闭系统:在封闭系统中,由于内部工作原理模糊不清,模糊测试往往是唯一可行的选择。例如,在人工智能和深度学习等输入输出关系复杂且不明确的应用中,模糊测试是必不可少的。

但是,模糊测试也存在一些局限性:

  • 遗漏某些攻击类型:模糊测试无法有效识别不会导致程序崩溃的安全威胁,如间谍软件、病毒、蠕虫、木马和键盘记录程序。

  • 设置复杂:管理和监控模糊测试需要专业的编码知识和有效的错误处理。

  • 范围有限:模糊测试仅提供错误检测,但不能对安全性、质量和有效性进行全面评估。在软件开发过程中,有必要采用功能测试和 beta 测试等其他测试方法。

结论

软件漏洞对网络安全构成了巨大威胁,CVE 报告和开放源代码漏洞呈指数级增长。网络犯罪的激增进一步加剧了采取强有力安全措施的紧迫性。

漏洞评估至关重要,但人工识别具有挑战性,尤其是在复杂的软件中。模糊测试作为一种自动化、高效的方法,提供了一种令人信服的解决方案。它善于发现隐藏的缺陷并增强安全性,包括各种类型,如应用程序、协议和文件格式模糊测试,从而增强软件的安全性。

虽然模糊测试可能会漏掉某些攻击类型,需要编码方面的专业知识来进行设置和监控,而且只能对软件安全性进行部分评估,但总体而言,模糊测试对于在当今不断变化的威胁环境中确保软件应用程序的安全和降低风险至关重要。它与其他测试方法相辅相成,形成了现代软件安全的整体方法。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

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

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

相关文章

在Linux中nacos集群模式部署

一、安装 配置nacos 在Linux中建立一个nacos文件夹 mkdir nacos 把下载的压缩包拉入刚才创建好的nacos文件中 解压 tar -zxvf nacos-server-1.4.1\.tar.gz 修改配置文件 进入nacos文件中的conf文件的cluster.conf.example 修改cluster.conf.example文件 vim cluster.conf.exa…

Django(六、模板层)

文章目录 模板传值模板语法传值特性 模板语法之过滤器常用的过滤器模板层之标签模板中的标签的格式为标签之if判断 标签之for循环模板的继承与导入模板导入导入格式 模板传值 """ 模板层三种语法 {{}}:主要与数据值相关 {%%}:主要与逻辑相关 {##}:模…

【开源】基于Vue和SpringBoot的快乐贩卖馆管理系统

项目编号: S 064 ,文末获取源码。 \color{red}{项目编号:S064,文末获取源码。} 项目编号:S064,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 搞笑视频模块2.3 视…

Linux常用的磁盘使用情况命令汇总

1、查看分区使用百分比 df -h 2、查看指定目录磁盘使用情况 du -hac --max-depth1 /opt 参数:-a 查看所有文件,-c 汇总统计,max-depth1 查看深度为1,2级目录不再统计。 3、常用统计命令汇总

一键帮您解决win11最新版画图工具难用问题!

🦄个人主页:修修修也 ⚙️操作环境:Windows 11 正文 自从win11更新后,新版的画图工具变得非常难用,如: 使用橡皮擦后露出背版马赛克 框住某部分拖动移动时背景露出马赛克剪贴板上图片信息无法直接插入到画图板 目前没有一个好一些的能够在软件内部解决这些问题的方…

参考意义大。4+巨噬细胞相关生信思路,简单易复现。

今天给同学们分享一篇生信文章“Angiogenesis regulators S100A4, SPARC and SPP1 correlate with macrophage infiltration and are prognostic biomarkers in colon and rectal cancers”,这篇文章发表在Front Oncol期刊上,影响因子为4.7。 结果解读&a…

软件测试个人求职简历该怎么写,模板在这里

1、个人资料 姓 名:xxx 性 别:x 手机号码:138888888xx 邮 箱: xxx 学 历:本科 专 业:电子商务 英 语:四级 当前工作:测试工程师 从业时间:4年 期望薪资:…

HDFS入门--学习笔记

1,大数据介绍 定义 数据指的是:一种可以被鉴别的、对客观事件进行记录的符号,除了可以是最简单的 数字外,也可以是各类符号、文字、图像、声音等。 通俗地说,数据就是对人类的行为及发生事件的一种记录。 存在的价值…

使用群晖虚拟机快速搭建黑群晖并在公网移动端环境下使用软件

文章目录 前言本教程解决的问题是:按照本教程方法操作后,达到的效果是前排提醒: 1. 搭建群晖虚拟机1.1 下载黑群晖文件vmvare虚拟机安装包1.2 安装VMware虚拟机:1.3 解压黑群晖虚拟机文件1.4 虚拟机初始化1.5 没有搜索到黑群晖的解…

Mysql中的索引与事务和B树的知识补充

索引与事务和B树的知识补充 一.索引1.概念2.作用3.使用场景4.使用 二.事务1.为什么使用事务2.事务的概念3.使用3.1脏读问题3.2不可重复读3.3 幻读问题3.4解决3.5 使用代码 三.B树的知识补充1.B树2.B树 一.索引 1.概念 索引是一种特殊的文件,包含着对数据表里所有记…

QGIS之二十栅格数据定义投影

效果 步骤 1、准备数据 2、定义投影 Qgis工具箱中搜索“投影” 指定投影坐标系,例如EPSG:4549 运行 3、结果 查看属性

【Qt-23】基于QCharts绘制曲线图

一、QChart简介 QChart是Qt中专门用于绘制图表的模块,支持折线图、柱状图、饼图等常见类型。其主要组成部分有: QChart:整个图表的容器,管理图表中的所有数据和图形属性QChartView:继承自QGraphicsView,用于…

day2324_jdbc

今日内容 零、 复习昨日 一、作业 二、SQL注入 三、PreparedStatement 四、事务 五、DBUtil 零、 复习昨日 一、引言 1.1 如何操作数据库 使用客户端工具访问数据库,需要手工建立连接,输入用户名和密码登录,编写 SQL 语句,点击执行…

基于MS16F3211芯片的触摸控制灯的状态变化和亮度控制(11.15)

1.任务所需实现基本功能 关机状态时白灯亮蓝灯灭,此时长按按键无反应,白灯亮度降低的状态,蓝灯保持灭的状态。点按按键一次,白灯熄灭,蓝灯亮此时W引脚控制的灯亮。继续点按按键。蓝灯亮,此时W引脚控制的灯…

9.3 【MySQL】系统表空间

了解完了独立表空间的基本结构,系统表空间的结构也就好理解多了,系统表空间的结构和独立表空间基本类似,只不过由于整个MySQL进程只有一个系统表空间,在系统表空间中会额外记录一些有关整个系统信息的页面,所以会比独立…

python之 flask 框架(2)项目拆分的 执行逻辑

项目的结构图 app.py # 导入__init__.py 比较特殊 from APP import create_appapp create_app() if __name__ __main__:app.run(debugTrue)init.py # __inti__.py # 初始化文件,创建Flask应用 from flask import Flask from .views import bluedef create_ap…

多媒体播放器Infuse mac中文版软件特点

Infuse mac是一款多媒体播放器应用,它支持播放多种格式的视频文件、音频文件和图片文件,并且可以通过AIrPlay将媒体内容投放到其他设备上。Infuse还支持在线视频流媒体播放和本地网络共享,用户可以通过它来访问家庭网络上的媒体文件。 Infuse…

【银行测试】支付功能、支付平台、支持渠道如何测试?

有朋友提问:作为一个支付平台,接入了快钱、易宝或直连银行等多家的渠道,内在的产品流程是自己的。业内有什么比较好的测试办法,来测试各渠道及其支持的银行通道呢? 作为产品,我自己办了十几张银行卡方便测…

Python数据容器(字典)

字典 1.字典的定义2.字典数据的获取3.字典的嵌套4.嵌套字典的内容获取5.字典的常用操作6.常用操作总结7.遍历字典8.练习 1.字典的定义 同样使用{},不过存储的元素是一个一个的:键值对,语法如下 # 定义字典字面量 {key:value,key:value,...,…

2年博士后|心外医生赴美国耶鲁大学开展研究

G医生决定放弃申报CSC,改为自费出国,并在美国密歇根大学安娜堡分校和耶鲁大学两所名校中选择了更为出名的后者。因为不是CSC出资,G医生得以通过签证,顺利出国,实现了在世界知名高校从事2年博士后的个人职业规划目标。 …