CVE-2019-13288复现笔记及其国产化pdf生成挖掘

admin 2024年12月11日23:27:08评论23 views字数 2752阅读9分10秒阅读模式

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-essentialcd ..wget https://dl.xpdfreader.com/old/xpdf-3.02.tar.gz # 获取xpdftar -xvzf xpdf-3.02.tar.gzcd xpdf-3.02 # 编译&安装xpdfsudo apt update && sudo apt install -y build-essential gcc./configure --prefix="$HOME/fuzzing_xpdf/install/"makemake installcd $HOME/fuzzing_xpdf # 下载一些PDF示例mkdir pdf_examples && cd pdf_exampleswget https://github.com/mozilla/pdf.js-sample-files/raw/master/helloworld.pdfwget http://www.africau.edu/images/default/sample.pdfwget https://www.melbpc.org.au/wp-content/uploads/2017/10/small-example-pdf-file.pdf
CVE-2019-13288复现笔记及其国产化pdf生成挖掘
CVE-2019-13288复现笔记及其国产化pdf生成挖掘

-box 要求显示 PDF 文件中每一页的边框框架

-meta 表示显示 PDF 文件的元数据

CVE-2019-13288复现笔记及其国产化pdf生成挖掘

安装 AFL + + fuzzer 的最新版本

sudo apt-get updatesudo apt-get install -y build-essential python3-dev automake git flex bison libglib2.0-dev libpixman-1-dev python3-setuptoolssudo 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$HOMEgit clone https://github.com/AFLplusplus/AFLplusplus && cd AFLplusplusexport LLVM_CONFIG="llvm-config-11"make distribsudo make install

AFL-Fuzz 简介

AFL(American Fuzzy Lop)是一种现代化的模糊测试(Fuzzing)工具,专为发现程序中的安全漏洞和崩溃设计。afl-fuzz 是 AFL 的核心部分,负责对目标程序进行模糊测试。

Fuzzing 是一种通过向程序输入随机或半随机数据,观察程序的行为是否异常(如崩溃或未处理的错误)的技术。AFL-Fuzz 在此基础上进行了增强,支持高效的输入生成和路径发现。

常见应用案例

  1. 漏洞发现
  2. PDF/图片处理工具模糊测试
  3. 协议模糊测试

然后试运行afl-fuzz

CVE-2019-13288复现笔记及其国产化pdf生成挖掘

Meet AFL++

AFL++ 简介

AFL++ 是 AFL(American Fuzzy Lop)的增强版本,由社区开发和维护。它基于原版 AFL,并加入了大量现代化特性和改进,进一步提升了模糊测试(fuzzing)的效率和灵活性。

AFL++ 不仅保留了原版 AFL 的优秀特性(如智能输入生成和代码覆盖反馈机制),还引入了新功能以支持更多的目标和更高效的模糊测试。

rm -r $HOME/fuzzing_xpdf/installcd$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/"makemake install

运行fuzzer

afl-fuzz -$HOME/fuzzing_xpdf/pdf_examples/-$HOME/fuzzing_xpdf/out/-123--$HOME/fuzzing_xpdf/install/bin/pdftotext @@ $HOME/fuzzing_xpdf/output

发现报错

CVE-2019-13288复现笔记及其国产化pdf生成挖掘
改了一堆东西发现不行
我们非插桩跑吧
afl-fuzz --$HOME/fuzzing_xpdf/pdf_examples/-$HOME/fuzzing_xpdf/out/-123--$HOME/fuzzing_xpdf/install/bin/pdftotext @@ $HOME/fuzzing_xpdf/output

效果看起来还行5分钟8崩溃了

CVE-2019-13288复现笔记及其国产化pdf生成挖掘

断掉

CVE-2019-13288复现笔记及其国产化pdf生成挖掘

然后找到

wsl.localhostkali-linuxmntwslgdistrohomeqiufengfuzzing_xpdfoutcrashes

CVE-2019-13288复现笔记及其国产化pdf生成挖掘

然后

$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
CVE-2019-13288复现笔记及其国产化pdf生成挖掘
ok确实导致pdftotext段错误从而崩溃

然后用国产生成一个pdf

CVE-2019-13288复现笔记及其国产化pdf生成挖掘
然后fuzz
CVE-2019-13288复现笔记及其国产化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生成挖掘
OK也崩溃了

原文始发于微信公众号(秋风的安全之路):CVE-2019-13288复现笔记及其国产化pdf生成挖掘

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月11日23:27:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2019-13288复现笔记及其国产化pdf生成挖掘https://cn-sec.com/archives/3495248.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息