黑客攻防技术宝典:Web实战篇

更新时间:2023-05-19 14:05:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

内 容 提 要

本书是探索和研究Web应用程序安全漏洞的实践指南。作者利用大量的实际案例和示例代码,详细介绍了各类Web应用程序的弱点,并深入阐述了如何针对Web应用程序进行具体的渗透测试。本书从介绍当前Web应用程序安全概况开始,重点讨论渗透测试时使用的详细步骤和技巧,最后总结书中涵盖的主题。每章后还附有习题,便于读者巩固所学内容。

第2版新增了Web应用程序安全领域近年来的发展变化新情况,并以尝试访问的链接形式提供了几百个互动式“漏洞实验室”,便于读者迅速掌握各种攻防知识与技能。

本书适合各层次计算机安全人士和Web开发与管理领域的技术人员阅读。图灵程序设计丛书

黑客攻防技术宝典:Web实战篇(第2版)

◆著    [英] Dafydd Stuttard Marcus Pinto

译    石华耀 傅志红

责任编辑 毛倩倩

执行编辑 刘美英

◆人民邮电出版社出版发行  北京市崇文区夕照寺街14号

邮编 100061  电子邮件 315@

网址 

北京      印刷

◆开本:800×1000 1/16

印张:40.5

字数:957千字

印数:1 — 5 000册 2012年 6 月第 1 版2012年 6 月北京第 1 次印刷

著作权合同登记号 图字:01-2012-2174号

ISBN 978-7-115-28392-4

定价:99.00元

读者服务热线:(010)51095186转604 印装质量热线:(010)67129223

(010)67171154

版 权 声 明

Original edition, entitled The Web Application Hacker’s Handbook: Finding and Exploiting Security Flaws Second Edition, by Dafydd Stuttard and Marcus Pinto,ISBN 978-1-118-02647-2, published by John Wiley & Sons, Inc. Copyright © 2011 by Dafydd Stuttard and Marcus Pinto, All rights reserved. This translation published under License.

Simplified Chinese translation edition published by POSTS & TELECOM PRESS Copyright © 2012. Copies of this book sold without a Wiley sticker on the cover are unauthorized and illegal.

本书简体中文版由John Wiley & Sons, Inc.授权人民邮电出版社独家出版。

本书封底贴有John Wiley & Sons, Inc.激光防伪标签,无标签者不得销售。

版权所有,侵权必究。

译 者 序

自本书第1版出版以来,Web安全状态发生了很大变化,虽然随着人们安全意识的提高,一些漏洞已经得到修复,但随着各种新技术不断涌现,特别是Web 2.0、HTML5、无线互联网以及云服务的推出,Web应用程序的安全将面临更大的挑战。为帮助用户应对这些挑战,本书的两位作者对第1版的内容进行了修订,新增了约30%的内容,主要介绍Web安全领域的新趋势及大量新近出现的漏洞。

从第1版的读者反响来看,大多数读者认为本书内容较深,不太适合初学者学习。诚然,两位作者都是Web安全领域的资深专家,本书更是他们多年职业生涯的智慧结晶。因此,建议读者更多关注书中介绍的基本理论及作者考虑问题的角度,而不是具体的渗透测试方法。

应一些读者的要求,我们推出了书中问题答案的中文版,感兴趣的读者可以访问译者的博客(/s/blog_545eb7860101379s.html)或图灵社区本书页面(http://www.ituring. /book/885)。

由于本书涉及内容非常广泛,加之译者水平所限,书中难免存在疏漏甚至错误,译者在此恳请读者谅解并指正。

最后,向朱巍、刘美英等诸位编辑表示感谢,谢谢你们的无私帮助。还要感谢我的家人,感谢你们的默默支持。

石华耀

2012年5月20日

前 言

本书是发现并利用Web应用程序安全漏洞的实用指南。这里的“Web应用程序”是指通过使用Web浏览器与Web服务器进行通信,从而加以访问的应用程序。本书不仅分析了大量各种各样的技术,如数据库、文件系统与Web服务器,而且讨论了它们在Web应用程序中的使用情况。

如果你想了解如何运行端口扫描、攻击防火墙或以其他方式对服务器进行渗透测试,我们建议你阅读其他图书。但是,如果你希望了解渗透测试员如何攻击Web应用程序、窃取敏感数据、执行未授权操作,那么本书可以满足你的需要。本书将就以上主题展开全面而翔实的讨论。 本书概述

本书极其注重实用性。虽然我们提供了足够的背景信息与理论知识,以帮助读者了解Web应用程序中包含的漏洞;但是,渗透测试员在攻击Web应用程序时所需要实施的步骤及采用的技巧,才是我们讨论的重点所在。本书详细阐述了探查每一种漏洞所需采用的特定步骤,以及如何利用它执行未授权操作。我们还根据多年的工作经验,列出大量实例,说明在当今Web应用程序中存在的各种安全漏洞。

另一方面,安全意识就像一把双刃剑。开发者能够从了解攻击者所使用的方法中受益;相反,黑客也可以通过了解应用程序的防御机制而窥探它的受攻击面。除介绍安全漏洞与攻击技巧外,我们还将详细介绍应用程序为抵御攻击者而采取的应对措施。同时,Web应用程序渗透测试员还可以从本书中获得大量实用的建议,以帮助应用程序所有者强化他们的应用程序。 本书目标读者

本书的目标读者是Web应用程序渗透测试员,以及负责开发和管理Web应用程序的人,因为了解你的敌人有助于对他们进行有效防御。

我们希望读者熟悉核心安全概念,如登录和访问控制;并希望读者掌握基本的核心Web技术,如浏览器、Web服务器和HTTP。通过阅读本书提供的解释说明或其他参考资料,可以迅速弥补当前读者在这些领域的知识欠缺。

在介绍各种安全漏洞的过程中,我们将提供代码片断,说明应用程序为何易受攻击。这些示例都非常简单,不需要事先了解编写代码的语言就能够理解它们,但是,具备阅读或编写代码的基础知识就再好不过了。

2 前 言 本书结构

总体而言,本书根据不同主题之间的依赖关系将内容组织在一起。如果你还不了解黑客是如何攻击Web应用程序的,应该从头至尾读完本书,以了解在后续有关章节中需要用到的背景信息和技巧。如果你在这方面已经拥有一定的经验,可以直接跳到特别感兴趣的任何章节或部分。必要时,我们将提供其他章节的交叉参考,以帮助你弥补理解上的欠缺。

本书前3章介绍一些背景信息,描述当前Web应用程序的安全状况,说明它将来的发展趋势。然后将介绍影响Web应用程序的核心安全问题,以及应用程序为解决这些问题所采取的防御机制。同时还将介绍当前Web应用程序所使用的关键技术。

本书的主要部分重点讨论核心主题——渗透测试员在攻击Web应用程序时使用的技巧。我们根据实施全面攻击所需要完成的关键任务组织材料,这些任务依次为:解析应用程序的功能,检查和攻击它的核心防御机制,探查特殊类型的安全漏洞。

最后3章对本书涵盖的各种主题进行简要总结:描述如何在应用程序源代码中查找漏洞;回顾能够帮助渗透测试员攻击Web应用程序的工具;详细介绍攻击方法论,说明渗透测试员如何对一个目标应用程序实施全面而深入的攻击。

第1章描述当前在因特网上运行的Web应用程序的安全状况。尽管软件商常常保证Web应用程序是安全的,但绝大多数的应用程序并不真正安全,只要掌握一些技巧,就能够攻破它们。Web应用程序中的漏洞源于一个核心问题:用户可提交任意输入。这一章将分析造成当今应用程序安全状况不佳的关键因素,并说明Web应用程序中存在的缺陷如何导致组织庞大的技术基础架构非常易于受到攻击。

第2章描述Web应用程序为解决“所有用户输入都不可信”这个基本问题而采用的核心安全机制。应用程序通过这些机制管理用户访问、控制用户输入、抵御攻击者。这些机制还为管理员提供各种功能,帮助他们管理和监控应用程序自身。应用程序的核心安全机制还是它的主要受攻击面,在对它们实施有效攻击前,渗透测试员必须了解这些机制的工作原理。

第3章简要介绍渗透测试员在攻击Web应用程序时可能遇到的关键技术,包括相关HTTP协议、客户端与服务器端常用的技术以及各种数据编码方案。已经熟悉主要Web技术的读者可以跳过本章。

第4章描述渗透测试员在攻击一个新的应用程序时所需采取的第一步,即尽可能多地收集与应用程序有关的信息,以确定它的受攻击面,制订攻击计划。渗透测试员需要搜索并探查应用程序,枚举它的全部内容与功能,确定所有用户输入进入点并查明它所使用的技术。

第5章描述了存在漏洞的第一个区域。如果一个应用程序依靠在客户端实现的控件来保护它的安全,就可能造成这种漏洞。这种保护应用程序的方法往往存在缺陷,因为攻击者可轻易避开任何客户端控件。应用程序易于受到攻击的原因有两个:(1) 通过客户端传送数据,认为这些数据不会被修改;(2) 依赖客户端对用户输入进行检查。这一章将介绍一系列有用的技术,包括HTML、HTTP与JavaScript所采用的轻量级控件,以及使用Java applet、ActiveX控件、Silverlight和Flash对象的重量级控件。

前 言 3 第6~8章将主要介绍Web应用程序中最重要的防御机制——负责控制用户访问的机制。第6章描述应用程序确认用户身份的各种功能,包括主登录功能和更加外围的与验证有关的功能,如用户注册、密码修改和账户恢复功能。验证机制在设计和执行方面都包含大量漏洞,攻击者能够利用它们获得未授权访问。这些漏洞包括明显的缺陷,如保密性不强的密码和易于受到蛮力攻击,以及验证逻辑中存在的更微妙的问题。这一章还将详细分析许多安全性至关重要的应用程序所采用的多阶段登录机制,并描述这些机制中频繁出现的新型漏洞。

第7章介绍会话管理机制。大多数应用程序通过有状态会话这个概念补充无状态的HTTP协议,帮助它们在不同的请求中确定每个用户的身份。当Web应用程序受攻击时,这个机制是一个主要的攻击目标;因为如果能够攻破它,就能够有效避开登录机制,伪装成其他用户,而不必知道他们的证书。这一章还将分析生成和传送会话令牌过程中存在的各种常见漏洞,并描述发现和利用这些漏洞所需采取的步骤。

第8章说明应用程序如何实施访问控制。应用程序主要依靠验证与会话管理机制来完成这项任务。本章将介绍各种破坏访问控制的技巧,以及探查和利用这些弱点的方法。

第9章和第10章介绍大量相关漏洞。如果应用程序以不安全的方式在解释型代码中插入用户输入,就会造成这些漏洞。第9章首先详细介绍SQL注入漏洞,讨论各种攻击方法,从最明显、最简单的方法到一系列高级攻击技巧(如带外通道、推断和时间延迟)。对于每一种漏洞和攻击技巧,我们将描述3种常用数据库(MS-SQL、Oracle和MySQL)之间的相关差异,然后介绍一系列针对其他数据存储(包括NoSQL、XPath和LDAP)的类似攻击。

第10章介绍几种其他类型的注入漏洞,包括注入操作系统命令,注入Web脚本语言,文件路径遍历攻击,文件包含漏洞,注入XML、SOAP、后端HTTP请求和电子邮件服务。

第11章将介绍应用程序受攻击面的一个重要的、常被人们忽略的区域——实现其功能的内部逻辑。应用程序逻辑中的漏洞各不相同,它们比SQL注入与跨站点脚本之类的常见漏洞更难以辨别。为此,我们将列举一系列实例,其中存在的逻辑缺陷导致应用程序易于受到攻击,借此说明应用程序设计者与开发者所做出的各种错误假设。根据这些各不相同的缺陷,我们将进行一系列特殊测试,以确定许多常常难以探测的逻辑缺陷。

第12章和第13章介绍一类广泛存在且广受关注的相关漏洞,即应用程序的恶意用户利用Web应用程序中的缺陷攻击其他用户,并以各种方式攻破这些用户。第12章介绍这中最主要的漏洞——一种影响因特网上的绝大多数Web应用程序的广泛存在的漏洞。我们将详细分析各种类型的XSS漏洞,并介绍检测和利用即使是最难以察觉的XSS漏洞的有效方法。

第13章介绍针对其他用户的几种其他类型的攻击,包括通过请求伪造和UI伪装诱使用户执行操作、使用各种客户端技术跨域获取数据、各种针对同源策略的攻击、HTTP消息头注入、cookie注入和会话固定、开放式重定向、客户端SQL注入、本地隐私攻击以及利用ActiveX控件中的漏洞。最后,我们将讨论一系列不依赖任何特定Web应用程序中的漏洞、但可以通过任何恶意Web站点或处于适当位置的攻击者实施的针对用户的攻击。

第14章并不介绍任何新的漏洞,而是描述一种渗透测试员攻击Web应用程序时需要掌握的技巧。由于每种应用程序都各不相同,大多数攻击都经过某种方式的定制(或自定义),以针对应

4 前 言 用程序的特殊行为,以及发现对攻击有利的操纵方法。这些攻击还要求提出大量相似的请求,并监控应用程序的响应。手动执行这些请求非常费力,而且容易出错。要成为真正熟练的Web应用程序黑客,必须尽可能自动实施攻击步骤,使定制攻击更加简单、快捷而高效。本章将详细描述一种行之有效的方法,以完成这项任务。我们还将讨论在使用自动化技巧时遇到的各种障碍,包括防御性的会话处理机制和CAPTCHA控件。此外,我们还将介绍可用于克服这些障碍的工具和技巧。

第15章分析应用程序如何在遭受攻击时泄露信息。当实施本书描述的其他各种攻击时,渗透测试员应该始终监控应用程序,以确定其他可供利用的信息泄露来源。我们将介绍如何分析应用程序的反常行为与错误消息,以深入了解应用程序的内部工作机制,并细化攻击。我们还将介绍如何利用存在缺陷的错误处理机制,从应用程序中获取敏感信息。

第16章介绍在以C和C++等本地代码语言编写的应用程序中存在的一些重要漏洞。这些漏洞包括缓冲区溢出、整数漏洞和格式化字符串漏洞。这个主题涉及的内容非常广泛,我们将重点讨论如何在Web应用程序中探查这些漏洞,并分析一些实例,了解造成这些漏洞的原因,以及如何对它们加以利用。

第17章介绍一个常被忽略的Web应用程序安全领域。许多应用程序采用一种分层架构,无法恰当地隔离这些层面可能会导致应用程序易于受到攻击,导致攻击者能够利用在其中一个组件中发现的漏洞迅速攻破整个应用程序。共享托管环境带来另外一些严重的威胁,有时,攻击者可以利用一个应用程序中存在的缺陷或恶意代码攻破整个环境及其中运行的其他应用程序。本章还会介绍一种众所周知的共享托管环境“云计算”中出现的各种威胁。

第18章描述各种攻击技巧,说明如何通过攻击Web服务器进而攻击其中运行的Web应用程序。Web 服务器中存在的漏洞主要包括服务器配置方面的漏洞以及Web服务器软件中的安全漏洞。这个主题属于本书的讨论范围,因为严格来讲,Web服务器是技术栈的另一个组件。但是,大多数Web服务器都与在它们之中运行的Web应用程序关系密切。因此,本书介绍针对Web服务器的攻击,因为攻击者常常可以利用它们直接攻破一个应用程序,而不是首先间接攻破基础主机,然后再攻击Web应用程序。

第19章描述另外一种查找安全漏洞的方法。这种方法与本书其他章节讨论的方法截然不同。许多时候,我们都可以对应用程序的源代码进行审查,并且不必得到应用程序所有者的协助。通常,审查应用程序的源代码可以迅速确定一些漏洞,但在运行的应用程序中探查这些漏洞可能极其困难,或者需要耗费许多时间。我们将介绍一种代码审查方法,并简要说明如何对以各种语言编写的代码进行审查,以帮助读者在编程经验不足的情况下进行有效的代码审查。

第20章详细介绍本书描述的各种工具。笔者在攻击真实的Web应用程序时使用的就是这些工具。我们将分析这些工具的主要功能,并详细描述充分运用这些工具的工作流类型。另外,讨论一些全自动工具能否有效地发现Web应用程序中存在的漏洞,并提供一些提示和建议,说明如何充分利用工具包。

第21章综合介绍本书描述的所有攻击步骤与技巧。我们将根据渗透测试员在实施攻击时所需完成的任务之间的逻辑依赖关系来组织这些步骤与技巧,并对它们进行排序。如果你已经阅读并

前 言 5 理解书中描述的各种漏洞和攻击技巧,就可以把这个方法当作一个完整的清单和工作计划,对Web应用程序实施渗透测试。 新增内容简介

第1版出版4年以来,许多事情发生了改变,而许多事情仍保持原状。当然,新技术继续高速发展,这引发了各种新型漏洞和攻击。同时,黑客们还开发出了新的攻击技术,设计了利用旧有漏洞的新方法。但是,这些技术或人为因素都不可能引发革命。今天应用程序采用的技术早在许多年前就已经确立,现今的先进攻击技术所蕴涵的基本概念也早在高效应用这些技术的许多研究人员出生之前就已经成形。Web应用程序安全是一个动态且充满活力的研究领域,但多年来,人类积累的智慧也在缓慢进化,因此,当前的技术状况与10年或更久以前的情况截然不同。

第2版并不是对第1版的彻底改写,第1版的大部分内容,现在仍然适用。第2版约30%的内容为新增内容或改动很大,剩余70%的内容仅有小幅改动或未作任何修改。如果读者购买了本书,但对这些改动感到失望,请不要放弃。如果你已经掌握了第1版中介绍的所有技巧,说明你已经学会所需的绝大部分技能和知识。这样的话,你就可以集中精力学习本书的新增内容,迅速了解Web应用程序安全领域近年来的发展变化情况。

第2版的一个显著特点是,在整本书中提供了所介绍的几乎所有漏洞的真实示例。读者可以使用“尝试访问”链接以交互方式在线运行书中讨论的示例,以确认可以发现并利用其中包含的漏洞。书中提供了几百个“示例实验室”,读者可以根据自己阅读本书的进度逐个访问这些“实验室”。访问这些在线“实验室”需要支付一定的订阅费用,这些费用主要用于管理和维护相关基础设施。

如果读者希望集中精力学习第2版中的新增内容,以下是对新增或改写内容的汇总。

第1章仅部分内容有所改动,将介绍Web应用程序的新应用、技术领域的一些显著趋势,以及组织的典型安全边界将如何继续发展变化。

第2章仅有小幅改动,新增内容将介绍几个用于避开输入确认防御的常规技巧示例。

第3章增加了几节新内容,主要介绍各种新技术及已在第1版中简要介绍的技术。新增的主题包括REST、Ruby on Rails、SQL、XML、Web服务、CSS、VBScript、文档对象模型、Ajax、JSON、同源策略和HTML5。

第4章仅有少量更新,以反映用于解析内容和功能的技术的发展趋势。

第5章进行了大幅改动。具体来说,基本上重新编写了有关浏览器扩展技术的几节内容,详细介绍了反编译和调试字节码的常规方法、如何处理常规格式的序列化数据,以及如何处理渗透测试过程中遇到的常见问题,包括不支持代理的客户端和SSL问题。本章还将介绍Silverlight技术。

第6章内容与现今情况保持一致,仅有小幅改动。

第7章新增内容主要介绍自动测试令牌随机性的新工具。本章还包含有关攻击加密令牌的新内容,包括如何在不了解所使用的加密算法或加密密钥的情况下篡改令牌的实用技巧。

第8章将介绍一些访问控制漏洞,包括由直接访问服务器端方法以及平台配置不当(将基于

本文来源:https://www.bwwdw.com/article/mal4.html

Top