返回介绍

8.5 fuzz 漏洞发现

发布于 2024-10-11 22:07:46 字数 1782 浏览 0 评论 0 收藏 0

fuzz 指的是对特定目标的模糊测试,这里要注意的是,针对特定目标甚至说是特定请求,它不同于漏洞扫描器进行批量漏洞扫描,不过它们的初衷都是以发现 bug(漏洞)为目的。由于本书主要介绍代码安全,所以我们后面所说的 fuzz 都是安全方向的 fuzz。fuzz 在很早就应用在软件测试领域,并且发现了大量不可预知的漏洞,fuzz 到底是怎么样的一个东西,我们来通过它的工作原理流程认识一下,大概流程如图 8-7 所示。

图 8-7

举个最简单的读文件例子,当我们用 Office Word 打开 doc 文档的时候,Word 软件会按照指定的格式读取文件的内容,如果文件格式出现异常字符,Word 无法解析,而又没有提前捕捉到这种类型的错误,则有可能引发 Word 程序崩溃,这就是一个 bug,这时候我们就可以通过工具生成大量带有异常格式或者字符的 doc 文档,然后调用 Word 程序去读取,尝试发现更多的 bug,这就是一个完整的 fuzz 测试例子。虽然它不是一种纯白盒的漏洞挖掘方法,但我们在白盒审计过程中,也经常需要用到 fuzz 的方式来寻找漏洞利用方法。

目前互联网上已经有不少 fuzz 工具来专门做各种各样的 fuzz 测试,比如无线、Web、浏览器、协议,等等,在 Web 安全这块,使用比较多的像 pywebfuzz,基于 Python 开发,不过相对来说这个工具年代还是有点久了,可以用的 payload 还算比较全,比较常见的文件包含、文件上传、SQL 注入、XSS 等都支持,详细的列表如图 8-8 所示。

图 8-8

playload 文件在各个目录下面,我们打开其中一个 payload 规则文件后,可以看到类似如下的规则:

cFc%20%20%20

dBm%20%20%20

cfm......

cfml......

cfc.......

dbm......

cFm......

cFml......

cFc......

dBm......

cfm%20%20%20...%20.%20..

cfml%20%20%20...%20.%20..

cfc%20%20%20...%20.%20..

dbm%20%20%20...%20.%20..

cFm%20%20%20...%20.%20..

我们之前在 8.2.2.2 节介绍 iconv 函数字符编码转换截断时提到过一个字符串枚举来尝试寻找能导致 iconv() 函数异常而截断数据,也是 fuzz 非常典型的一种利用方式,当时 fuzz 用的代码非常粗糙,如下所示:

<?php

for ( $i=0 ; $i<1000 ; $i++ ) 

{

  $a='1'.chr ( $i ) .'2' ; 

  echo $i.' -- ' ; 

  echo iconv ( "UTF-8" , "gbk" , $a ); 

  echo '<br />' ; 

}

运行脚本后结果如下,当遇到不能正常转码的时候出现字符串截断,并且 iconv() 函数报出一个 notice 提示,如图 8-9 所示。

图 8-9

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文