声明:本篇文章为自学,如有错误请指正,部分内容是从网络中查找。
什么是模糊测试?
模糊测试(又称应用程序模糊测试),可帮助团队发现软件应用程序源代码中的安全漏洞和错误。
它基本上是
用随机输入对代码进行轰炸,目的是引发崩溃,
从而揭示隐藏的缺陷,否则这些缺陷可能会一直未被发现。这些代码缺陷(包括与业务逻辑相关的问题)标志着容易受到安全威胁的潜在高风险区域。
//模糊测试(Fuzzing)是一种通过向目标系统输入非预期数据并监测异常结果以发现软件漏洞的自动化测试方法,由Baron Miller于1989年首次实证应用于Unix工具测试。其核心原理是生成随机或半随机数据作为输入,触发程序崩溃、内存错误等异常行为,从而暴露代码缺陷,适用于系统安全漏洞发掘。
模糊测试流程
模糊测试通常包含下面几个基本阶段:
-
确定测试目标:确定目标程序的性质、功能、运行条件和环境、编写程序的语言、软件过去所发现的漏洞信息以及与外部进行交互的接口等
-
确定输入向量:例如文件数据、网络数据和环境变量等。
-
生成模糊测试数据:在确定输入向量之后设计要模糊测试的方法和测试数据生成算法等
-
执行模糊测试数据:自动完成向测试目标发送大量测试数据的过程,包括启动目标进程、发送测试数据和打开文件等
-
监视异常:监视目标程序是否产生异常,记录使程序产生异常的测试数据和异常相关信息
-
判定发现的漏洞是否可被利用:通过将产生异常的数据重新发送给目标程序,跟踪异常产生前后程序相关的处理流程,分析异常产生的原因,从而判断是否可利用
基本要求
要实现高效的模糊测试,通常需要满足下面几个方面的要求:
-
可重现性:测试者必须能够知道使目标程序状态变化所对应的测试数据是什么,如果不具备重现测试结果的能力,那么整个过程就失去了意义。实现可重现性的一个方法是在发送测试数据的同时记录下测试数据和目标程序的状态
-
可重用性:进行模块化开发,这样就不需要为一个新的目标程序重新开发一个模糊测试器
-
代码覆盖:指模糊测试器能够使目标程序达到或执行的所有代码及过程状态的数量
-
异常监视:能够精确地判定目标程序是否发生异常非常的关键
工具(这里主要讲Radamsa)
1.fuzzer
当出现故障或漏洞时,
fuzzer(一种专门用于找出这些崩溃潜在原因的工具)就会介入,针对源代码中的特定弱点进行攻击。
模糊器(fuzzer)擅长于暴露可被
SQL 注入和
跨站脚本等攻击利用的漏洞,这些攻击是恶意行为者用来破坏安全、窃取信息或破坏系统的手段。
2.Ffmepg
自动生成大量畸形或边界情况的音视频文件,尝试让 FFmpeg 在解码时崩溃、越界、泄漏内存或触发漏洞。
将安装路径放path里面。
3.Radamsa
Radamsa 是一个轻量级、通用的
文件格式模糊测试工具,由芬兰安全研究人员开发,属于
变异型模糊器;
//Radamsa 是一个简单高效的文件变异工具,用于生成畸形文件以测试程序在解析文件格式时的健壮性和安全性。
特点:
-
无需目标源码:适用于黑盒测试。 // 黑盒测试: 把被测系统当成一个“黑盒子”,你看不见里面的代码逻辑,只能“喂”输入,看“吐”出来的输出对不对。(只关注输入输出)
-
输入灵活:可以接受任意格式的文件作为输入(如图片、音频、文档、协议数据等)。
-
输出变异样本:通过对原始文件进行智能变异,生成大量畸形但结构合理的测试用例。
-
命令行工具:使用简单,适合脚本化集成。
下载
从linux系统下载、使用更方便
1.终端:
|
2.从Radamsa的官方代码仓库克隆源码到本地:
git clone https://gitlab.com/akihe/radamsa.git
3.完成后,进入源码目录:
cd radamsa
4.使用make命令进行编译
之后,将生成的可执行文件安装到系统路径中
:
makesudo make install
5.安装完成,验证:
radamsa --version
简单测试:每次输出的结果都不相同
echo "Hello World" | radamsa
成功
1234

被折叠的 条评论
为什么被折叠?



