WEB开发网
开发学院网络安全安全技术 Web2.0客户端组件漏洞扫描(一) 阅读

Web2.0客户端组件漏洞扫描(一)

 2007-07-10 13:04:41 来源:WEB开发网   
核心提示: (3)文件dojo.js包含其他一些函数,把这些得到的被使用的库函数及其版本信息和已知的漏洞库中的信息进行比对,Web2.0客户端组件漏洞扫描(一)(5),可以发现一些已经存在的漏洞,2.第三方不可信信息访问点我们扫描页面的HTML代码,这个过程如图6所示,如果这段Java Script是

(3)文件dojo.js包含其他一些函数。

把这些得到的被使用的库函数及其版本信息和已知的漏洞库中的信息进行比对,可以发现一些已经存在的漏洞。

2.第三方不可信信息访问点

我们扫描页面的HTML代码,发现以下代码片段,这段代码调用GetRSS()函数,访问不同的服务器获得不可信的RSS feeds,返回的内容可能存在恶意代码,进行有效的内容检查,可以避免一些安全威胁。

<div class="code">
<pre><select id="feeds" onChange="GetRSS();" name="feeds">
 <option value="">Pick your feed</option>
 <option value="http://www.cnn.com/business.xml">CNN business</option>
 <option value="http://www.usatoday.com/business.xml">USA today</option>
 <option value="http://xyz.sample.org/news.xml"> XYZ business</option>
</select></pre></div>

3.DOM 访问点

收集了Java Scripts脚本后,我们来寻找访问DOM的模式,这里主要关注使用到“document.*”的地方,把可能的情况简化到以下两类:

(1)document.getElementById(name).innerHTML:这个函数在HTML代码动态转换时被广泛使用。

(2)document.write():这个函数也被用来在浏览器中转换HTML代码。

在DOM访问点对转换的HTML代码进行扫描,同样可以避免一些安全威胁,下面的代码是一个Java Scripts使用“document.*”的例子。

function processRSS (divname, response) {
  var html = "";
  var doc = response.documentElement;
  var items = doc.getElementsByTagName('item');
  for (var i=0; i < items.length; i++) {
    var title = items[i].getElementsByTagName('title')[0];
    var link = items[i].getElementsByTagName('link')[0];
      html += ""
        + title.firstChild.data
        + "";
  }
  var target = document.getElementById(divname);
  target.innerHTML = html;
}

4.利用函数和变量的漏洞检测

我们可以把前面三步中获得的信息组织起来,把过滤技术使用在客户端逻辑的整个流程中。具体如图5所示。

图 5.News feed函数的执行逻辑和数据流

图5所示,News Feed服务器过滤掉了“<”和“>”符号,使得注入JavaScript到DOM变得不可能。假设不设置过滤,如果一个不可信的RSS feed注入了恶意的链接,将会怎样呢?下面是一段示例代码:

<div class="code">
<pre><item>
  <title>Interesting news item</title>
  <link>javascript:alert("Simple XSS")</link>
  <description><![CDATA[]]></description>
  <author>XYZ news</author>
  <dc:date>2005-11-16T16:00:00-08:00</dc:date>
</item></pre></div>

可以注意到link标签中含有JavaScript,因此当用户点击时,这段JavaScript脚本就会被执行。这个过程如图6所示。如果这段Java Script是恶意代码,那么用户将受到威胁。

图 6. 使用链接进行跨站脚本攻击

上一页  1 2 3 4 5 

Tags:Web 客户端 组件

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接