早在1999年,本书第1版就向读者介绍了计算机网络和系统多么容易闯入。尽管今天还有许多人没有意识到这个事实,但是很多人正在开始理解防火墙、安全操作系统配置、软件供应商补丁维护和许多其他以前觉得很神秘的信息系统安全的基础知识。
遗憾的是,互联网所带来的快速发展已经把“球门柱”推向了前场。防火墙、操作系统安全性和最新的补丁都可能被简单的Web攻击所绕过。尽管那些要素仍然是所有安全架构中的关键部件,但是对于越来越频繁而且不断成熟的新一代攻击来说明显无能为力。
这不是我的一家之言。Gartner集团指出,75%的网络攻击都在Web应用级别,而在300个经过审核的网站中,97%的网站都容易受到攻击。2009年秋季的WhiteHat网站安全统计报告称,83%的网站至少有一个严重的漏洞,64%的网站目前至少有一个漏洞,而漏洞解决率仅为61%,余留了8902个未解决的问题(样本大小:1364个网站)。毁灭性攻击的新闻现在已经很常见:身份盗窃资源中心(Identity Theft Resource Center,ITRC)称,在2010年上半年,至少有301个安全性缺口导致了超过820万份身份记录曝光。估计因为安全性缺口所引起的敏感数字记录侵害总数还会再攀新高:Verizon Business 2010数据破坏调查报告中称,6年来,仅查看900余种缺口样本就有超过9亿条记录受到侵害。
我们不能停止互联网商务的脚步,关上大门。我们除了划定一条底线,并保卫信息空间中无数的组织和个人所划定的阵地之外,别无选择。对于已经组建了最基本的网站的人来说,这是一个令人畏惧的任务。面对现有协议如HTTP的安全局限性,以及技术挑战(包括XML Web服务、AJAX、RSS、移动应用以及用户生成内容等)不断加速的脚步,设计和实现一个安全的Web应用可能成为一个戈尔地雅斯难结 [1] 。
本书为你展示如何使用书中提出的双管齐下的方法来应对这一挑战。
首先,我们把Web应用将要面对的最大威胁分类,并且非常详细地解释它们的工作原理。我们是如何知道这些最大的威胁的?因为我们受雇于世界上最大的公司,进入它们的Web应用,每天使用基于这些威胁的攻击来开展工作。我们几人做这项工作的时间加起来已经超过30年,我们研究最新出现的攻击,开发自己的工具和技术,并且将它们组合成为最有效方法,用于渗透现有的Web应用安全。
在你注意到我们展示的这些危险之后,我们告诉你如何避免所有这些攻击。在不理解本书中的信息的情况下开发Web应用,等同于开车时不系安全带,还开上光滑的路面,穿过大裂谷,没有刹车,并且把油门踩到最大。
本书由多个章节组成,每个章节描述攻击方法论的一个方面。这种结构组成了本书的主干,因为如果没有一种方法论,那么本书就仅仅是一堆没有上下文和意义的信息。以下是本书章节内容。
第1章 Web应用入侵基础。 这一章中,我们广泛地概述了Web应用入侵攻击和技术,同时展示了具体的实例。系上你的安全带,因为我们就要离开堪萨斯了。
第2章 剖析。 任何方法论的第一步往往是最重要的,剖析也不例外。该章讲解了作为攻击Web应用及其相关基础设施前奏的侦查过程。
第3章 Web平台入侵。 如果建立在充满安全漏洞的Web平台之上,那么没有一个应用能够安全,该章描述了大部分流行的Web平台包括IIS、Apache、PHP和ASP.NET的攻击、检测躲避技术及其对策。
第4章 攻击Web验证。 该章介绍常见Web验证机制的攻击和对策,包括基于密码、多因素(例如CAPTCHA)以及Windows Live ID这样的在线验证服务。
第5章 攻击Web授权。 了解通过高级会话分析、劫持和完成(Fixation)技术。
第6章 输入注入攻击。 从跨站脚本到SQL注入,大部分Web攻击的实质是意外的应用输入。在该章中,我们回顾经典的恶意输入类别,从超长输入(像缓冲区溢出)到规范化攻击(像臭名昭著的dot-dot-slash),并且揭示应该始终加以怀疑的元字符(包括角括号、引号、单引号、双破折号、百分号、星号、下划线、换行、&、管道符号和分号),从入门级到高级的SQL注入工具和技术,以及隐蔽编码技术和输入验证/输出编码对策。
第7章 攻击XML Web服务。 不要遗漏了SOAP,因为这一章将揭示如何通过包括WSDL暴露、输入注入、外部实体注入和XPath注入等技术发现和攻击Web服务漏洞。
第8章 攻击Web应用管理。 如果前门上锁,就试试后门!该章揭示了大部分针对远程服务器管理、Web内容管理/授权、管理员错误配置以及开发者造成错误的常见Web应用管理攻击。
第9章 入侵Web客户端。 你可知道,浏览器实际上是不安全的东西直接进入你家里和办公室的一个有效的途径?来一次最危险的Web浏览器攻击之旅,然后遵循我们提出的“获得更安全的互联网体验10大步骤”(以及本章列出的许多附加对策),在浏览的时候就能更轻松地呼吸。
第10章 企业Web应用安全计划。 在该章中,我们短暂地告别零知识/黑盒分析,解释一种健壮的全知识/白盒Web应用安全评估方法学的优点,包括威胁建模、代码评审、动态Web应用扫描、安全测试以及将安全集成到整个Web应用开发生命期和IT运作中。该章是针对中大型企业的IT运作和开发人员,他们需要实施我们的Web应用评估方法从而得到伸缩性、一致性和可接受的投资回报。
最后,我们添加了有用的附录,这并不代表这些内容不重要,具体包括:“Web安全检查列表”和“Web黑客工具和技术快速参考”。
模块性、组织和易读性
很显然,本书可以从头到尾阅读,来得到Web应用渗透测试的全面描述。但是,我们尽力使每章独立,这样可以逐个模块地消化本书,适合时间紧张的目标读者。
而且,我们严格地坚持清晰、易于理解和简练的写作风格,这是读者对本书的总体印象。我们知道读者很忙,需要直接地得到第一手资料,而不是大量的空话和无谓的行话。正如本书以前版本的读者们所评论的:“读起来像小说,如地狱般令人惊恐!”我们认为,从头到尾阅读和逐个章节阅读都能使你满意,本书的结构适合于任何一种阅读风格。
章节小结及参考与延伸阅读
本书每一章的结尾处都有两个特别部分:“小结”和“参考与延伸阅读”。
“小结”顾名思义,是本章中介绍的主要概念的摘要,以及对各种对策的强调。我们希望,如果你阅读了每章的小结,就能知道如何加固Web应用来对付任何形式的攻击。
每章的“参考与延伸阅读”部分包含了该章正文介绍的每个条目所需的URL、ISBN号码和其他信息,这些条目包含供应商安全通告和补丁、第三方建议、商业和免费工具、新闻中的Web入侵事件以及关于正文的信息详细或者扩展读物。这样,如果你需要查找某些内容,可以翻到这一章的末尾去寻找。我们希望通过汇集附加的参考内容能够改进本书的整个阅读体验。
基本组成部分:攻击与对策
本书的基本组成部分是每一章所讨论的攻击和对策,因此我们使用了非常醒目的攻击与对策图标。
攻击图标
这个图标强调了各种攻击方法,使读者找到特定的渗透测试工具和方法很容易,并直接为你指出说服管理层投资新的安全倡议所需要的信息。
许多攻击附有危险等级,计分方法如下:
伴随着每种或者每个系列的攻击,也有相应的对策,图标如下:
对策图标
这个标志应该会引起你对关键修复信息的注意。
其他辅助图标
我们还使用了很多视觉增强图标来突出显示那些经常被忽视的细节。
注意 提示 警告
Web应用安全技术变化很快,我们承认书籍通常很难跟上这种急剧变化的研究领域。
因此,我们建立了一个网站,跟踪与本书讨论的主题相关的新信息、勘误表,以及书中介绍的公共工具、脚本和技术。网站地址为
http://www.webhackingexposed.com
网站还提供了论坛,可直接与作者通过以下邮件交流:
joel@webhackingexposed.com
我们希望读者在阅读本书各个章节时经常登录这个网站,查看更新的材料、获得我们提到的工具,并跟上Web安全技术的变化形势。否则,你永远无法在进行防御时预先得知哪些新的发展可能危及你的应用。
我们在本书中倾注了感情、才智和经验,我们真诚地希望所有的努力能为负责Web应用安全的读者节约大量的时间。我们认为你已经做出了一个有勇气和前瞻性的决策,希望在互联网上获得一席之地,但是,就像你将在本书中看到的那样,你的工作在网站启动的一刻才刚刚开始。不要惊慌,打开这本书,通过学习你会得到莫大的安慰:在下一个Web大灾难登上报纸头版时,你甚至连眼睛都不会眨一下。
[1] 戈尔地雅斯难结——希腊神话中的一个难题,神谕解开该结即为亚细亚国王。——译者注