使用 Firefox攻击Web2.0应用(三)
2007-07-24 13:05:59 来源:WEB开发网3.3调用逻辑的发现
为了剖析客户端上基于Ajax的Web应用,我们需要仔细浏览每个事件,去判断它们的处理逻辑。一种分析处理逻辑的方式是逐行阅读源代码。通常,每个事件调用只处理几个函数。因此,需要使用一种技术,能够在浏览器中单步执行相关的代码。
目前已经开发出有几款JavaScript的调试器,可以达到以上要求,Firebug就是其中之一。在我们的例子里再次使用Firebug来进行单步执行。
让我们以登录过程为例进行说明,页面login.html从浏览器用户那里接收用户名和密码,如图6所示。使用Firebug的“Inspect”功能去确定每个表单的属性。
图6 使用Firebug查看表单属性
图6的例子中,检查表单的属性后,可以清楚的发现一个调用发生在auth()函数中。切换到“Debugger”面板,如图7所示,可以看到这个事件所对应的内部逻辑。
图7 使用Firebug进行单步调试
这个页面使用到的JavaScript脚本的依赖关系都可以从图7中清楚的看到。这个页面使用到了ajaxlib.js和validation.js这两个脚本文件。这两个脚本文件中存在一些函数被登录页面使用到。我们可以在auth()这个函数中设下断点,然后在用户名和密码框内输入用户名和密码,点击“Submit”,开始单步执行。
图8 设置断点控制执行过程
现在,我们来单步执行该程序,点击“Step in”,进入下一步,运行到如图8中高亮显示的部分,JavaScript的执行转到了另外一个位于validation.js文件中的函数userval(),如图9所示。
图9 单步执行到validation.js脚本
前面的图9所示的函数用来验证用户名的合法性。一旦验证通过,会执行下一个函数callGetMethod()。如图10所示。
图10 进行一个Ajax调用
最后,到达执行序列的最后,可以看到通过XHR对象调用后台的Web Services,如图11所示。
图11 Firebug控制台显示调用的Web Service
这里,我们就获得了后台服务器Web Services的资源的位置。
http://example.com/2/auth/ws/login.asmx/getSecurityToken?username=amish&password=amish
上述资源显然是运行在.net框架下的一个Web service。经过分析过可以发现,用户验证可能可以被绕过,这对Web2.0的应用来说无疑是潜在的威胁。
进一步考虑,我们可以通过使用WSDL(Web Services Description Language)文件对这个Web service进行暴力扫描。也可以进行一些注入攻击,例如SQL注入或者XPATH注入,可以使用诸如wsChess等工具,wsChess 是Net-Square公司所推出的基于.NET的Web Services安全工具包。
在这个例子中,该Web Service存在XPATH注入漏洞,对Web Service的安全评估超出了这篇文章的讨论范围。另外,这种单步执行技术,可以帮助识别一些客户端攻击,例如XSS(跨站脚本攻击),操纵DOM的攻击,绕过客户端的安全控制,恶意Ajax代码注入等。
四、结论
SOA(面向服务体系结构)Ajax,RIA(Rich Internet Application)和Web Services是下一代Web应用的重要组成部分。为了跟上这些技术的发展,应对下一代Web应用中的安全挑战,我们需要研究不同的方法,同时开发一些安全工具。评估这些应用安全性的一个高效的手段就是使用浏览器。
本文我们采用了几种技术去评估Web2.0应用的安全性。使用这些方法,可以发现和分离出一些与Ajax相关的安全漏洞。浏览器自动化脚本可以帮助我们在客户端资源中寻找和定位安全漏洞。
下一代Web应用中,JavaScript得到了广泛的应用。方便好用的调试工具是我们用来战胜安全漏洞的利器。这篇文章介绍了使用Firefox浏览器及其插件对Web2.0应用进行安全评估。
更多精彩
赞助商链接