天下网吧 >> 网吧天地 >> 网吧技术 >> 网吧安全 >> 正文

经典:Web2.0客户端组件漏洞扫描(二)

2008-2-18赛迪网佚名

六、跨域JSON注入

JSON是一个用来进行信息交换的轻量级的结构。像Google,Yahoo和其他一些公司都使用JSON回调来扩展他们的Web Service。可以通过一些函数捕获和处理跨域信息。

让我们看一个例子,假设一个站点运行在http://blog.example.org,扩展了他的JSON服务,允许任何人通过JavaScript访问站点信息。这时JSON需要提供一个回调名字。

假设要访问id为10的profile,只要发送如下的Get请求。

Request:
      http://blog.example.org/Getprofile.html?callback=profileCallback&id=10

服务器返回的是:

Response:
      profileCallback({"profile":[{"name":"John","email":"john@my.com"}]})

返回的profileCallback函数以JSON的输出做为参数。类似的如果我们发送的id是11,那么获得的返回是:

Response:
      profileCallback({"profile":[{"name":"Smith","email":"smith@cool.com"}]})

我们的目标站点example.com ,在它的应用中集合了博客服务。如果扫描客户端代码,寻找document.write,可以在showprofile.html中找到如下代码片段:

<div class="code">
<pre><script>
  function profileCallback(result) {
     document.write(result.profile[0].name);
     document.write("<br>");
     document.write(result.profile[0].email);
}
</script>
<script src="http://blog.example.org/Getprofile.html?
                callback=profileCallback&id=10" src="text/javascript"></script></pre></div>

这段代码跨域访问blog.example.org把获得的输出作为参数传递给“profileCallBack” 通过调用这个页面,我们获得的输出如图7所示:

图 7. 简单的JSON回调

显然运行在example.com上的应用,在未做任何验证的情况下,使用了第三方不可信的JSON信息,这样把终端用户的Session和cookie等敏感信息暴露出来。这意味着如果博客站点将我们要访问的信息注入了恶意的Java Script代码,那么我们的机器就可能被感染。示例代码如下:

profileCallback({"profile":[{"name":"Jack","email":"<script>alert('JSON
      XSS');</script>"}]})

这样,我们的机器就会弹出如图8所示的对话框。

图 8. 通过JSON注入进行跨站脚本攻击

七、安全对策

为了保护客户端浏览器,则不能信任任何第三方信息,对所有第三方信息,例如XML,RSS feeds,JSON和JavaScript等,都要进行“沙箱”验证。

图 9 第三方信息沙箱验证

例如,在发送链接信息给DOM时,经过一个简单的函数,如下代码所示,可以过滤掉JavaScript代码注入:

function checkLink(link) {
   if(link.match(/javascript:|<|>/))
   {
      return false;
   } else {
      return true;
   }
      }

在进入DOM之前,对到来的数据流进行“沙箱”过滤,是保证客户端浏览器安全的最后一道防线。

八、结论

从最近的几次Web2.0应用的安全事件来看,主要原因来自客户端脚本的编写问题。未来,无论自动还是手动的扫描技术,都需要加强客户端DOM相关的漏洞扫描机制。实现Web2.0应用的完全自动扫描,面临着很大的挑战,这项工作仍然需要自动化机制和研究人员的智慧结合起来才能完成。一些旧的攻击向量例如XSRF(Cross-Site Request Forgery)在Web2.0技术应用中也需要重新审视。

Web2.0应用评估需要在客户端攻击向量方面投入更多的精力,以减少客户端的安全威胁。这篇文章关注了Web2.0应用的漏洞扫描技术,因为许多应用的漏洞,可以被应用层的攻击者利用,导致病毒、蠕虫的出现。

【参考文献】

[1] Brief on mashup (http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid))

[2] JavaScript Object Notation (JSON) is a lightweight data-interchange format (http://www.json.org/)

[3] Hacking Web 2.0 Applications with Firefox (http://www.securityfocus.com/infocus/1879)

[4] XSS threat classification ( http://www.webappsec.org/projects/threat/classes/cross-site_scripting.shtml)

[5] DOM Based Cross Site Scripting or XSS of the Third Kind - By Amit Klein(http://www.webappsec.org/projects/articles/071105.shtml)

[6] Web developer plugin (http://chrispederick.com/work/webdeveloper/)

[7] Dojo toolkit (http://www.dojotoolkit.com/)

[8] JSON callback (http://developer.yahoo.com/common/json.html)

[9] The Web Hacking Incidents Database (http://www.webappsec.org/projects/whid/)

[10] Cross-Site Reference Forgery - By Jesse Burns (http://www.isecpartners.com/documents/XSRF_Paper.pdf

=============================================

【参考文章】

Shreeraj Shah《Vulnerability Scanning Web 2.0 Client-Side Components Introduction》

欢迎访问最专业的网吧论坛,无盘论坛,网吧经营,网咖管理,网吧专业论坛https://bbs.txwb.com

关注天下网吧微信,了解网吧网咖经营管理,安装维护:


本文来源:赛迪网 作者:佚名

声明
本文来源地址:0
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com.,本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行