网站入侵与脚本攻防修炼
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章 网站脚本入侵与防范概述

网络异常发达的今天,网络上各种大大小小的网站已经随处可见。博客、文章系统、论坛、相册、留言本、投票系统等,各种各样的站点为网络平添许多色彩。无论是从公司、企业,还是个人,往往都会拥有自己的网站,网站已经成为交流沟通、展示个性、商业宣传等必不可少的手段。

然而,在网络丰富而精彩的世界中,也正潜藏着一道道危险的暗流。各种各样的网站攻击事件层出不穷,大到国家政府部门,小到单位、个人的站点,都常常出现被入侵攻击事件的报道。

为何网站如此难以确保安全?为何一个学习了几个小时的“脚本小子”,竟能轻易地入侵控制你的网站?为何拥有众多安全专家的大型网站,却也防不住一个狡猾黑客的攻击?—这一切,源于网站脚本的脆弱性,也有众多网站程序设计者与管理员对网站入侵技术的陌生有着重要的关系。

Web应用程序的代码,并不像意想中的那样安全;但维护Web网站程序的安全性,也并非无章可寻。本书要带给大家的,将是揭示各种网站脚本入侵技术行为,并详细分析其原理与相关的防护方案,为网站程序设计者及管理人员找到一条安全之道。

1.1 危害严重,难于防范的Web脚本入侵攻击

尽管网络在不断的发展,网站服务器安全意识与知识的普及状况也比几年前好了很多,但是各种网络脚本入侵攻击事件反而愈演愈烈。

据统计,大约每20秒就有一次网络入侵事件发生,全球每年因网络安全问题造成的经济损失高达数百亿美元。在我国,90%以上的网站存在安全漏洞,很多网站都曾受到过黑客的攻击和计算机病毒的侵害。

虽然许多网站做了大量的安全工作,安装防火墙保护服务器,给系统打上最新的补丁,安装各种攻击检测系统,但依然不能阻挡黑客的入侵攻击。而这一切攻击来源最猛烈之处,就是网站上的各种Web应用程序。

各种Web应用程序,让网站陷入异常尴尬的局面——网站在不得不提供相应服务的同时,却又无法保证程序的安全性。这是一个两难的问题。

的确如此,各种针对Web应用程序的脚本攻击技术,将各种大大小小的网站服务器都置于极为危险的境地。这种攻击方式破坏性极强,轻者让网站无法正常服务和访问,重者直接导致服务器数据丢失,被黑客控制!

1.1.1 Web脚本攻击概述及特点

Web站点默认80为服务端口,关于它的各种安全问题不断地发布出来,这些漏洞中一些甚至允许攻击者获得系统管理员的权限进入站点内部。许多黑客甚至可以突破SSL加密和各种防火墙,攻入Web网站的内部,进而窃取信息。黑客可以仅凭借浏览器和几个技巧,就能获取Web网站的客户保密资料,甚至控制整个网站服务器。

简单来说,针对网站服务器80端口的Web服务进行的各种攻击行为,就叫做Web脚本攻击。

Web脚本攻击入侵,在网络上非常泛滥,原因也在于其特殊性,见如下说明。

1.暴露的目标

由于网络上各种大大小小的网站数不胜数,因此给Web脚本攻击者提供了众多的攻击目标。同时Web脚本攻击的目标不仅在于公司和政府等大型网站,同时也威胁着各种个人网站;而Web脚本攻击不仅应用在常见的Windows操作系统上,对于UNIX、Tomcat等众多类型操作系统的服务器上,Web脚本攻击也能顺利地展开实施。同时无论是任何Web服务程序,都有存在可攻击漏洞的可能。

可以这么说,只要用网站的地方,就存在着Web脚本攻击。正是由于Web脚本攻击的目标极为众多,也导致了Web脚本攻击事件的频繁发生。

2.危害严重

普通的木马攻击和程序溢出漏洞攻击等,都可以获得攻击目标主机操作系统的控制权利,而Web脚本攻击的危害同样严重。

使用Web脚本攻击,不仅可以轻易地更改目标主页信息,导致网站服务无法正常进行,重者可以盗取网站用户中的重要数据,造成整个网站瘫痪,甚至还可以控制整个网站服务器。

同时,由于网站服务器一般都属于目标网络系统中比较重要的主机,因此在渗透入侵攻击整个目标网络时,Web脚本攻击都将起到极具破坏力的作用。

Web脚本攻击的危害严重,还体现在Web脚本攻击的简单性上。由于Web脚本攻击采取的手段往往很简单,也许一句话的代码就可以让网站服务器被黑客控制掌握于掌指之中。而许多网站管理员门往往只是对系统的安全特性比较重视,却忽略了网站Web程序方面的漏洞,由于防范的疏忽,因此使用的Web脚本攻击比一般的攻击方式更易进行,对网站服务器造成的危害更大。

3.攻击方式多样

由于Web网站服务器各异,使用的网站程序也不尽相同,不同的Web网站服务器和不同的网站程序都可能存在不同的漏洞,因此使用Web脚本攻击方式极为多样。

Web脚本攻击者可能从网站的文章系统、下载系统、留言板等部分进行攻击,也可能针对网站的数据库进行操作,也可能在网页中写入攻击性的代码等。甚至于通过网站上的一幅图片,都可以进行攻击,因此Web脚本攻击可谓无孔不入。

4.难于防范

对于普通的攻击方式,如木马攻击、溢出攻击等,网络管理员可以通过为操作系统打上各种安全漏洞补丁、安装防火墙和杀毒软件等进行防范,而这些防范措施也往往是有效的。但是对于Web脚本攻击来说,这些防范方式往往很难有较好的效果。

由于每个网站采用的Web程序都不相同,因此每个网站可能存在的漏洞也不相同,很难采用统一的方式为网站进行补漏、打补丁。

与一般的入侵攻击方式相比,Web脚本攻击不会在防火墙和系统日志中留下任何入侵痕迹,即使经历丰富的网络管理员,也很难从网站日志中追查出入侵者的足迹。

5.不易检测

一般的入侵攻击方式,往往会由于攻击目标上安装了防火墙而导致失败,但是使用Web脚本攻击的话,防火墙却形同虚设。由于Web脚本攻击的所有操作都是通过系统中的80端口来进行的,而通过该端口的数据都是被防火墙所许可的,因此防火墙不会对Web脚本攻击进行拦截,使得Web脚本攻击可以顺利地通过防火墙进行。

同时入侵者通过Web脚本攻击入侵后,往往是通过在网站中放置一些ASP或脚本代码文件作为后门,这些文件往往很难像普通的病毒那样可以通过杀毒软件查杀。更有甚者,在合法的网页文件中插入一段隐蔽的代码,致使杀毒软件完全无法识别这样的后门存在。还有的入侵者直接修改网页源代码,取消某些密码验证等,使入侵者可以随意自由地进入服务器,对于这些留后门的方式,杀毒软件可以说是完全无效了。

1.1.2 入侵者是怎样进入的

Web脚本攻击的一个突出特点,就是攻击手段方式多种多样,攻击者在进行Web脚本攻击入侵时,通常会采取哪些步骤呢?

1.踩点

所谓“踩点”,与普通入侵方式中的系统扫描类似,就是通过各种手段来对要入侵的网站服务器进行分析和判断,从而寻找到服务器可能存在的漏洞,并决定采取何种入侵方式才能最快、最隐蔽地成功入侵网站服务器。

踩点所要获取的信息包括以下内容。

1)操作系统与服务器版本

不同的网站服务器采用的操作系统不同,主要有Windows系统、UNIX系统、Linux系统及Tomcat系统等。

在Windows操作系统中常见的网站服务程序为IIS,版本也不尽相同,比如Windows 2000系统使用的是IIS 5.0,而Windows XP系统使用的则是IIS 6.0版本。在UNIX系统、Linux系统中常见的网站服务程序是Apache,版本也不相同。而许多JSP网站程序服务器则使用了比较少见的Tomcat系统。

不同的操作系统入侵方式也不同,如在Tomcat 3.0版本中就存在一个目录路径泄露漏洞,而在IIS服务器中则有可能存在暴库、脚本备份后门等漏洞,因此攻击者在实施Web入侵攻击前,首先会获得网站服务器的操作系统及网页服务器版本信息,并制订出合适的入侵方案来。

2)Web程序结构

由于每个网站使用的Web程序不同,有可能是公开的源代码,也有可能是网站自己撰写的程序。攻击者首先要了解到Web程序的各种信息,如首页等使用什么,是否采用整站系统,如常用的动力文章系统、乔客等;网站是否有论坛,论坛又是采用什么程序架设的,它的版本号,如常见的动网论坛、PHPwind论坛等。

如果网站是使用公开源代码的Web程序,攻击者可能直接判断该版本程序是否有漏洞,并进行攻击;如果使用的是自写的代码,攻击者就会进行各种检测,寻找出是否存在各种漏洞。

2.Web脚本攻击常见方式

Web脚本攻击的方式多种多样,但最常见的Web脚本攻击主要分为以下几种。

1)SQL脚本注入攻击

从2004年开始,SQL注入攻击技术逐步发展并迅速流行起来。由于技术的成熟加上各种利用工具的出现,使得SQL注入攻击成为脚本黑客必会的一项入侵技术。SQL注入学习起来非常简单,利用一个SQL注入工具,刚接触入侵技术的“脚本小子”们,都可能在几分钟之内攻陷一个网站服务器。

出现SQL脚本注入攻击漏洞的原因,主要是由于许多网页程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,从而使网页应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL脚本注入。

SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市场的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉,因此SQL注入攻击手法非常隐蔽。

国内的网站用ASP+Access或SQL Server的占70%以上,PHP+MySQL占20%,其他的不足10%,因此SQL注入攻击按网站类型主要可分为ASP注入和PHP注入两种,此外还有JSP、CGI注入攻击等。

2)文件上传漏洞攻击

网站的上传漏洞是由于网页代码中的文件上传路径变量过滤不严造成的,利用这个上传漏洞就可以任意上传如.ASP的网页木马,然后连接上传的网页即可控制该网站系统。

网页编写者未对文件上传路径变量或文件名变量进行任何过滤,因此用户可以任意修改变量值,将具有攻击性的网页后门程序上传到网站服务器上,并控制整个网站服务器。

上传漏洞最初出现于大名鼎鼎的动网论坛,危害性极大,曾经致使整个网络中的诸多网站遭受攻击。

3)数据库入侵

数据库入侵包括利用默认数据库下载和暴库下载,在数据库里面插入代码等通过网站程序数据库进行的攻击。

默认数据库漏洞,是指许多网站在使用一些公开源代码的网站程序时,由于未对数据库路径及数据库文件名进行修改,导致攻击者可以直接下载或操作默认的数据库文件进行攻击。

暴库是指利用%5c之类的编码转换,让网站显示出数据库文件名。数据库如果是.mdb格式的则直接下载,利用数据库查看的工具进行查找账号和密码;如果对方数据库为.asp后缀的,可以直接在数据库中写入可执行的ASP代码,将数据库变为后门使用。

4)跨站脚本攻击与木马网页

跨站脚本攻击是指,攻击者在远程Web页面的HTML代码中插入有危害性的代码语句。用户认为该页面是可信赖的,但是当浏览器下载该页面,嵌入其中的脚本将被解释执行。

跨站脚本漏洞攻击方式最常见的是,通过盗取cookie或欺骗打开木马网页等取得重要资料;也可以直接在存在跨站漏洞的网站中写入脚本代码,在网站挂上木马网页等。

5)其他脚本攻击

网站服务器的漏洞主要集中在各种网页上面,由于网页程序的编写不严谨,因而出现了各种脚本漏洞,比如前面提到的暴库漏洞、动网文件上传漏洞、Cookie欺骗漏洞等,都是属于脚本漏洞攻击中的某一种类型。但是除了这几类常见的脚本漏洞外,还有一些专门针对某些网站程序出现的脚本程序漏洞,最常见的有用户输入数据过滤不严、网站源代码暴露等。

总之,Web脚本攻击技术种类很多,而且各种新的脚本技术又不断地被发掘出来,因此作为网站安全人员,及时地了解各种Web脚本攻击技术与漏洞防范是必需的。