CVE-2019-13288复现
简述
在 Xpdf 4.01.01 中 Parser.cc 中的 Parser::getObj() 函数可能会通过精心设计的文件导致无限递归 远程攻击者可以利用它进行 DoS 攻击
Download and build your target
cd $HOME # 创建目录
mkdir fuzzing_xpdf && cd fuzzing_xpdf/
sudo apt install build-essential
cd ..
wget https://dl.xpdfreader.com/old/xpdf-3.02.tar.gz # 获取xpdf
tar -xvzf xpdf-3.02.tar.gz
cd xpdf-3.02 # 编译&安装xpdf
sudo apt update && sudo apt install -y build-essential gcc
./configure --prefix="$HOME/fuzzing_xpdf/install/"
make
make install
cd $HOME/fuzzing_xpdf # 下载一些PDF示例
mkdir pdf_examples && cd pdf_examples
wget https://github.com/mozilla/pdf.js-sample-files/raw/master/helloworld.pdf
wget http://www.africau.edu/images/default/sample.pdf
wget https://www.melbpc.org.au/wp-content/uploads/2017/10/small-example-pdf-file.pdf
-box 要求显示 PDF 文件中每一页的边框框架
-meta 表示显示 PDF 文件的元数据
安装 AFL + + fuzzer 的最新版本
sudo apt-get update
sudo apt-get install -y build-essential python3-dev automake git flex bison libglib2.0-dev libpixman-1-dev python3-setuptools
sudo apt-get install -y lld-11 llvm-11 llvm-11-dev clang-11 || sudo apt-get install -y lld llvm llvm-dev clang
sudo apt-get install -y gcc-$(gcc --version|head -n1|sed 's/.* //'|sed 's/..*//')-plugin-dev libstdc++-$(gcc --version|head -n1|sed 's/.* //'|sed 's/..*//')-dev
检验和构建AFL++
cd$HOME
git clone https://github.com/AFLplusplus/AFLplusplus && cd AFLplusplus
export LLVM_CONFIG="llvm-config-11"
make distrib
sudo make install
AFL-Fuzz 简介
AFL(American Fuzzy Lop)是一种现代化的模糊测试(Fuzzing)工具,专为发现程序中的安全漏洞和崩溃设计。afl-fuzz 是 AFL 的核心部分,负责对目标程序进行模糊测试。
Fuzzing 是一种通过向程序输入随机或半随机数据,观察程序的行为是否异常(如崩溃或未处理的错误)的技术。AFL-Fuzz 在此基础上进行了增强,支持高效的输入生成和路径发现。
常见应用案例
-
漏洞发现 -
PDF/图片处理工具模糊测试 -
协议模糊测试
然后试运行afl-fuzz
Meet AFL++
AFL++ 简介
AFL++ 是 AFL(American Fuzzy Lop)的增强版本,由社区开发和维护。它基于原版 AFL,并加入了大量现代化特性和改进,进一步提升了模糊测试(fuzzing)的效率和灵活性。
AFL++ 不仅保留了原版 AFL 的优秀特性(如智能输入生成和代码覆盖反馈机制),还引入了新功能以支持更多的目标和更高效的模糊测试。
rm -r $HOME/fuzzing_xpdf/install
cd$HOME/fuzzing_xpdf/xpdf-3.02/
make clean
现在我们将使用afl-clang-fast 编译器构建 xpdf:
export LLVM_CONFIG="llvm-config-11"
CC=$HOME/AFLplusplus/afl-clang-fast CXX=$HOME/AFLplusplus/afl-clang-fast++ ./configure --prefix="$HOME/fuzzing_xpdf/install/"
make
make install
运行fuzzer
afl-fuzz -i $HOME/fuzzing_xpdf/pdf_examples/-o $HOME/fuzzing_xpdf/out/-s 123--$HOME/fuzzing_xpdf/install/bin/pdftotext @@ $HOME/fuzzing_xpdf/output
发现报错
afl-fuzz -n -i $HOME/fuzzing_xpdf/pdf_examples/-o $HOME/fuzzing_xpdf/out/-s 123--$HOME/fuzzing_xpdf/install/bin/pdftotext @@ $HOME/fuzzing_xpdf/output
效果看起来还行5分钟8崩溃了
断掉
然后找到
wsl.localhostkali-linuxmntwslgdistrohomeqiufengfuzzing_xpdfoutcrashes
然后
$HOME/fuzzing_xpdf/install/bin/pdftotext 'id:000000,sig:11,src:000000+000001,time:37954,execs:24267,op:splice,rep:25'$HOME/fuzzing_xpdf/output
pdftotext
段错误从而崩溃然后用国产生成一个pdf
$HOME/fuzzing_xpdf/install/bin/pdftotext 'id:000000,sig:11,src:000000,time:11835,execs:6529,op:havoc,rep:25'$HOME/fuzzing_xpdf/output
原文始发于微信公众号(秋风的安全之路):CVE-2019-13288复现笔记及其国产化pdf生成挖掘
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论