本文将介绍如何利用本地文件包含漏洞读取Google某服务器上的任意文件。漏洞存在于Google的Feedburner中,在提交漏洞后,Google安全团队迅速修复了这一漏洞。 FeedBurner是什么 维基百科上对FeedBurner的介绍: FeedBurner是一个于2004年在美国芝加哥市成立的网站馈送管理供应商。FeedBurner为博客作者、播客与其他基于网络的内容发布者提供订制的RSS馈送与管理工具,提供予发布者的服务包括流量分析以及一个可供选择的广告系统。2007年Google收购了FeedBurner。FeedBurner之前就曾是我的目标之一,很久以前我就在这个域名发现过一些xss,我猜想可能还会有有趣的漏洞。之后我在调查后发现,FeedBurner以前有个开放的API,但是Google在2012年关闭了这个API。虽然开发者档案(https://developers.google.com/feedburner/)已经被删除了,我们还是可以用Wayback Machine" (http://archive.org/web/)读取到。
我在文档中发现了这个链接:http://feedburner.google.com/fb/dynamicflares/HelloVisitor.jsp?feedUrl=http://domain.tld/ff.xml(现在没用了)。这个jsp脚本的功能是获取动态FeedFlare单元文件的内容,这些单元文件其实基本上就是些简单的xml文件。有些人可能不太熟悉FeedFlares,这个就像是某种插件,Feed的拥有者可以通过它让读者通过新的方式对发布的内容进行交互,例如:http://www.code4free.com/ff_example.xml。 漏洞挖掘
乍看起来,脚本的作用就是抓取XML,作为feedUrl的参数,然后对其进行XSL转换。这个文件的问题就是直接把XML的内容append过去了,没有进行修改甚至没有编码。
我首先尝试寻找XSS漏洞,我提供了一个指向恶意html文件的URL,就找到了xss漏洞。然后我想,说不定会有漏洞能够造成更大影响呢?例如能够从web服务器读取文件。所以我就尝试使用各种payload进行测试,我尝试目录遍历攻击("../../../../../../../etc/passwd"),这是本地文件包含(LFI)攻击中非常典型的手法,没有成功。不过,我随后改变了方法,使用文件URI的方法成功获取到了服务器上的文件。
虽然根据安全策略文件,不是所有的文件都可以读取,但读取系统日志足以证明这个漏洞,而漏洞的严重性依旧不容小视。我将漏洞提交给Google后,安全团队在10分钟后修复了该问题。
|