本文主要分享一款静态IE浏览器fuzzing工具,即IEFuzz。我们知道,与大多数其他软件一样,浏览器通常会通过两种方式进行模糊测试,一种是静态的,一种是动态的。之前我们在其他文章中也了解过其他的fuzzer,比如X-Fuzzer、PKAVHTTPFuzzer,以及相关的fuzzing方法,比如从零开始学习fuzzing系列:浏览器挖掘框架Morph的诞生等。本文重点关注静态浏览器模糊器的情况。目前,动态浏览器模糊器是主流,因为它们运行高效(纯JavaScript编写)。但是,我们在进行动态Fuzzing的时候,经常会遇到一个通病,就是“异常事件的反复出现”。因此,一般来说,我们在构建JS浏览器模糊器时需要非常小心,否则由于浏览器模糊器的动态特性,在运行过程中可能无法重现异常事件。因此,在Fuzzing之前,我们往往需要考虑以下问题:1、如何生成测试实例(样本)?2、如何监控异常事件?3.如何保存引发异常事件的测试实例?4.异常事件如何重现?针对上述使用动态模糊器所面临的问题,另一种解决方案是使用静态模糊器进行检测。尽管静态模糊器效率较低,但它们通常可以重现异常事件。IEFuzz简介这个静态IE模糊器是用python编写的,包括以下模块:pywin32com-用于加载或重新加载*.html测试实例;pydbg——用于监控IE浏览器的异常事件;paimei-用于生成异常事件的转储文件,下载地址为:paimei。IEFuzz配置为了能够顺利进行Fuzzing,我们需要在IE设置中进行如下改动。1、首先,因为Fuzzer需要在本地加载测试用例(比如加载路径为file://c:/fuzzer/testcases/temp.html),所以要关闭IE的ActiveX警告提示首先,通过以下步骤:(1)工具->Internet选项->安全->自定义级别;(2)然后关闭ActiveX警告提示。2、接下来,为了使用Pythonwin32com监控IE,我们还需要关闭IE的保护模块。但要注意所涉及的风险。(1)工具->Internet选项->安全->可信站点:自定义级别低;(2)工具->Internet选项->安全->Internet:自定义级别为中,同时关闭保护模式;(3)工具->Internet选项->安全->受限站点:禁用保护模式。编写测试用例首先,我们可以基于模糊器编写自己的静态测试用例生成器。然后可以将它放在/TestCases文件夹中。GitHub源码中还提供了一个示例供参考:'TestCases/SampleTestCase.py。由于源码比较长,链接如下。TestCases/SampleTestCase.py另请注意,在编写测试实例时,该实例需要包含一个TestCase类和getFinalTestCase()方法。getFinalTestCase()方法需要能够返回一个完整的Html页面。在动态模糊器的应用过程中,需要从对象中提取不同的Html元素属性,然后在运行状态下进行模糊检测。对于静态模糊器,我们可以在python测试实例中将html元素和属性预定义为字典dict。dict的一个例子如下:attr={'CANVAS':['height','width','getContext',...,...,...]}对于这个属性生成列表,一个JavaScript应用也供参考。
/head>