六、跨域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所示:
显然运行在example.com上的应用,在未做任何验证的情况下,使用了第三方不可信的JSON信息,这样把终端用户的Session和cookie等敏感信息暴露出来。这意味着如果博客站点将我们要访问的信息注入了恶意的Java Script代码,那么我们的机器就可能被感染。示例代码如下:
profileCallback({"profile":[{"name":"Jack","email":"<script>alert('JSON XSS');</script>"}]})
这样,我们的机器就会弹出如图8所示的对话框。
七、安全对策
为了保护客户端浏览器,则不能信任任何第三方信息,对所有第三方信息,例如XML,RSS feeds,JSON和JavaScript等,都要进行“沙箱”验证。
例如,在发送链接信息给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 |
关注天下网吧微信,了解网吧网咖经营管理,安装维护:
本文来源:赛迪网 作者:佚名