Loading ...
PDF XSS 漏洞

一、PDF XSS 漏洞核心原理

PDF XSS(PDF 跨站脚本)漏洞是指攻击者通过在 PDF 文件中植入恶意 JavaScript 代码,利用 PDF 阅读器或在线预览工具的安全缺陷,实现代码执行的一类漏洞。与传统网页 XSS 不同,PDF XSS 的载体是 PDF 文件,攻击场景更隐蔽,且依赖于 PDF 处理工具的解析逻辑。

1. PDF 文件的动态特性基础

PDF 格式并非纯静态文件,其规范支持多种动态交互功能,主要包括:

  • 嵌入式 JavaScript:通过/JS/JavaScript字典定义文档级脚本,可在打开 PDF 时自动执行

  • 表单事件响应:支持OnFocusOnMouseUp等事件绑定脚本

  • 注释与链接:可在注释或链接中嵌入脚本,点击时触发执行

  • 字体与渲染逻辑:部分阅读器对字体的特殊处理可能成为代码注入点

2. 漏洞触发的核心条件

PDF XSS 漏洞的利用需同时满足三个条件:

  • 存在恶意代码载体:PDF 文件中包含经过精心构造的恶意 JavaScript 代码

  • 解析器安全缺陷:PDF 阅读器 / 预览工具存在沙箱绕过、权限管控不严等问题

  • 执行环境允许:目标工具未禁用 JavaScript 执行功能(多数阅读器默认开启)

3. 攻击链形成过程

  1. 攻击者利用 PDF 编辑工具或脚本生成含恶意代码的 PDF 文件

  2. 通过钓鱼邮件、恶意链接等方式诱导用户下载打开

  3. 用户使用存在漏洞的 PDF 工具打开文件

  4. 恶意代码突破安全限制执行,完成信息窃取或权限提升

二、PDF XSS 漏洞分类与技术特点

1. 基于嵌入式 JavaScript 的传统漏洞

  • 技术特点:直接利用 PDF 规范中的 JavaScript 支持特性

  • 典型利用方式

    • 在文档级/JS字典中写入app.launchURL("恶意地址")

    • 在表单按钮的OnClick事件中嵌入this.exportDataObject下载恶意文件

  • 代表案例:Adobe Acrobat CVE-2021-28550(JS API 权限绕过)

2. 基于渲染引擎缺陷的新型漏洞

  • 技术特点:利用 PDF 解析器在处理字体、图像等资源时的逻辑漏洞

  • 典型利用方式

    • 通过特殊字体指令注入代码(如 PDF.js CVE-2024-4367)

    • 利用注释内容 DOM 注入(如 PDF.js CVE-2020-16042)

  • 代表案例:PDF.js 系列漏洞(无需依赖 PDF 内置 JS 功能)

三、PDF.js CVE-2024-4367 漏洞复现

1. 漏洞环境准备

(1)基础环境

  • 操作系统:Ubuntu 22.04

  • Docker 及 Docker Compose:用于部署漏洞环境

  • 漏洞靶场:Vulhub 中的 PDF.js 环境

  • 攻击工具:LOURC0D3 的 CVE-2024-4367 PoC 脚本

(2)环境搭建步骤

# 安装Docker
sudo apt update && sudo apt install -y docker.io docker-compose
sudo systemctl start docker && sudo systemctl enable docker

# 获取Vulhub
git clone https://github.com/vulhub/vulhub.git
cd vulhub/pdfjs/CVE-2024-4367

# 启动漏洞环境
sudo docker-compose up -d

# 查看环境状态(确认8080端口映射)
sudo docker-compose ps

2. 恶意 PDF 生成(利用 LOURC0D3 的 PoC)

(1)获取 PoC 工具

git clone https://github.com/LOURC0D3/CVE-2024-4367-PoC.git
cd CVE-2024-4367-PoC

(2)生成含 XSS payload 的 PDF

# 生成弹出 domain 的恶意PDF
python3 CVE-2024-4367.py "alert(document.domain)"

# 生成的文件为poc.pdf,查看文件信息
file poc.pdf

PoC 核心原理:通过修改 PDF 的FontMatrix字段,将恶意 JavaScript 代码伪装为字体配置参数,利用 PDF.js 字体渲染时的代码编译机制执行。

3. 漏洞触发与验证

(1)上传恶意 PDF

  1. 访问漏洞环境:http://靶机IP:8080

  2. 在上传界面选择生成的poc.pdf文件

  3. 上传成功后记录文件路径(如../upload/xxx.pdf

(2)触发 XSS 漏洞

  1. 访问 PDF 预览地址:http://靶机IP:8080/web/viewer.html?file=../upload/xxx.pdf

  2. 观察浏览器行为,成功触发时会弹出包含 domain 信息的对话框

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇