驯服软件测试中的不可预测性!聊聊模糊测试,以及几种模糊测试工具的介绍_模糊测试和误用测试区别

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

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

什么是模糊测试?

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

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

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

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

图片

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

什么是简单实用的用例?

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

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

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

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请求的响应。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-LLBNt0Id-1713255987627)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值