技术开发 频道

AppScan:软件安全的“充电器”

【IT168 专稿】

    Web2.0、AJAX、RIA这些技术给我们带来更好的用户体验,给我们的网络生活带来更多的精彩的同时,也给黑客们更多展开攻击的机会。

    Billy Hoffman认为近年来越来越多针对Web应用程序展开的攻击,其实与人们过度追捧这些新技术有很大的关系。他认为Web2.0几乎就像又一场"泡沫",大量的热钱投入。Web2.0的很多技术是很优秀的,然而很多人因为错误的原因(追赶潮流)把客户端的程序换成基于Web的应用程序。

    这种过度追捧导致很多缺乏Web开发经验的人进入这个领域,就像上世纪90年代的"tech boom"一样,很多人在读完几本类似《24小时精通ASP.NET》这样的书之后,开发了一大堆"拷贝、粘贴"式的Web应用程序。然而,这些入门材料的例子并不包含非常好的实践,里面的例子往往过于简单,尤其是在安全方面过于草率处理。

    由此带来的近年广泛出现的Web安全问题也就不奇怪了。最近Web应用程序的安全开发和质量保证被提高到新的高度,IBM、HP、Fortify都纷纷推出新的软件安全测试工具,誓要与黑客们展开"大斗法",究竟"魔高一丈"还是"道高一尺"呢?也许永远也得不到答案。

    作为软件测试人员和质量保证者,我们唯有及时补充自己的安全知识,才能有效保证应用程序的安全,适当借助合适的工具也许能助我们一臂之力。最近IBM发布的AppScan7.8中就包含一个名为"Result Expert"的新特性,其中的Advisory和Fix Recommendation页会详细解释漏洞的相关的知识,可用于教育我们这些缺乏软件安全意识的开发人员,其中的修复建议可以详细到代码层。而测试人员则可以从Request/Response页中学习到安全测试的一些技巧。

    初学软件安全测试的人都会为缺乏实践的环境而烦恼,仅仅看一下书,看一下漏洞描述和攻击过程是无法深入理解安全问题的来龙去脉的,所以最好能结合一些存在漏洞的软件和Web站点进行实践。AppScan附带的Sample是一个名为AltoroJ的J2EE项目,Altoro Mutual是一个包含了一些安全漏洞的Web应用程序,可运行在Tomcat 5.5的服务器上。

    打开Developer版的AppScan(与Eclipse绑定,现在很多工具都时兴把自己插到Eclipse这个平台上),在Eclipse的Welcome页面中选择"Samples",进入"Rational AppScan Developer Edition sample"。

    导入Sample项目之前需要安装和配置好Tomcat,步骤如下:

    1、在Eclipse中选择Window -> Show View -> Servers打开Server视图。

    2、在Server视图中定义一个新的Tomcat 5.5服务器:右键 -> New -> Server。在接下来的New Server向导中选择Apcahe tomcat v5.5服务器。

    3、在添加和移除项目页中选择AltoroJ。

    导入项目后,我们可以针对这个Sample项目新建一个安全测试,方法是选中AltoroJ项目,然后按右键,选择New ->AppScan security scan。

    "Test Connection"按钮可用于测试"Application URL"中的页面是否可以访问到。"View licensed targets"按钮用于查看可扫描的对象是哪些,这与license有关,试用版的license可以扫描host在本机的页面。如果要同时扫描源代码,可以把"source code scan"也选择上。

    接下来的操作可以参照右边的"Cheat Sheets"视图中的步骤指示来一步步完成,录制登录网站的过程中输入用户名"jsmith",密码"demo1234"。

    简单扫描了一下Altoro Mutual网站的查询功能后,就发现了4种类型的安全漏洞。包括跨站脚本攻击漏洞(XSS)、Include Injection、SQL注入、信息泄漏。

    对于SQL注入、XSS大家可能比较熟悉,对于Include Injection大家可能就比较陌生了,幸好AppScan在Advisory中给出了详细的解释:

    It is possible to view the contents of any file (for example, databases, user information or configuration files) on the web server (under the permission restrictions of the web server user)

    翻译过来就是:这个漏洞可能导致Web服务器上的数据库、用户信息或配置文件等文件内容的泄漏(即使是那些权限被Web服务器加以限制的用户也可以浏览到这些文件内容)。

    进一步的,AppScan还告诉我们可能导致这个漏洞的原因是:用户的输入没有被很好地验证到。而且还给出一个JSP的例子,告诉我们漏洞是怎样在代码中引入的:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1255">
    <title>Vulnerable JSP</title>
</head>
<body>
    <jsp:include page='<%= request.getParameter("val") %>' />
</body>
</html>

    有如此详尽的漏洞成因分析,相信对于软件开发团队形成安全开发非常好的实践而言是非常有帮助的。

0
相关文章