Fuzzing101(一)fuzz xpdf latest version 4.04
0x0 Fuzzing101项目
Fuzzing101项目是一个学习fuzz的好课程,从最基础的afl-clang
、afl-fuzz
、gdb
用法,到内存监控工具ASan
、Sanitizers
,代码覆盖率Code coverrage
等,都逐渐涉及,可以循序渐进的来了解学习
0x1 fuzz xpdf latest version
Fuzzing101
项目第一个课题是Exercise 1 - Xpdf,版本3.02
,涉及复现漏洞为CVE-2019-13288(Parser.cc
中的Parser::getObj()
函数可能会通过精心制作的文件导致无限递归,远程攻击者可以利用它进行 DoS 攻击)
Exercise 1 - Xpdf
的复现过程比较简单,照着Fuzzing101
流程逐步进行即可,之前测试效果如图,2个小时多即26个crash:
所以这里记录一下对xpdf latest version 4.04的测试
0x2 cmake编译xpdf
xpdf
在3.02
版本使用configure
进行编译配置,而在4.04
版本中将编译配置工具改为了cmake
故原configure
配置指令:
./configure --prefix="$HOME/fuzzing_xpdf/install/"
需要改为cmake
指令:
cd $HOME/xpdf-4.04/ && mkdir build && pushd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS="-fsanitize=address -g" -DCMAKE_CXX_FLAGS="-fsanitize=address -g" -DCMAKE_INSTALL_PREFIX=$HOME/fuzzing_xpdf/install/
afl-clang
配置则为:
cd $HOME/xpdf-4.04/
make clean
mkdir build_asan
cd build_asan
export LLVM_CONFIG="llvm-config-11"
cmake -DCMAKE_BUILD_TYPE=Debug $HOME/xpdf-4.04 -DCMAKE_INSTALL_PREFIX=$HOME/fuzzing_xpdf/install/ -DCMAKE_C_FLAGS="-fsanitize=address -g" -DCMAKE_CXX_FLAGS="-fsanitize=address -g" -DCMAKE_CXX_COMPILER=$HOME/AFLplusplus/afl-clang-fast++ -DCMAKE_CC_COMPILER=$HOME/AFLplusplus/afl-clang-fast
AFL_USE_ASAN=1 make
sudo AFL_USE_ASAN=1 make install
0x3 fuzz测试&crash
afl-fuzz -i $HOME/fuzzing_xpdf/pdf_examples/ -o $HOME/fuzzing_xpdf/out/ -s 123 -- $HOME/xpdf_4.04/xpdf/pdftotext @@ $HOME/fuzzing_xpdf/output
不到一分钟即出现一个crash,crash分析暂不展示了
0 评论:
发表评论