fuzz testing 初探

Fuzz testing,中文可以翻译为模糊测试,简单的说来就是构造一些random或者unexpected的数据作为程序的输入,观察程序在这种情况下的工作状况。Fuzz testing是检查程序容错性的一个重要的测试手段。

虽然Fuzz testing的输入在正常情况下不大可能出现,但是hacker并不这么想,作为一个hacker,他可能千方百计的想要找到你程序的漏洞,或者使你的程序crash,用random的输入是hacker的一个很好的选择。因此,Fuzz testing也是security testing的重要组成部分。

关于Fuzz testing的最老网站是http://www.cs.wisc.edu/~bart/fuzz/fuzz.html,在这个网站中我们可以看到最早的paper/report是在1990年,可见Fuzz testing也不能算是一个新的东西。在这个网站的一个对于windowsNTFuzz test report中,我们看到一些很令人吃惊的数据。

  • random键盘或者鼠标输入的情况下,NT4.021%的程序crash
  • random键盘或者鼠标输入的情况下,NT4.0有另外24%的程序会hung
  • 在完全random的键盘或者鼠标的输入情况,几乎100%的程序会crash或者hung

如果NT4.0表现的都如此之差,其它的程序应该也好不到哪里去。

Fuzz testingstrategy:

对于Fuzz testing来讲,也并非完全random的数据输入就是最好的选择,程序crash也并非是hacker们最期望的事情。因此Fuzz testing也需要有一些strategy

我们以一个网站的测试作为例子来过一下,假定我们现在是一个http server的提供者,hacker想要对这个网站进行攻击。通常来讲,他有几个选择:

1.       用洪水攻击之类的方法使网站拒绝服务

2.       http报文注入,获得该机器的权限

3.       randomhttp报文,使http server(IIS/Apache/...)服务不可用

如果我是hacker,从获得的好处和攻击的难易程度上来考虑,选择的优先级会是2>3>1

因此,我们来看一下2如何做到。

一般来讲,http请求报文会像下面这样:

Get /mattmarg/ HTTP/1.0
User-Agent: Mozilla/2.0 (Macintosh; I; PPC)
Accept: text/html; */*
Cookie: name = value
Referer: http://www.webmonkey.com/html/96/47/index2a.html
Host:www.grippy.org

那我们如果要修改这样的报文(请参考http://sourceforge.net/projects/taof/)然后再转发,最合适的选择是1.Get后面的"/mattmarg/";2.Referer后面的那一长串网址。至于如何修改,那真的是需要一些背景知识,以及对于以往的网站安全漏洞研究的经验。

Fuzz的一些参考网站:

http://www.hacksafe.com.au/blog/2006/08/21/fuzz-testing-tools-and-techniques/

http://www.packetstormsecurity.org/fuzzer/

http://ivory.idyll.org/blog/nov-06/testing-is-hard.html

三个差不多了,慢慢研究。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值