最近正在学习模糊测试方面的知识,刚开始接触的便是ActiveX控件的Fuzzing。这里拿出来和大家分享下(不知道能不能混个红字
),希望对于新手来说是个入门的途径文中有什么错误之处欢迎大家指出----顺便求TX的能给面试的机会,哈哈...
1、什么是ActiveX:
ActiveX 控件是一种可重用的软件组件,通过使用 ActiveX控件,可以很快地在网址、台式应用程序、以及开发工具中加入特殊的功能。是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。
2、模糊测试:
模糊测试(Fuzzing),核心就这一句话:一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。一般是全自动或半自动化的。
其中所说到的目标系统代表的范围很大,可以是客户端软件,web控件,web应用程序、服务器,特殊文件格式解析程序(如PDF,DOC,M3U等等),还可以指网络协议、内存等等。
不同的目标系统对应的模糊测试方法学也不一样,大致的过程可以如下图所示:
简单的介绍就到这里,接下来针对一个有漏洞的链接库文件进行模糊测试,然后手动进行漏洞的可利用性确认,希望能对刚入门还不知道怎么做的新手有些帮助。
测试环境为:Windows XP sp3 + IE 6,模糊工具这里使用的是COMRaider,进行漏洞验证的工具OD足够了。
有漏洞链接库选择的是VULU.DLL。这个DLL功能很简单,将传入的字符串参数使用MessageBox显示出来,暂时没找见好的例子,就用这个吧..
下面开始我们的模糊测试过程,按照前面说到的流程,我们一步步的进行漏洞挖掘。
打开COMRaider,选择COM组件的类型为ActiveX DLL 或者OCX文件,如图所示:
打开对话框中选中我们要分析的漏洞链接库文件,COMRaider会帮你分析该控件的注册ID,和所具有的接口函数和函数的参数:
从微软的命名规范可以大致看出接口函数的基本功能,选择一个接口函数进行漏洞分析,这个漏洞链接库的几个接口函数基本都是同样的功能,只不过传入的参数是不同的,我选择针对Method1函数进行分析,此函数接受的是字符串形式的参数,将传入的参数MessageBox出来。
点击Next产生测试数据:
COMRaider的测试数据以wsf形式存储,软件会自动帮你生成vbscript语言的HTML测试页面
(不过生成的测试用例没有注册控件的过程,在进行模糊测试之前要先将控件进行注册,不然测试过程会产生无法创建对象的错误),COMRaider会调用一个wscript.exe的解析程序来运行这个测试用例,然后来监测控件是否发生了异常。
下面的代码便是COMRaider自动生成的模糊测试数据:
<?XML version='1.0' standalone='yes' ?>
<package><job id='DoneInVBS' debug='false' error='true'>
<object classid='clsid:8EF2A07C-6E69-4144-96AA-2247D892A73D' id='target' />
<script language='vbscript'>
'File Generated by COMRaider v0.0.133 - http://labs.idefense.com
'Wscript.echo typename(target)
'for debugging/custom prolog
targetFile = "E:\COMRaider\vuln.dll"
prototype = "Function Method1 ( ByVal sPath As String ) As Long"
memberName = "Method1"
progid = "VULNLib.server"
argCount = 1
arg1=String(9236, "A")
target.Method1 arg1
</script></job></package>
动态生成的数据很简单,就是向接口传入超长数据,如果对漏洞模型有很好的了解的话,自己还能写出基于变异的测试数据,发现不同的漏洞。
点击More>>可以加入自己编写的模糊测试数据。
继续单击Next开始进行模糊测试:
COMRaider开始自动Fuzzing,如果控件接受参数后出现了异常,那么相应模糊数据后面的Exceptions便会至1,最后拿到模糊结果:
从图中可以看出,基本每一个模糊数据都出现了异常,可能会出现栈溢出漏洞,而且参数的长度界限比较小。Fuzzing的部分基本上到这边就结束了,接下来就是确定发成的这个异常是否可以利用,成为一个漏洞而不是bug。COMRaider中也可以使用OD加载模糊测试的数据,然后便使用OD进行动态分析,确定发生异常的点是否存在漏洞。
漏洞发现的过程我先不写啦,这个漏洞链接库没什么难度,是一个栈溢出,什么保护也没有,之后POC使用最简单的覆盖返回数据就能利用,或者使用堆喷射技术。
简单的教程希望对新手有帮助,有什么新的好玩的东西也可以给我说说我也去学,哈哈。
写完收工。
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界