Web应用漏洞侦测与防御:揭秘鲜为人知的攻击手段和防御技术 PDF下载 公众号 其他格式

手机扫码免费下载

纠错留言

#电子书截图

Web应用漏洞侦测与防御:揭秘鲜为人知的攻击手段和防御技术截图

#电子书简介

Mike Shema,国际知名的网络安全专家,现就职于Qualys,专注于自动化Web评估服务。之前曾是Foundstone信息安全咨询公司首席咨询师和培训师,在网络渗透测试、无线网络安全、代码审核、Web安全等方面有丰富的经验,撰写了多部信息安全技术图书,如《黑客大曝光:Web应用安全机密与解决方案》、《反黑客工具箱》和《黑客札记:Web安全手册》,并经常在世界范围的安全技术大会上演讲。

第1章 Chapter 1
HTML5
本章内容
HTML5的新增特性
使用及滥用HTML5的安全性考虑
书面语言的历史至少可以追溯到5000年前,当时的苏美尔人使用楔形文字来记录账簿、法律以及清单,这种原始的石刻标记语言为现代的超文本标记语言(HTML)开辟了道路。类似维基百科这样的网站,不就是收集了拜占庭法律、《吸血鬼猎人巴菲》剧集列表、《星际迷航》中的外星人名单等内容吗?由此可见,人类喜欢使用书面语言来记录各种信息。
很大程度上,HTML是基于多种事实上的实现发展起来的标准。很少有浏览器定义HTML是什么,这意味着HTML标准在一定程度上体现了真实世界。如果你根据规范来书写网页,那么浏览器将会按照你的期望来适当地渲染它。在早期的演化发展过程中,标准的缺点是当时的页面并不统一,不同的浏览器有着不同的怪异(quirk)模式,导致产生类似如下的脚注:“建议使用IE 4浏览本网页”、“建议使用Mosaic浏览本网页”。这些怪异模式成为了开发人员的噩梦,导致出现不良设计模式(例如常见的通过用户代理嗅探来侦测性能而不是通过特性测试)或过度依赖于插件(例如Shockwave)。标准中还包含一些很少使用的标签()、糟糕的UI设计(和)或非常令人厌恶的标签()。HTML2试图澄清某些差异,于1995年11月成为标准。HTML3未能与HTML2合并为可接受的标准。HTML4于1999年12月提出。
8年之后,HTML5作为公共草案出现,过了一年左右才大受欢迎。现如今,在HTML4出现12年之后,标准的最新版本正准备从草案状态变为正式状态。在这12年间,网络逐渐成为人们日常生活中无所不在的组成部分,从第一条包含网站URL的电视广告到数十亿美元的IPO,再到伴随技术或文化的变迁带来的类似欺诈或犯罪这样的黑暗面。
当前的浏览器对HTML5的支持程度多种多样。很多网站以这样或那样的方式使用HTML5。本章所介绍的标准仍然是正在使用的草案,尽管如此,大多数细节都已经足够确定,最多只有JavaScript API或标头(header)发生细微的变化。主要的安全原则仍然是适用的。
HTML5中包含了Web开发人员从他们最喜爱的浏览器中带来的事实标准映射到HTML5标准之中,但更重要的是,标准的制定者在历史实现与优化架构的规范之间进行了认真地考虑。HTML5最引人注目的特点就是对如何解析HTML文档进行了明确描述。最明显的是,各浏览器的实现并不一致,使得针对HTML和JavaScript的攻击可以围绕这些怪异模式下手乃至利用它们。我们将会在后续章节中介绍这些怪异模式带来的安全问题,尤其是第2章。
本章将介绍HTML5及其相关标准的新概念、关注点和考虑等。那些希望针对这些标准的设计找出快速攻击方法或细微漏洞的人会感到失望。由浏览器开发人员、网站开发人员以及安全性测试人员等人所组成的安全生态圈已经对HTML5给予了仔细的关注。通过对HTML4和HTML5的比较可以发现,在HTML4标准中,安全性(security)和隐私(privacy)这两个词分别出现了14次和1次,而在HTML5当前的草案中则分别出现了73次和12次。尽管更多次数地提及并不能够说明一定就会更加安全,但是至少体现出在标准的发展过程中,安全和隐私已经得到更多关注,变得更加重要。
新的标准并未解决浏览器可能面对的所有的安全问题,它所做的是减少之前的标准中不明确的做法、提供更多关于安全实践的指导、建立更严格的HTML解析规则、在不弱化浏览器的前提下引入新特性。新标准带来的好处是更好的浏览体验,缺点是浏览器竞相增加对新特性的支持以及网站开发人员接纳它们的过程中在实现中带来的错误和bug。
……

译者序
前言
第1章HTML5
1.1新的文档对象模型
1.2跨域资源共享
1.3Websocket
1.3.1传输数据
1.3.2数据帧
1.3.3安全性考虑
1.4Web存储
1.5Web Worker
1.6杂七杂八
1.6.1History API
1.6.2API草案
1.7小结
第2章HTML注入及跨站脚本攻击
2.1理解HTML注入
2.1.1确定注入点
2.1.2确定反射类型
2.1.3确定注入呈现位置的上下文
2.1.4攻击汇总
2.1.5利用字符集
2.1.6利用失效模式
2.1.7绕过弱的排除列表
2.1.8利用浏览器的怪异模式
2.1.9不寻常的攻击载体
2.1.10XSS的影响
2.2部署应对措施
2.2.1确定静态字符集
2.2.2规范化字符集及编码
2.2.3对输出进行编码
2.2.4当心排除列表和正则表达式
2.2.5重用代码,不要重新实现代码
2.2.6JavaScript沙盒
2.2.7浏览器内置XSS防御
2.3小结
第3章跨站请求伪造
3.1理解跨站请求伪造
3.1.1CSRF实现机制
3.1.2借助强制浏览的请求伪造
3.1.3无需密码攻击已认证动作
3.1.4危险关系:CSRF和HTML注入
3.1.5当心错综复杂的Web
3.1.6相关主题:点击劫持
3.2部署应对措施
3.2.1朝着正确方向努力
3.2.2保卫Web浏览器
3.2.3脆弱性和似真性
3.3小结
第4章SQL注入攻击及数据存储操纵
4.1理解SQL注入
4.1.1攻击路线:数学和语法
4.1.2攻击SQL语句
4.1.3剖析数据库
4.1.4其他攻击向量
4.1.5真实世界中的SQL注入攻击
4.1.6HTML5的Web存储API
4.1.7不使用SQL的SQL注入攻击
4.2部署应对措施
4.2.1验证输入
4.2.2对语句进行保护
4.2.3保护信息
4.2.4给数据库打最新的补丁
4.3小结
第5章攻破身份认证模式
5.1理解身份认证攻击
5.1.1重放会话令牌
5.1.2暴力破解
5.1.3网络嗅探
5.1.4重置密码
5.1.5跨站脚本攻击
5.1.6SQL注入
5.1.7诈骗和易受骗性
5.2部署应对措施
5.2.1保护会话cookie
5.2.2使用安全认证方案
5.2.3借助用户的力量
5.2.4骚扰用户
5.2.5请求限制
5.2.6日志与三角测量
5.2.7击败钓鱼攻击
5.2.8保护密码
5.3小结
第6章利用设计缺陷
6.1理解逻辑攻击和设计攻击
6.1.1利用工作流
6.1.2漏洞利用的策略及做法
6.1.3归纳法
6.1.4拒绝服务
6.1.5不安全的设计模式
6.1.6加密中的实现错误
6.1.7信息泄露
6.2部署应对措施
6.2.1记录需求
6.2.2创建强健的测试用例
6.2.3把策略映射到控制
6.2.4防御性编程
6.2.5验证客户端
6.2.6加密指南
6.3小结
第7章利用平台弱点
7.1攻击是如何实现的
7.1.1识别模式、数据结构以及开发者癖好
7.1.2以操作系统为攻击目标
7.1.3攻击服务器
7.1.4拒绝服务
7.2部署应对措施
7.2.1限制文件访问
7.2.2使用对象引用
7.2.3将不安全函数列入到黑名单
7.2.4强制授权
7.2.5限制网络连接
7.3小结
第8章攻击浏览器和隐私
8.1理解恶意软件和浏览器攻击
8.1.1恶意软件
8.1.2插入到浏览器插件中
8.1.3DNS和域
8.1.4HTML5
8.1.5隐私
8.2部署应对措施
8.2.1安全地配置SSL/TLS
8.2.2更加安全地浏览网页
8.2.3隔离浏览器
8.2.4Tor
8.2.5DNSSEC
8.3小结

《Web应用漏洞侦测与防御:揭秘鲜为人知的攻击手段和防御技术》作者是国际知名网络安全专家,揭示最危险的Web攻击,以及解决方案。全面讲解如何预防常见的网络攻击,包括:HTML注入及跨站脚本攻击、跨站请求伪造攻击、SQL注入攻击及数据存储操纵、攻破身份认证模式、利用设计缺陷、利用平台弱点、攻击浏览器和隐私等。书中对HTML5标准中与安全相关的主要API和特性进行了介绍,针对每一种攻击方式,不仅探究其攻击方法、机理及影响,而且还给出可能采取的应对措施。有助于读者了解如何对Web应用从多角度实施安全保护,做到防患于未然,使得网站拥有者或网站开发人员有信心面对安全相关的威胁与挑战。

国际知名网络安全专家亲笔撰写,全面揭示Web应用常见安全漏洞及应对策略。 ? 从浏览器安全和站点安全的角度,全面、系统解读黑客攻击和漏洞利用的技术细节和方法,以及防御这些攻击的方式。

关于Web的格言或警句中,你最喜欢哪一个?这些格言或警句很可能会涉及Web安全或网站所面临的威胁。本书通过黑客最经常利用的8组安全弱点及漏洞,试着阐明复杂难解的Web安全性问题。对读者来说,其中一些攻击可能很熟悉,而另外一些攻击可能是出乎意料或者比较陌生的,因为这些攻击并未登上头条新闻或进入到前十大新闻中。攻击者可能会针对一些底层公共特性进行利用,这也是为什么诸如跨站脚本攻击和SQL注入攻击引起了人们广泛关注的原因。更厉害的攻击者可能会把网站设计的工作流或假设中的模糊之处当作目标,利用这些结果会获得巨大经济收益,但可能只对某个网站有效,这种方式的优势在于不会像SQL注入等攻击那样暴露出攻击者的信息。
在Web上,信息就是金钱。信用卡显然对黑客有巨大的价值,不断出现非法信用卡交易网站对盗来的信用卡通过论坛、用户反馈和卖家评价等进行交易。我们的个人信息、密码、电子邮件帐户、线上游戏账户等都有其价值,更不用说我们尽力使这些内容保密所付出的努力的价值。目前的现实就是经济间谍以及国家资助的网络攻击被人们普遍关注和夸大,其实更缺乏的是可靠的公共信息。(对Web安全而言,“网络战争”存在与否无关紧要,我们更加关注的是如何应对这些。)真实世界中人、公司或国家之间的几乎所有骗局、欺骗、诡计等在Web上都存在,因为非法获取Web上有价值的信息很诱人,可以是为了荣誉、国家、金钱,或纯粹出于好奇心。
本书学习要点
本书的每一章都给出了针对Web应用程序的不同攻击实例。首先会探究这些攻击所采用的方法,然后展示这些攻击潜在的影响,这些影响可能是针对网站的安全性或用户的隐私。攻击甚至可能不会将重点放在攻破某个Web服务器,而是聚焦于攻击浏览器。Web安全性对应用程序和浏览器的影响是类似的,毕竟,它们都是存放信息的地方。
每章中接下来的内容会从攻击的不同角度给出相应的应对措施。应对措施是很棘手的事物,在设计出好的防御措施之前,必须要理解攻击的工作方式,还要清楚这些应对措施的局限性以及不能覆盖的漏洞。安全是网站的整体属性,不是单个保护措施的累加。本书中某些应对措施会被反复提到,有些应对措施可能仅出现一次。
本书面向的读者
使用Web收取电子邮件、购物或工作的人都将会从本书受益,他们可以了解网站如何泄露个人信息以及怎样隐藏恶意内容。网站开发人员肩负着网站安全性的最大责任,同时用户也有自己的责任。用户的责任主要体现在维护最新的浏览器、注意密码的使用、警惕类似社会工程这类非技术攻击。
Web应用程序开发人员和安全专家将会从本书介绍的Web攻击背后的技术细节和方法中受益。提升网站安全性的第一步就是要能够理解应用程序面临的威胁,理解不好的编程习惯会导致安全弱点,该弱点会导致漏洞,而漏洞会导致数百万用户密码从未加密的数据库中泄漏出去。另外,有几章深入探讨了与编程语言或支撑特定站点的技术无关的有效应对措施。
行政管理层能够从本书中理解Web站点面临的威胁,而且会看到在很多案例中,仅仅需要一个浏览器并动动脑筋,这种简单攻击就能对站点和它的用户带来负面影响。这同样说明尽管很多攻击易于执行,但好的应对措施仍需时间和资源才能得到正确实现。这些要点为分配资金和资源以提高网站安全性,进而保护Web站点管理的大量信息财富提供有力的论据。
本书假定读者对Web具有基本的了解。Web安全攻击主要依赖于通过操纵HTTP数据包来注入有效负载或利用协议中的缺陷。攻击者同样需要掌握HTML来操纵表单或注入代码,从而控制浏览器。这并不是粗略理解攻击或学习黑客如何攻破某个网站的先决条件。例如,一开始只要熟悉HTTP协议默认使用80端口进行不加密传输,安全套接层(SSL)或安全传输层协议(TLS)协议使用443端口进行加密传输,使用https://的站点指定TLS传输。如果开发人员或安全专家希望对攻击和防御的方法进行深入研究,则必须了解更多技术细节。本书力求呈现准确的信息,但并不追求严格地区分使用只有细微差别的术语,如URL同链接可以互换使用,Web站点和Web应用程序也是如此。但愿对破解的概念以及应对措施的描述足够清楚,习惯于阅读标准和规范的人不会对本书不加区分地引用“HTML标签”和“HTML元素”等术语感到不满。我们的目的是了解破解并从学习中感到快乐。
已经熟悉Web基本概念的读者可以跳过下面的两节。
现代浏览器
在本书中很少提及具体的浏览器版本。最主要的原因是绝大多数的攻击者通过标准的HTML进行攻击,或只是针对与浏览器无关的服务器端技术。缓冲区溢出攻击和恶意软件关注浏览器的具体版本,但针对Web站点的攻击很少关注这一点。另一个原因是浏览器开发人员一般都采取了自动升级方法,或至少有非常快的发布流程,意味着浏览器基本能够保持最新状态,这对用户的安全而言是一个有利的趋势。最后,就像我们在第1章中将要介绍的,HTML5仍旧是一个新兴标准。在本书中,“现代浏览器”是指任何支持HTML5部分特性的浏览器或呈现引擎(记住,可以通过各类设备访问HTML)。可以肯定地说,当你阅读本书时,如果你的浏览器在最近两个月内进行了更新,那么它就是现代浏览器,如果浏览器是一年前的,它也很有可能是现代浏览器,但如果超过一年,那就放下书去更新吧,这对你会有帮助。
曾几何时,开发Web应用程序时,程序员还要考虑不同浏览器的市场份额或必须考虑浏览器呈现中的怪异模式,这已经成为了过去。类似IE6这种已经“逝去”的浏览器仍然能够呈现当今的大部分网站,是工程设计及标准(网络、HTTP、HTML等)值得称道的一个壮举。然而,已经没有必要在今天继续使用这些老古董了。如果微软希望IE6消失,网站就没有理由再乐于支持它,事实上,对于那些内容和使用都要求更高程度的安全性及隐私保护的网站,应当主动拒绝过时的浏览器的访问。
“域”搞定一切
Web浏览器在不同的平台上已经经过数次的更新换代:Konqueror、Mosaic、Mozilla、Internet Explorer、Opera、Safari等。浏览器的核心中有一个呈现引擎,微软IE的引擎为Trident,Safari和Chrome的引擎为Webkit,Firefox的引擎为Gecko,Opera的引擎为Presto。这些引擎负责把HTML呈现为DOM(Document Object Model,文档对象模型)、执行JavaScript、提供Web页面布局,最终提供安全的浏览体验。
同源策略(Same Origin Policy,SOP)是浏览器的基本安全边界。内容的能力和可视性受限于最初加载资源的源内。不像低成本恐怖电影中,来自某个区域的恶魔会在另一个区域中肆虐,浏览的上下文应当从它建立起就受限于其所在的域了。域是为浏览上下文获取资源的协议、主机名(host)和端口号(port)的组合。我们将会多次讲到SOP,第1章先介绍HTML5如何放宽SOP的限制。
所需背景知识
本书远不能详细地涵盖相关主题。多种攻击方法和应对措施都涉及密码学,例如哈希、盐值、对称加密、随机数等。有一些章节涉及数据结构、编码、算法等知识,还有些章节涉及正则表达式。这些概念会描述得足够清楚,即使你第一次接触它们,也应该可以知道它们同黑客攻击及应对措施的关联。当需要更多背景知识时,会给出一些建议阅读的资料。本书应当会引起你对此类主题的好奇。一名好的安全从业者或Web开发人员应当对很多主题都很熟悉,即便对更深的数学或理论细节可能还有些模糊。
对本书而言,最重要的安全工具是Web浏览器,它往往是对Web站点进行攻击所需要的唯一工具。Web应用程序漏洞利用所涉及的技术即包括复杂的缓冲区溢出,也包括对URI中单个字符的操纵。第二重要的工具是能够发送原始HTTP请求的工具,下面的这些工具可以对浏览器做极好地补充。
Netcat是网络安全工具的鼻祖,它执行一个基本的功能,即打开网络socket。该命令的威力在于可以向socket发送任何内容并且捕获其响应。多数Linux系统或OS X默认提供该工具,通常作为nc命令。它在Web安全中的最简单用法如下所示:
Netcat的缺点之一是不支持SSL协议。幸运的是,OpenSSL命令提供了相同的功能,只需对命令行进行略微改动。例子如下:
同命令行工具相比,本地代理提供了一个用户界面更加友好的Web安全评估方案。命令行便于自动化,但代理更有助于分析Web站点的弱点并理解Web请求背后所发生的事情。
风险、威胁、弱点、漏洞、漏洞利用
一些读者可能会注意到本书刻意避免了对所介绍的攻击手段进行排名。就像《Animal Farm》(译者注:英国著名作家乔治?奥威尔的一部反乌托邦寓言小说)中的Napoleon和Snowball一样,某些Web安全漏洞比其他漏洞更重要。风险、影响和威胁等概念要求与Web应用程序的上下文和环境相关的信息,不能一概而论。
威胁可能来自黑客、匿名者(Anonymous,用大写A代表)、犯罪集团、海啸、磁盘故障、绊掉电源线、心怀不满的程序员等任何能够对网站带来负面影响的因素,他们就像演员一样,以你的网站作为舞台。
Dan Geer对安全有一个形象的描述“没有什么意外不能被缓解”。从这里看,风险可以从预期、检测和防御某些事情的能力的角度来衡量。影响风险的因素很多:威胁、Web站点或被保护信息的价值、你认为目前Web站点有多么安全,网站被攻击之后恢复的难易程度,等等,这些因素中很多都很难度量。
如果你的Web站点存在漏洞,那么这就是一个bug。威胁可能来自漫无目的的黑客或一名能力很强的、执着的黑客。根据度量标准的不同,风险可以是高或低。风险也可以有区别,有可能是用来注入一个指向恶意软件的iframe,或者用来给网站设一个后门以窃取用户的证书。在任何情况下,修复漏洞总是好的。通常,修复bug要比确定利用它来进行攻击的威胁更容易。事实上,如果这个bug(不管是否与安全有关)难以修复,那么就表示那里存在着高风险。

  • 评论列表(0

留言评论