江卫星,许学军,张 翼,李汝光
(镇江高等专科学校,江苏镇江212003)
Web架构是指采用B/S模式、通过http/https协议提供服务的统称,越来越多的应用程序迁移到了Web架构.高校网站已从一个简单的信息发布、展示平台Web架构,发展到汇集了招生就业、教务管理、远程教育、学生综合测评、图书检索等综合性Web架构平台,所面向的用户群也越来越广,所承载的Web应用服务也越来越多,高校教务工作对信息系统依赖程度越来越高.高校注重Web应用系统建设,但在系统安全保障的建设上出现了滞后,网站挂马、网页篡改、DDo S攻击等攻击事件呈逐年上升的趋势,近几年修改考试成绩、骗取证书等事件也时有发生,势必给高校声誉造成影响.高校网站已经逐渐成为黑客关注的重点目标,安全保障工作迫在眉睫,保障高校网站安全,关键要靠人、技术、管理三者的有机结合[4],本文从技术角度着力构建高校安全的Web架构.
Web服务的一般性结构图如图1所示:
从上图可以看出,高校Web架构服务器上有两种服务数据要保证安全,一是Web服务页面文件;二是后台数据库,其中存放的数据[2].
图1 Web系统一般结构图
入侵者入侵高校 Web系统,其攻击目的性十分明确,在于以下几个方面:
①瘫痪网站,中断服务:使用DDOS攻击都可以让网站瘫痪,但对Web服务内部没有损害,一般来说,这种做法是入侵者索要金钱或恶意竞争的要挟,也可能是显示他的技术高超[3].
②篡改网页:修改高校网站页面显示,公众容易发现攻击效果,严重地影响高校形象,对于攻击者来说,主要是炫耀自己,如某参加高考学生想进入某高校计算机学院学习,为了显示自己能力,攻击该高校计算机学院,篡改了网页.
③挂木马:这种入侵对高校网站本身不产生直接破坏,而是针对访问该网站的用户,用户访问该网站后遭受攻击.据360专家说,正是考生关注高校招生信息时期,2010年5月14日一天之内,全国128所高校被集体挂马,其中不乏知名大学,这一数字已经超过高校2009年全年挂马数.黑客在网页上所挂的木马一般多为木马下载器,一旦进驻用户电脑,便会源源不断地下载时下流行的木马,从而窃取用户数据或控制计算机.
④篡改数据:篡改网站数据库,或者是动态页面的控制程序,表面上没有什么变化,很不容易发觉,数据篡改的危害是难以估量的,比如:修改考试成绩、骗取毕业证书、盗取考生信息等事件时有发生.
Web系统除了Web服务器外,还有很多服务器需要保护,如中间件服务器、数据库服务器等.高校Web服务遭受攻击的主要因素为四类:
①服务器系统漏洞:Web服务器网络操作系统无论是Windows系统,还是Linux/Unix,系统自身都存在漏洞,入侵者通过这些漏洞入侵,能获得服务器的高级权限,就可以对服务器上运行的Web服务随意控制了.利用WEB服务器的漏洞进行攻击常见有CGI、缓冲区溢出、目录遍历漏洞等.
②Web应用程序漏洞:很多高校特别关注系统级的软件漏洞,实际上Web应用软件的漏洞也必须重视,目前高校Web安全现状如图2所示,安全和花费是不平衡的,75%信息安全攻击来自Web应用层次的攻击,并且2/3 Web应用是不安全的,而Web应用防护的投资严重不足,只占防护投资10%.Web应用安全应引起高度重视,将具体分析Web应用的安全问题.
③DDOS攻击:高校网站硬件性能明显提高,Do S的攻击很难凑效.DDo S利用更多的傀儡机来发起进攻,比Do S更大规模地进攻,造成高校网站拒绝服务,网络瘫痪.
④密码暴力破解:一般来说帐号容易获得,剩下就是猜测密码了,如果密码设置简单,很容易猜测出密码,尤其是远程管理者的密码,破坏程度难以想象,而且不容易被发觉.为了避免暴力破解,Web系统开发时应在注册界面应有验证码,增加计算机自动识别图片验证码的难度,并且限制密码猜测的次数等其它的安全策略.
有些高校的Web应用程序开发人员编程不规范、安全意识不强、有时开发时间紧张而简化测试等,造成很多应用程序的安全漏洞,入侵者通过这些漏洞来去自如,给Web应用系统带来了巨大的安全隐患.Web应用程序的安全漏洞最常见的是绕过客户端输入用户验证[1],如篡改隐藏表单域、SQL注入、跨站脚本攻击等.
HTML表单是应用层的安全隐患,WEB应用的设计者总信任用户在 HTML表单格式限定内的输入是良好的、无恶意的数据,HTTP协议的无状态使得设计者需要管理多次 HTTP请求间的应用状态,通过使用HTTP表单的隐藏域可以把一系列的请求/响应串起来,比通过使用后端的数据库的方法要容易.可是这样使用隐藏域就使得客户端可以修改应用的状态,例如:目前不需要特殊技巧实现对有些高校WEB站点的攻击,攻击者可以把HTML表单存到本地磁盘,然后用文本编辑器改变隐藏在表单中隐藏域的成绩数据或其它数据,再把修改了的HTML表单装入浏览器发送回了WEB服务器,入侵者达到了修改的目的.
3.2.1 概念
SQL注入是指用户使用正常的 Web端口访问,并没有绕过 HTTP/HTTPS协议,通过在浏览器地址栏或Web表单的输入栏提交数据库查询代码,根据网站响应程序而返回的结果,获得某些想要的数据,如数据库名、表名、字段名等敏感数据,尤其是应用系统管理员账号、密码,进而获取对应用系统的控制操作权限.表面看来和正常的Web访问没有区别,防火墙一般不能主动识别,传输加密技术也不能防御其攻击,SQL注入是高校Web系统遭受Web攻击主要方式之一[2].
3.2.2 SQL注入攻击的实现过程
SQL注入攻击有很多种,现在以常见的URL查询字符串方式和Web表单文本框提交为例来分析SQL注入攻击[5].
3.2.3 Web表单文本框提交方式
高校网站使用大量Web表单,其中文本框的使用频率很高,如果程序未过滤文本框输入或对提交的数据未进行分析处理等,则很可能被攻击者利用,危害高校网站安全.假设Web程序中存在user表,其表内包含 username和password字段[1].则有:
(1)身份验证模块中查询user表常用的两个典型SQL语句.
①select * from user——返回记录内容, ②select count(*)from user——返回记录数
(2)在 Web应用程序的登录页面中,允许用户在表单里输入用户名(username)和密码(password)两个参数,并进行登录身份验证.假设登录用户名为zhang,密码为today.则上述 SQL语句将变为:
①select* from user where username=’zhang’and password=’today’
②select count(*)from user where username=’zhang’and password=’today’
正常情况下,第①条SQL查询,如果返回一条用户记录则说明用户身份验证成功;反之,则说明用户身份验证失败.第②条SQL查询,如果返回用户记录数量为1,则说明身份验证成功;返回值为0或>1,则说明身份验证失败.
(3)如果分别在username和password两个表单里分别输入’zhang’or 1=1—和’tomorrow’值,则上述SQL语句就会变为:
①select*from user where username=’zhang’or 1=1--and password=’tomorrow’
语句①中有两个判断条件,只要其中一个为真,则身份验证就会成功,而1=1恒为真.
②select count(*)from users where username=’zhang’or 1=1--and password=’tomorrow’同理,该语句中只要能确定用户名已知,则身份验证就会成功.3.2.4 URL查询字符串方式
很多高校网站页面通过GET方式传值来执行,URL典型注入方式就是在地址栏后面拼接SQL语句,通过查看程序执行结果来判断注入是否有效,并获取入侵者需要的信息.
我们假设某高校网站没有防SQL注入措施,其某页为:
http://www._***.edu.cn/article.asp?id=233 id为正常参数名,233为程序页接受的参数值,如攻击者输入:
①http://www._* * *.edu.cn/article.asp?id=233 and 1=1
②http://www.* * *.edu.cn/article.asp?id=233 and 1=2
此时页面很可能将分别执行以下SQL语句 :select字段集合from表名where id=233 and 1=1;select字段集合from表名where id=223 and 1=2
则①会正常显示,②会显示异常或提示错误,攻击者可据此判断该网站存在SQL注入漏洞.下一步,攻击者输入:http://www.***.edu.cn/article.asp?id=233 and user>0
通过提示信息中数据库引擎关键字,则可判断网站数据库类型,如Jet一般为 Access数据库,OL EDB一般为SQL Server数据库.除此之外,还可通过猜测系统表的方式构建SQL语句,来确定数据库类型.同样,攻击者输入 :
http://www.* * *.edu.cn/article.asp?id=233 and(select count(*)from admin) >0如页面正常显示,表示构建的SQL语句被正确执行,也即数据库中存在表名admin,输入 :
http://www._***.edu.cn/article.asp?id=233 and(select count(username)from admin)>0如页面同样正常显示,则表admin中存在 username字段.如页面提示出错,可重新拼接后尝试,以猜测表名和字段名.得到管理员表名、字段名,便可通过使用SQL语句,查询出用户名密码长度、指定位字符值等.进而获取管理员账号、密码.获取网站后台管理员权限后,上传木马,甚至备份数据库到本地进行分析,以获取更多感兴趣内容.
一些需要访问权限的页面 (系统后台管理界面),必须是合法的用户才能进入.但有些人通过其它途径知道了此页面的地址,则可直接在地址栏输入页面的地址,不要有效的用户名和密码的情况下就可以进入系统,达到攻击的目的.
目前很多高校Web系统存在安全漏洞,攻击者利用一些攻击辅助工具,造成SQL注入攻击事件屡见不鲜.一旦攻击者取得网站后台管理权限,便可以利用后台管理系统篡改网站信息,挂载木马,修改数据库信息等;如果数据库权限被攻击者获得,攻击者可随意修改甚至删除数据库结构和数据,利用数据库信息,访问服务器资源,修改服务器配置,甚至完全控制服务器的目的.SQL攻击方法是多种多样的,危害极大.在开发Web应用程序如ASP程序时,在有必要的页面开始处加上如下代码,可以防止绕过用户验证,具体方法如下:方法一:
利用seesion对象来验证登录者身份信息,cookies对象可以伪造,而seesion无法伪造,除非伪造者拥有服务器权限.
< %if session(“username”)= ““or session(“password”)=””then
response.write“<SCRIPT language=VBScript> alert(‘非法用户不能访问此页面’)”
response.redirect“登录界面地址”
Endif%>
方法二:
<%dim From_url,Serv_url
From_url=Cstr(Request.Server Variables(“HTTP_REFERER”))
Serv_url=Cstr(Request.Server Variables(“SERVER_NAME”))
if mid(From_url,8,len(Serv_url))<>Serv_url then
response.write“非法用户不能访问此页面”
response.redirect(“登录界面地址”)
response.end
end if%>
(说明:上述的两种方法只要没有正确用户名和密码的非法用户注入就给出警告信息,并跳转到“登录界面地址”)经过实践测试,该程序段能实现对用户登录状态的跟踪,防止了注入,一定程度上提高了web应用安全性.事实上,随着信息技术的高速发展以及广泛应用,为保护敏感数据信息,Web应用程序安全应成为网络系统安全的一个非常重要的研究领域.高校Web应用软件在整个开发周期过程中都应引入安全机制[5],安全漏洞的预防在Web应用程序的设计、开发、测试和运行阶段都要严格考虑,制定编码规范、注意非法输入检查以及避免溢出漏洞,利用Nikto和Paros proxy等商用或开源安全性评估测试软件对代码和数据库的安全性进行科学地测试评估,编写出更加安全的Web应用程序代码,尽力地保障高校Web应用系统安全.
图2 Web入侵防御体系
即使高校开发出一个高度安全的Web应用程序而高校服务器系统不安全,那么入侵者进入服务器系统后任何应用程序就由入侵者控制;相反,无论高校网络系统如何安全,网络管理员如何精良,如果应用程序存在安全缺陷,攻击者总能得手.Web应用程序或服务器系统通过安全扫描检测没有发现漏洞并不表示Web站点没有任何安全问题,因为任何Web安全评估工具不可能做到零误报率和零漏报率,甚至评估工具之间还有相互矛盾的扫描结果[6].
安全是个大舞台,Web应用程序安全对于安全的web服务来说是远远不够的,需要一套硬件和软件网络系统,并进行策略设置,构建纵深的Web入侵防御体系,如图2所示:
(1)web服务器系统安全设置:合理设置并管理好账号和密码,不安装或禁用不用的协议和服务,关闭不必要的端口,最好关闭所有共享,使用最新版本Web服务器软件并正确设置Web服务器,经常使用安全分析器如MBSA(Microsoft基准安全分析器)等扫描软件,发现问题及时采取相应的防范措施,如及时安装最新操作系统补丁程序.
(2)硬件/软件防火墙和入侵检测系统 (IDS):防火墙属于静态安全技术,需要人工来实施和维护,不能主动跟踪入侵者,防火墙是设置在被保护网络和外部网络之间的一道屏障,以防止发生不可预测的、潜在破坏性的侵入,有效地保证网络安全,但是防火墙系统不能动态地扩展其对新协议和新服务的支持,很难提供个性化的服务;入侵检测系统属于动态安全技术,能从计算机网络系统中的若干关键点收集信息,并分析这些信息,检查网络中是否有违反安全策略的行为和遭到袭击的迹象,对防范网络恶意攻击及误操作提供了主动的实时保护,从而能够在网络系统受到危害之前拦截入侵.IDS被公认是防火墙之后的第二道安全闸门,入侵检测技术弥补了单纯的防火墙技术暴露出明显的不足和弱点,为网络安全提供实时的入侵检测及采取相应的防护手段,使防御系统更加坚固.防护墙有硬件和软件产品,产品种类多,根据需要进行选择;IDS的主要产品有Cisco公司的Net Ranger、紫光网络的UnisIDS等.
(3)网页防篡改产品:网页防篡改产品是对Web服务器上的页面文件进行监控,公众每次访问网页时,都将网页内容与数字水印进行对比,一旦发现网页被非法修改,立即进行自动恢复,保证非法网页内容不被公众浏览,完全实时地杜绝篡改后的网页被访问的可能性,符合策略标准阻止针对Web服务的SQL注入、XML注入攻击,如国产系统Web Guard、i Guard、Infor Guard等产品.
(4)安装Web应用程序防火墙 (WAF):Web防火墙主要是对Web服务特有入侵方式加强防护,如DDOS、SQL注入、XML注入、XSS等防护,重点是防护SQL注入,所以也有人称为SQL防火墙.由于是应用层而非网络层的入侵,从技术角度来说应该称为Web IPS,而不是Web防火墙.这里之所以叫做Web防火墙,是业界流行的称呼而已.Web防火墙的主要产品有Imperva公司的WAF产品,Netcontinuum(梭子鱼)公司的WAF.
(5)系统日志管理:系统日志可以用来进行访问分析、历史安全监察、历史运行状况监控等,处理网络系统紧急事务的关键之一就是利用日志分析工具软件如Webalizer分析系统的日志数据已成为系统管理员评估系统运行状况和及时发现入侵者入侵行为的重要手段,加强系统日志安全管理对维护网站的安全有着十分重要的意义.
(6)建立应急响应方案:服务器系统也会发生故障,服务器系统的故障多种多样,包括磁盘故障、电源故障、软件故障、灾害故障、病毒和黑客入侵以及人为破坏等.为了应对突发事件,保证网站程序和数据的安全,需制定突发事件响应措施和数据备份策略[7].①制定有效的网站程序安全策略和数据备份策略,要在本地和异地的不同的存贮介质上定期进行数据备份,出现突发事件可以利用备份技术、事务日志技术、镜像技术来完成数据恢复.②成立紧急事件响应小组,制定入侵检测方案,快速有效地识别攻击类型,最大限度地阻止攻击,保证网络系统正常运行.
高校Web架构没有持久的安全,只有不断地完善,Web安全保障工作是一个艰巨而复杂的工程.工欲善其事、必先利其器,只有充分地利用网络安全产品,多层面、多角度地研究如何有效地抑制Web安全事故,并且不断地更新安全措施和技术手段,才有可能保证高校Web服务安全可靠地运行.
[1] 周益宏,陈建勋.浅析基于ASP.NET的网站SQL注入攻击及防范措施 [J].计算机安全,2010,(06):93-95
[2] 王云,郭外萍,陈承欢.Web项目中的SQL注入问题研究与防范方法 [J].计算机工程与设计,2010, (31):976-1016
[3] 王利青,罗静.B/S架构应用程序安全问题研究 [J].河北北方学院学报,2007,23,(05):50-52
[4] 江卫星.基于VLAN的Intranet网络安全策略 [J].网络安全技术与应用,2009,(11):17-19
[5] 朱辉,沈明星,李善平.Web应用中代码注入漏洞的测试方法 [J].计算机工程,2010,36(10):173-178
[6] 彭玉忠,王金才,郝荣霞.WEB应用系统安全分析与设计 [J].计算机安全,2008,(09):45-47
[7] 张元金.ASP动态网站的安全保护机制研究 [J].网络安全技术与应用,2007,(08):76-77