针对可疑漏洞位置进行定向模糊测试并验证

释放双眼,带上耳机,听听看~!
CCS17大会文章

测试环境

  • 实验环境如下所示。
  • 表1-1 实验环境配置
  •  | 名称 | 软件及版本说明
  •  | 操作系统  | Ubuntu 16.04 64 位桌面版
  •  | 模糊测试工具  | AFL Go2.49b
  •  | 虚拟机  | VMware Workstation 14.0
  •  | 编译器  | Clang 4.0.1
  •  | 内存 | 2GB
  •  | 处理器数量 | 1
  •  | CPU | Intel(R) i7-8750H CPU 2.20GHz

 

在VMware Workstaion 14.0 虚拟机Linux 16.04下部署aflgo,首先需要安装llvm4.0.1,步骤如下:

隐藏内容,您需要满足以下条件方可查看
End

#编译源码

pushd $AFLGO

make clean all

cd llvm_mode

make clean all

popd

输入afl-fuzz看到提示如下图1-3表示已经成果安装aflgo2.49b。

图1-3 aflgo2.49安装成功

1.3定向模糊测试模块

       作为对比,其中一个是以符号执行约束后的种子作为定向模糊测试输入的起点执行定向模糊测试结果如图1-6,另一个以任意的种子输入作为起点执行模糊测试,结果如图1-7。

图1-6 定向模糊测试运行结果
图 1-7 模糊测试运行结果

定向模糊测试还能针对大型软件进行自动化漏洞验证,对Libxml2进行了验证了commit ef709ce2,结果如图5-8。

图1-8 libxml2验证结果

        

1.4 结果分析

通过对比图1-6和图1-7可以看出,定向符号执行和定向模糊测试结合能很快的进行漏洞挖掘,节约了大量的时间。同样的程序,图1-6运行了几秒就跑出了三个crash,而单纯的模糊测试运行了两天也没有crash产生,猜测应该是没有办法进行新路径探索而导致程序陷入死循环导致的。图1-8的结果表明针对大型软件,定向模糊测试同样具有快速高效挖掘漏洞的效果。接着分析自动化漏洞验证系统跑出来的结果,结果如图1-9。

图1-9 自动化漏洞验证的结果
隐藏内容,您需要满足以下条件方可查看
End
需要重点关注的是crashes文件目录里的东西,如图1-10,进入输出目录使用ls命令可以查看当前文件下所有文件。如果任何afl-fuzz修改的输入文件发生唯一崩溃,则导致目标二进制文件崩溃,也就是说当crsahes文件夹里面有文件存在时,已经验证了可疑漏洞位置的确存在漏洞。但可以利用生成的crashes了解更多关于关于漏洞的信息,aflgo程序下面存在一个crashes探索脚本,研究人员可以在已经验证漏洞存在的基本利用该脚本,对漏洞探索更多的信息。执行完该脚本可疑看到如图1-10的信息。

图1-10 crashes探索结果
[/content_hide]
WEB安全漏洞质量好文

对某非法配资平台重拳出击

2020-4-11 22:55:36

WEB安全质量好文

墨者学院 - 文件上传WriteUp

2020-4-11 23:08:33

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索