【web安全】Xss Exploits and Defense翻译1

SYNGRESS的《Xss Exploits and Defense》这本书还不错,但是没有找到中文版,在学习过程中就大概翻译了一下。

 

XSS攻击和防御

 

第一章:跨站脚本基本原理

本章主要内容:

跨站脚本的历史

Web应用程序安全

XML和AJAX介绍

ü 总结

ü 快速回顾

ü 常见问答

绪论

跨站点脚本漏洞可以追溯到1996年在世界初期万维网(WEB)。一时间,当电子商务开始起飞,就成了网景、雅虎和那些令人生厌的闪烁的标记(HTML标记)的泡沫时代。当成千上万的网页正在建设中,充斥着用超文本标记语言(HTML)结构建立的“酷”网站。Javascript程序语言应运而生,跨站脚本的一个未知预兆,永远改变了web应用程序安全的景观。Javascript使得web开发人员可以创建交互式的网页效果包括图像翻转,浮动菜单和弹出式窗口。对于现在不起眼的异步Javascript和XML(AJAX)应用程序标准,黑客很快发现一个新的未开发世界的可能性。

黑客们发现当不知情的用户访问他们的网页,他们可以在同一个浏览器窗口中强行装入一个HTML框架的任何网站(银行,拍卖,商店,web邮件等等)。

然后使用Javascript,他们可以跨越两个网站的边界,从一个页面访问另一个页面。他们可以窃取用户输入在HTML表单里的用户名和密码,盗取cookie和威胁到任何在屏幕上出现的机密信息。媒体将这些问题报道为浏览器漏洞。网景通讯,占主导地位的浏览器供应商,为了对应这种情况,实现了“同源策略”,限制Javascript不能从一个网页到另一个网页获取数据。浏览器黑客将这个作为挑战,然后开始挖掘各种聪明的方法来规避这个限制。

1999年12月,David Ross在微软的Internet Explorer安全响应工作。他受到在当时发现Internet explorer's 安全模型威胁的Georgi Gununski的启发。他指出web内容会暴露“脚本注入”有效地绕过Georgi的Internet Explorer代码缺陷,但是这个错误似乎存在服务端而不是客户端代码。David在微软内部文档中将这个描述为“脚本注入”。这个文档描述的问题,是它如何利用,如何攻击可以持续使用cookie,XSS如何工作,和输入/输出过滤解决方法。

最终这个概念被CERT机构所共享。目的就在于让公众也知道,让这个问题以负责的方式被揭露,然后网站可以被修复,不仅仅是微软,而是整个行业。跨组织团队在一月中旬的讨论最终从以下名称中选择了“Cross Site Scripting”这个名称:

Unauthorized Site Scripting

Unofficial Site Scripting

Uniform Resource Locator (URL) Parameter Script Insertion

Cross-site Scripting

Synthesized Scripting

Fraudulent Scripting

在2000年1月25日,微软和CERT,很多厂商(例如:Apache等)还有一些感兴趣的组织在Bellevue的一个酒店讨论这个XSS这个概念。

David在Ivan Brugiolo,John Coates和Michael Roe的帮助下,重写了那份微软内部文档,让它成为适合公众的版本。在CERT的协调下,微软在2000年2月2日发布了这个文档和其他材料。在过去几年里,在Microsoft.com网站这份文档有时候被移除了,但是不会在互联网消失。现在可以在下面网站被找到:

http://ha.ckers.org/cross-site-scripting.html 。

同个时间,黑客在可以提交HTML/Javascript的HTML页面,留言簿,邮件服务商提交脚本来影响用户。这就是有时候被叫做HTML注入的来源。黑客创建一个JavaScript的恶意软件(malware)的基本形式,他们将HTML表单提交改变屏幕上的名字,欺骗贬义的消息,窃取cookie,调整网页的颜色,宣告病毒推出的警告,和其他隐约恶意的数字恶作剧。不久后,出现另一种攻击的变种。利用社会工程学,诱导用户点击带有恶意代码的链接可以达到跟HTML注入一样的结果。Web用户除了禁止Javascript的运行,没有其他防御的手段。

历年来,最早为认为是跨站脚本开始变成浏览器的一个简单未知名漏洞。HTML注入和恶意链接就是现在指的跨站脚本的变种,分别是持久性和非持久性的跨站脚本。不幸的是,这就是很多人被混乱的术语搞糊涂的一个重要原因。更糟糕的是,“CSS”的缩写和另一个新生的浏览器技术“Cascading Style Sheets”的缩写一样,所以经常混淆。终于在2000年初,一个聪明的人建议将CSS的缩写改为XSS来避免混淆。最后,XSS的名称被定下来。很多新的白皮书和大量的漏洞公告描述跨站脚本的影响充斥着网络。但是很少人去关注。

到2005年之前,绝大多数的安全专家和开发者很少关注XSS漏洞。他们关注的是缓冲区溢出,僵尸网络,病毒,蠕虫,间谍软件等等。以此同时,全球每月有百万的新的web服务器开始用SSL保护他们的服务器。大多数人认为可以导致XSS漏洞的Javascript是一个玩具变成语言。有一些论调,”它不能入侵操作系统或者入侵数据库,我为什么要在乎呢?就点击一个链接或者浏览一个网页会能多危险呢?“。2005年10月,我们得到了答案。一夜之间,Samy蠕虫病毒,第一个严重的XSS蠕虫将流行的社交网站MySpace搞摊了。这个攻击脚本的有效载荷相对良性,Samy蠕虫从一个单一的MySpace用户的个人资料页传播到另一个,最后在24小时内感染了超过一百万的用户。突然间,整个安全界清醒了,开始了爆炸式的研究Javascript的恶意脚本。

短短几个月后,在2006年年初,JavaScript的端口扫描器,局域网黑客,击键记录器,木马,浏览器历史记录盗取到达了一个似乎不会停止的景象。数百个XSS漏洞被大网站修复关闭,同时罪犯(黑客或者攻击者)开始结合钓鱼欺骗实施更有效的攻击。令人吃惊的是,因为根据白帽安全组织的统计,超过70%的网站是脆弱的,存在漏洞的。CVE组织声称说XSS攻击已经超过缓冲区溢出,成为发现最多的漏洞。可以说,XSS漏洞代表作为信息安全和在线商业所面临的最潜在的破坏性漏洞。现今,当人们被问到是否听说过XSS,几乎每个人都会举手表示听说过。 

你可能感兴趣的:(WEB安全,xss,跨站脚本,跨站攻击,绪论)