Web应用安全之漏洞测试技术

如今,Web在社交功能方面日益增长,但是它的安全性却日益堪忧。事实上,据WASC在2009年初的估算,所有网站中有87%都存在安全隐患。虽然一些公司有能力外聘安全专业人员进行渗透测试,但并非所有公司都有支付得起20,000到40,000美元的外包安全审计费用。相反,公司可以自己设法让开发人员获悉这些安全威胁,充分引起他们的注意,从而在开发代码时不会留下这样的安全隐患。
常用缩写词

HTML:超文本标记语言

SQL:结构化查询语言

URL:统一资源定位器

要想编写出安全的代码,您必须首先获悉您的程序所面临的威胁有哪些。本文考察了一些非常流行的漏洞,诸如跨站点脚本攻击和SQL注射,同时还介绍了可以一些安全工具。这些工具不仅可以帮我们保护自己的网站,还能帮我们保护数据和网络。本文无法替代安全专业人员,也不会教授艰深的安全技巧。相反地,我们主要介绍如何发现代码中潜在的漏洞,以及如何修复它们。

常见安全漏洞

开始之前,我们需要对要查找的漏洞本身有所了解。我们先来看一下最流行的一个漏洞,即跨站点脚本攻击(XSS)。XSS是网站被注入恶意脚本而导致的,举例来说,Mallory编写了一段脚本,它能够将用户转至一个受信任的网站上,而该站点则是由Alice创建的。 Mallory把这个脚本插入一个流行的论坛上后,Bob在论坛中看到并点击了这个链接,并在Alice的站点上创建了一个帐号。 这时,这个脚本利用Alice的网站上的一个XSS漏洞将Bob的cookie发送给了Mallory,这样一来,Mallory就可以冒充Bob并窃取其信息了。

SQL注入是第二大流行的安全漏洞,这主要是拜网站对数据库的依赖性日益增强所赐。SQL注入实际上非常简单:发现一个连接数据库的网站后,心怀叵测的黑客可以执行一个SQL查询来实现开发人员始料未及的功能:绕过身份验证或者操纵数据。这种类型的攻击,正是Albert Gonzalez窃取13000万信用卡号的作案手法。在发动SQL注入攻击过程中,Mallory发现了Alice用于销售电子产品的网站。这次,Mallory并没有像平常那样输入用户名和密码,而是在用户名字段中输入了‘) OR 1=1- 。虽然她它的输入中包含了连字符(-),但是其它部分就无所谓了,因为1=1总是成立,所以她将成功登录。现在,她可以操纵数据库以窃取Bob的客户信息。这个例子以最简单的方式对SQL注入进行了演示,您可以从中看到利用这种攻击对于攻击者而言是多么简单。

如果没有专业的安全人员团队,普通的Web开发者看起来很难跟这些漏洞相抗衡。幸运的是,事实并非如此。许多工具可以帮助我们查找网站中潜在的漏洞,如果据此采取必要的措施的话,我们就能够有效的防御这些漏洞导致的攻击。为了帮我们识别潜在危险,像WebScarab 和Paros 之类的工具能够捕捉浏览器和服务器之间的会话,并能爬行网站。掌握这些信息后,您就可以检测这些漏洞并采取防御措施了。

WebScarab

OWASP开发的WebScarab是分析浏览器请求和服务器应答的首选代理。WebScarab除了提供数据包分析功能外,还可以对站点进行Fuzz测试,以寻找上述的漏洞。