时时勤拂拭,勿使惹尘埃

TOC

Categories

Fuzzing101(一)fuzz xpdf latest version 4.04


0x0 Fuzzing101项目 

Fuzzing101项目是一个学习fuzz的好课程,从最基础的afl-clangafl-fuzzgdb用法,到内存监控工具ASanSanitizers,代码覆盖率Code coverrage等,都逐渐涉及,可以循序渐进的来了解学习

0x1 fuzz xpdf latest version

Fuzzing101项目第一个课题是Exercise 1 - Xpdf,版本3.02,涉及复现漏洞为CVE-2019-13288Parser.cc中的Parser::getObj()函数可能会通过精心制作的文件导致无限递归,远程攻击者可以利用它进行 DoS 攻击)

Exercise 1 - Xpdf的复现过程比较简单,照着Fuzzing101流程逐步进行即可,之前测试效果如图,2个小时多即26个crash:

所以这里记录一下对xpdf latest version 4.04的测试

0x2 cmake编译xpdf

xpdf3.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 评论:

发表评论