在《Fuzzing(模糊测试)的前世今生(上)》和《Fuzzing(模糊测试)的前世今生(中)》我们讲解了模糊测试技术的由来、技术原理和底层算法,本篇我们为大家简述一下模糊测试的实践应用,让大家对它有更深的了解。模糊测试技术的应用十分广泛,可不同场景中对各种对象进行模糊测试,常见的测试对象包括扩源代码、二进制文件、环境变量和参数、Web应用程序、文件格式、网络协议、Web浏览器和内存数据等。
源代码或二进制文件的模糊测试灰盒Fuzzing在源代码测试领域有着广泛的应用。通常,它会在程序编译阶段对被测程序进行插桩。灰盒Fuzzing程序依据插桩后得到的反馈数据(如目标程序执行了新的执行流单元)来判断哪些变异的种子为优秀的种子。这类判定逻辑将用于指导遗传变异算法,从而可以引导测试种子向更优异的方向进行持续变异,而无需人工建模。总而言之,基于遗传变异和反馈激励的算法可以自动指导与优化测试流程,自动探索程序代码空间,并在发现漏洞时给用户提供详细的问题定位与漏洞复现功能。图1灰盒模糊测试基本架构环境变量和参数的模糊测试环境变量和参数的模糊测试属于本地化的模糊测试,尽管这种测试方法是一种最简单的模糊测试,但也能发现很多远程测试所发现不了的漏洞,对环境变量和参数进行模糊测试对增强本地私有程度很有帮助。显而易见,其测试对象是命令行参数和环境变量。由于环境变量和命令行参数都是很简单的ASCII字符串,所以可以由用户很方便的提供。在实际应用中也可以对待测程序实施一些基本的手工测试,以排除已知的漏洞。其基本思想十分简单,即如果在一个命令行参数或环境变量中进行恶意注入,那么当该值被接收以后,就有可能使程序崩溃。最常用的环境变量和参数的模糊测试工具是iFuzz。它包含一个能自动处理不同二进制目标代码的引擎,同时iFuzz具有C语言触发器功能,能简化显示再次出现的错误,其最重要的特点是可以不经修改的运行在所有UNIX或类UNIX系统上。在实际应用上,iFuzz曾成功地发现IRIX,HP-UX,QNX,MacOSX和AIX等系统的漏洞。Web应用程序的模糊测试Web应用程序容易受到各多类型的漏洞攻击,如拒绝服务、跨站点编写脚本、SQL注入和弱访问控制等。针对Web应用程序的模糊测试是一种特殊形式的网络协议模糊测试。在对Web应用程序进行模糊测试时要特别转载请注明:http://www.0431gb208.com/sjszlff/8132.html