内容简介:对于一些复合文件格式,如果只是单纯的暴力Fuzzing,会导致生成很多无法被解析的文件,因此需要对文件变异作一些定制化的工作,比如docx、doc等office复合文件,docx是个压缩包,doc是个OLE格式,如果fuzz docx自然需要将其zip解压,再针对感兴趣的文件作变异,对于doc最好是作文件格式解析,只对感兴趣的stream作文件变异,这样的fuzzing的有效性才会更高。庆幸地是,honggfuzz提供
对于一些复合文件格式,如果只是单纯的暴力Fuzzing,会导致生成很多无法被解析的文件,因此需要对文件变异作一些定制化的工作,比如docx、doc等office复合文件,docx是个压缩包,doc是个OLE格式,如果fuzz docx自然需要将其zip解压,再针对感兴趣的文件作变异,对于doc最好是作文件格式解析,只对感兴趣的stream作文件变异,这样的fuzzing的有效性才会更高。
庆幸地是,honggfuzz提供 -c 参数用于扩展变异规则以代替原有变异方式,同时提供有 --pprocess_cmd 在原有的文件变异后再作处理:
--mutate_cmd|-c VALUE External command producing fuzz files (instead of internal mutators) --pprocess_cmd VALUE External command postprocessing files produced by internal mutators
-c 功能比较有用,也是我用得比较多的,另一个 --pprocess_cmd 基本我没用过。
当你通过 -f 提供输入样本目录后,在fuzzing时,随机提取的文件会直接传递给 -c 参数指定的扩展命令作变异。
比如想针对某文件特定offset范围内的内容进行变异,下面是针对macOS/iOS字体文件中的虚拟指令作Fuzzing时写的脚本:
#!/usr/bin/env python
import mmap
import os
from random import randint
import sys
RANGE_START = 0x16D8
RANGE_END = 0x304D
MIN_BYTES_TO_FLIP = 1
MAX_BYTES_TO_FLIP = 5
if ".DS_Store" in sys.argv[1]:
exit(1)
with open(sys.argv[1], "r+b") as f:
mapped = mmap.mmap(f.fileno(), 0)
#print "file size: 0x%x" % len(mapped)
bytes_to_flip = randint(MIN_BYTES_TO_FLIP, MAX_BYTES_TO_FLIP)
bytes_flipped = 0
while bytes_flipped < bytes_to_flip:
byte_pos = randint(RANGE_START, RANGE_END)
#print "byte_pos: 0x%x" %byte_pos
byte_new = chr(randint(0, 255))
mapped[byte_pos] = byte_new
bytes_flipped += 1
mapped.close()
变异效果:
最后挖到一个TTF字体虚拟指令漏洞:
orig file:
2F90h: 00 3F C5 CD 2B 10 C1 10 DE 3F C5 【CD】 2B 10 C5 10
poc file:
2F90h: 00 3F C5 CD 2B 10 C1 10 DE 3F C5 【DD】 2B 10 C5 10
glyf table -> SimpleGlyf[] -> Instructions('0xCD' => ‘0xDD') -> MDRP指令
同样的,你也可以写个doc、docx等office文件格式解析并变异的扩展fuzzer,比如利用olefile库(但只支持修改同等大小不变的doc,要插入或删除需要自行实现),或者通过COM接口来实现操作。
比如之前有段时间doc中的公式编辑器存在很多漏洞,你就可以专门针对 Equation Native 流作fuzzing。
最后放两张图(riufuzz是自己对honggfuzz二次开发的版本,后面有机会再讲):
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Bochspwn漏洞挖掘技术深究(1):Double Fetches 检测
- Java 反序列化深究
- 一次深究 Bug 根源的案例
- 深究SQLAlchemy中的表关系 Table Relationships
- 密码学技术何以为信?深究背后的计算困难性理论
- 如何做好漏洞管理的漏洞修复工作
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Caching
Duane Wessels / O'Reilly Media, Inc. / 2001-6 / 39.95美元
On the World Wide Web, speed and efficiency are vital. Users have little patience for slow web pages, while network administrators want to make the most of their available bandwidth. A properly design......一起来看看 《Web Caching》 这本书的介绍吧!