APP下载

SQL注入攻击途径及策略分析

2011-03-14高洪涛

网络安全技术与应用 2011年3期
关键词:黑客服务器设置

高洪涛

中国刑事警察学院 辽宁 110854

0 前言

随着B/S模式的网络服务构架的普遍采用,针对该模式编写的程序越来越多,许多应用程序在编写过程中缺乏数据的合理性分析判断,导致数据查询代码无法获取应得的数据信息。此模式通常被看成SQL Injection,即SQL注入。SQL注入过程通过正常的WWW端口访问,防火墙对SQL注入不会发出正常报警,加之管理员对IIS的关注度不高,导致入侵现象时常发生。SQL注入的手法比较灵活,注入过程中会出现很多异常问题,比如通过巧妙构建SQL语句,达到获取有效数据的目的。从我国网站情况看,SQL+Acsecc或者SQL Server的网站数量已经达到70%,PHP+Mysql占20%,其它站点占10%,因此SQL注入问题对网站的影响相当大,需要对SQL注入攻击途径及策略进行分析。

1 SQL注入攻击原理

随着Web应用的深入,SQL注入攻击方式发生了很大的变化,SQL注入攻击的根源是用户数据和程序执行之间存在分界不清,导致攻击者把程序执行当成用户信息输入系统,系统获取相关的Web信息后,导致攻击现象产生。

SQL注入攻击主要是通过在用户端精心编写SQL语句,把此类具有特殊意义的SQL语句注入系统中,系统执行SQL语句后会获取用户敏感信息,比如用户名、口令、验证信息等。主机控制权限获取后,可通过网络通信模式获取主机信息,对主机进行有效攻击。SQL注入攻击过程中所采取的语句都是合法语句,系统很难对其进行检测和识别,防火墙在检测过程中也很难检测问题语句,使之具有难以捕获的特点。从理论角度分析基于SQL语句的标准数据库,比如Oracle、 Sybase、DB2、MS SQL Server等,具备应用的广泛性。

SQL注入攻击出现泛滥状况时,开发人员没有从根本上认识危害性,编写网站过程中依然存在很多SQL注入攻击的漏洞,很多专门针对 SQL注入的软件也在迅速发展,比如NBSI。对SQL注入攻击稍微有所了解的人都可通过软件对相关网站进行注入攻击。

2 SQL注入攻击途径及策略分析

为防止攻击者把程序执行输入系统,应采取相关策略阻止。下面以ASP+SQL Server网站为例,对SQL注入攻击从应用服务器(IIS)、数据服务器(SQL Server)、代码等角度进行分析,可在设计网站模式时按照类似方式采取相应策略。

2.1 IIS注入策略分析

SQL注入式攻击一般情况下与系统硬件和程序开发语言有着密切的联系,可以通过踩点或者探索模式对注入式攻击进行分析。SQL注入攻击过程中,主要按照IIS所给出的相关错误代码进行判断分析,如果IIS设置过程中被设成无论什么状况下所产生的 ASP错误代码,只给出一个错误提示,具体设置过程中可以改成HTTP 500错误模式,如此状况下入侵现象就不会发生。此方法既简单又有效,但是程序开发过程中要求程序员在代码出错的情况下,不给出相关错误提示信息,这样会给程序员程序开发过程中带来不便。但是从服务器本身功能角度看,按照此模式还是完全可以的,毕竟服务器不是测试代码的地方。

服务管理员应该在相应的服务器上设置好安全权限,需要在IIS上为每一个网站配置好服务权限。通常情况下静态网站主要以“可执行和脚本”为权限,动态网站只要给出“纯脚本”权限即可。网站后台管理权限需要进行重点设置,如果网站后台管理上传文件的权限必须设置为“无”,可以有效防止黑客通过后台上传文件,防止黑客上传 ASP木马程序,只要把权限设置成“无”,即使上传了ASP木马程序也无法正常运行。通常情况下,SQL注入漏洞与网络安全存在一定的关系,如果黑客通过上传ASP木马程序,二者实现并行运行处理对整个系统安全造成严重影响,二者的同步运行可以导致整个服务器处于瘫痪状态。所以系统管理员对 IIS权限管理显得尤为重要。

2.2 SQL Server的设置策略

利用程序连接数据库的用户通常涉及到数据库操作,所以服务器角色组使用过程必须高度重视,最好不使用服务器角色组,而是通过数据库用户角色组完成相关工作。一般情况下,SA角色的权限不能随便设置,黑客通过SQL注入相关程序后,可以通过xp-cmdshell命令获取系统最高权限。为解决此问题可以通过设置db-Reader和db-Writer权限,有些用户是需要备份的,因此使用过程中可以通过新建用户完成。SQL Server可以通过相关命令对数据表进行操作,比如说Select、Update、Delete等可以完成相应工作。开发人员应该合理分析用户需求,针对不同的用户设置不同的权限,保证系统处于稳定安全状态。

如果系统通过文件连接数据库进行访问,应通过文件加密策略对文件加密,保证访问的文件不会通过 SQL注入漏洞。如果文件不采取加密方式传输,黑客可以通过工具把文件下载来获取相关用户名和密码,实现对数据库的非法访问。开发者在程序编写过程中针对一些查询表可以不设置Update、Delete等权限。

系统级设置可以保证系统处于安全状态,针对防火墙进行设置,把TCP 1433/UDP 1434端口进行对外连接,可以给系统、SQL Server、IIS打上补丁,保证系统处于安全状态。系统弱口令也是系统安全得不到保障的重要原因,系统弱口令检查可防止系统口令不被窃取,如果发现弱口令现象可以通过修改密码方式解决。

2.3 功能代码端设置

功能代码端可以很好的控制系统安全性。系统编码人员在系统设计过程中可以把密码字段进行相关加密操作,主要进行MD5加密。按照此模式操作,一方面可以对用户信息进行隐私,另一方面可以提高系统的安全性。当黑客通过SQL注入攻击模式对用户信息进行获取时,可以采取用户名和密码保护模式提高系统安全特性,黑客采取此模式攻击会耗去大量的时间和精力,所以攻击的难度大大增加,最终使得系统安全性得以提高。

用户信息检测是系统安全的重要保证,通过程序对信息输入进行检测,从而保证SQL攻击得到有效防御。当前采取的检测方法主要有两种,一种是删除或者修改相关的字符、字符串,另一种是服务器提交处理数据信息时进行数据检验。

从删除或者修改字符、字符串的角度出发,可对页面传递来的字符串进行参数传递,通过ASP自带的replace()函数可以实现相关功能,可以把危险的字符通过相对安全的字符代替,但是此种方法具有一定的局限性,只能对普通黑客产生一定的作用,比如:当用户输入字符串“ddroprdropodrop”时,通过 replace()函数把字符串“drop”执行删除替换操作后,最终剩余的字符正好只有“drop”。

从服务器提交数据信息机进行数据检验角度看,此种方法是一种很好的SQL注入攻击处理策略,检验过程中主要对非法字符进行才处理,如果检测出非法字符时,服务器对相关操作进行终止,让SQL注入攻击失去机会。

3 SQL注入攻击通用检验模型

通过对SQL注入攻击进行分析,可以在SQL注入攻击防御、检测、备案模型的基础上,提出SQL注入攻击通用数据检测模型,把相关复杂设置进行处理,消除一些复杂操作,针对效果不明显的客户端进行处理,保证设置的合理性、有效性。通过对服务端数据信息进行检测,针对服务端恶意端攻击信息进行备案,通过对攻击者IP、攻击时间、攻击次数、最后一次攻击时间等信息进行处理,针对攻击者穷举攻击的状况进行算法分析。模型可以按照自由设置攻击的次数进行用户请求策略分析,服务器可以采取截断处理,最终产生报错信息。另外模型处理系统安全信息的时候,可以采取.asp文件方式,按照此模式只需要在系统页面开始位置加入代码<!--#Include File= “IPcheck.asp”--!>即可,功能设置相对比较方便。SQL注入攻击通用检验模型如图1所示。

图1 SQL注入攻击通用检验模型

系统所有代码都被封装在文件IPcheck.asp中,编写语言可以采取VCScript,程序编写过程中可以附详细的说明,把连接数据库的文件进行抽象封装,主要封装在connManu.asp文件中,具体实现过程中可以通过 connCreate(conn), rstSearchCreate(conn,rs,strSQL), rstChangeCreate (conn,rs, strSQL), rstClose(rs),connClose(conn)建立连接对象完成,通过建立搜索记录集,系统对安全因素进行检验过程中,可以对记录集进行操作,保证SQL注入攻击程序能够得到检测。建立的记录集应具有动态查询特征,通过关闭连接对象、关闭记录集对方式对系统安全策略进行检测。

ClientURL,ParamArray,ParamDinamicArray,i,DealMethod ,Erorr-Retunr,strFilter,AttackLimitNum,ClientIP,sql等是系统执行过程中所用到的对象,通过变量分析可以得出系统核心代码:

<%

—定义要使用到的功能函数—

Function CheckStr(str),此函数检测字符串,tr里面是否含有自己定义的非法字符,是则返回true,代码略。

End Function

Sub IpCheckIn

<%

可以把攻击对象的信息进行备案,其主要包括用户第一次攻击时间、攻击的IP、攻击次数、最后一次攻击时间。此类信息主要建立在表IPAttack里面。

4 总结

SQL注入攻击已经成为重要的网络漏洞,从Web开发角度看,需要从平台、数据层、技术等角度分析问题的根源。SQL注入攻击过程中需要采取建立参数化进程过程、存储进程进行授权“运行”、最小特权连接、应用程序域组授予许可等策略。系统开发过程中应保持Web应用程序以最少的特权模式运行,禁止采取管理员模式运行,避免使用sysadmin或db_owner等特权账号运行。

通过对ASP+SQL Server类型网站进行分析,结合操作实际,本文提出一套完整的解决SQL注入攻击的策略。通过对实际案例分析研究,可以把SQL注入攻击策略运用到网络系统环境中,为解决网络环境 SQL注入攻击提供了重要依据。SQL注入攻击通用检验模型对WEB应用数据库安全发挥重要作用,通过模型分析可以有效控制数据库安全问题。在SQL Server环境下,可以把所有的代码都进行函数抽象,最终以单独文件形式存放,使用过程中只要对相关参数进行修改即可,为网络环境下系统安全提供了重要保证。

[1]陈小兵.SQL注入攻击及其防范检测技术研究[J].计算机工程与应用.2007.

[2]周敬利.一种新的反SQL注入策略的研究与实现[J].计算机科学.2006.

[3]王云.Web项目中的SQL注入问题研究与防范方法[J].计算机工程与设计.2010.

[4]彭赓.基于改进网络爬虫技术的SQL注入漏洞检测[J].计算机应用研究.2010.

猜你喜欢

黑客服务器设置
欢乐英雄
多少个屁能把布克崩起来?
中队岗位该如何设置
船舶防火结构及设置的缺陷与整改
网络黑客比核武器更可怕
通信控制服务器(CCS)维护终端的设计与实现
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
中俄临床医学专业课程设置的比较与思考