有趣的是,这个exploit还曾经出现在著名电影《黑客帝国2》中:
电影《黑客帝国2》
放大屏幕上的文字可以看到:
电影《黑客帝国2》中使用的著名exploit
在早期互联网中,Web并非互联网的主流应用,相对来说,基于SMTP、POP3、FTP、IRC等协议的服务拥有着绝大多数的用户。因此黑客们主要的攻击目标是网络、操作系统以及软件等领域,Web安全领域的攻击与防御技术均处于非常原始的阶段。
相对于那些攻击系统软件的exploit而言,基于Web的攻击,一般只能让黑客获得一个较低权限的账户,对黑客的吸引力远远不如直接攻击系统软件。
但是时代在发展,防火墙技术的兴起改变了互联网安全的格局。尤其是以Cisco、华为等为代表的网络设备厂商,开始在网络产品中更加重视网络安全,最终改变了互联网安全的走向。防火墙、ACL技术的兴起,使得直接暴露在互联网上的系统得到了保护。
比如一个网站的数据库,在没有保护的情况下,数据库服务端口是允许任何人随意连接的;在有了防火墙的保护后,通过ACL可以控制只允许信任来源的访问。这些措施在很大程度上保证了系统软件处于信任边界之内,从而杜绝了大部分的攻击来源。
2003年的冲击波蠕虫是一个里程碑式的事件,这个针对Windows操作系统RPC服务(运行在445端口)的蠕虫,在很短的时间内席卷了全球,造成了数百万台机器被感染,损失难以估量。在此次事件后,网络运营商们很坚决地在骨干网络上屏蔽了135、445等端口的连接请求。此次事件之后,整个互联网对于安全的重视达到了一个空前的高度。
运营商、防火墙对于网络的封锁,使得暴露在互联网上的非Web服务越来越少,且Web技术的成熟使得Web应用的功能越来越强大,最终成为了互联网的主流。黑客们的目光,也渐渐转移到了Web这块大蛋糕上。
实际上,在互联网安全领域所经历的这个阶段,还有另外一个重要的分支,即桌面软件安全,或者叫客户端软件安全。其代表是浏览器攻击。一个典型的攻击场景是,黑客构造一个恶意网页,诱使用户使用浏览器访问该网页,利用浏览器中存在的某些漏洞,比如一个缓冲区溢出漏洞,执行shellcode,通常是下载一个木马并在用户机器里执行。常见的针对桌面软件的攻击目标,还包括微软的Office系列软件、Adobe Acrobat Reader、多媒体播放软件、压缩软件等装机量大的流行软件,都曾经成为黑客们的最爱。但是这种攻击,和本书要讨论的Web安全还是有着本质的区别,所以即使浏览器安全是Web安全的重要组成部分,但在本书中,也只会讨论浏览器和Web安全有关的部分。
Web安全的兴起
Web攻击技术的发展也可以分为几个阶段。在Web 1.0时代,人们更多的是关注服务器端动态脚本的安全问题,比如将一个可执行脚本(俗称webshell)上传到服务器上,从而获得权限。动态脚本语言的普及,以及Web技术发展初期对安全问题认知的不足导致很多“血案”的发生,同时也遗留下很多历史问题,比如PHP语言至今仍然只能靠较好的代码规范来保证没有文件包含漏洞,而无法从语言本身杜绝此类安全问题的发生。
SQL注入的出现是Web安全史上的一个里程碑,它最早出现大概是在1999年,并很快就成为Web安全的头号大敌。就如同缓冲区溢出出现时一样,程序员们不得不日以继夜地去修改程序中存在的漏洞。黑客们发现通过SQL注入攻击,可以获取很多重要的、敏感的数据,甚至能够通过数据库获取系统访问权限,这种效果并不比直接攻击系统软件差,Web攻击一下子就流行起来。SQL注入漏洞至今仍然是Web安全领域中的一个重要组成部分。
XSS(跨站脚本攻击)的出现则是Web安全史上的另一个里程碑。实际上,XSS的出现时间和SQL 注入差不多,但是真正引起人们重视则是在大概 2003年以后。在经历了 MySpace 的XSS 蠕虫事件后,安全界对XSS的重视程度提高了很多,OWASP 2007 TOP 10威胁甚至把XSS排在榜首。
伴随着Web 2.0的兴起,XSS、CSRF等攻击已经变得更为强大。Web攻击的思路也从服务器端转向了客户端,转向了浏览器和用户。黑客们天马行空的思路,覆盖了Web的每一个环节,变得更加的多样化,这些安全问题,在本书后续的章节中会深入地探讨。
Web技术发展到今天,构建出了丰富多彩的互联网。互联网业务的蓬勃发展,也催生出了许多新兴的脚本语言,比如Python、Ruby、NodeJS等,敏捷开发成为互联网的主旋律。而手机技术、移动互联网的兴起,也给HTML 5带来了新的机遇和挑战。与此同时,Web安全技术,也将紧跟着互联网发展的脚步,不断地演化出新的变化。
(责任编辑:)