1、湖北大学本科毕业论文(设计)湖北大学本科毕业论文(设计)题目基于WEB服务器SQL漏洞入侵与防护姓名学号专业年级指导教师职称2013年04月20日湖北大学本科毕业论文(设计)I目录1绪论错误未定义书签。11研究背景错误未定义书签。12研究现状和意义错误未定义书签。2WEB服务器SQL漏洞入侵错误未定义书签。21方法简单介绍错误未定义书签。22搜寻网站SQL注入点323验证漏洞后通过SQL入侵得到用户名和密码524开始破解5241破解表名5242破解列名6243破解列名的长度USERNAME错误未定义书签。244破解USERNAME的内容8245用所得到的用户名和密码登陆103WEB服务器SQL
2、漏洞防护1131简单介绍1132对用户输入的数据进行过滤11321基础过滤与二次过滤11322使用SQL通用防注入程序进行过滤1133设置错误提示信息1234使用专业的漏洞扫描工具1435对重要数据进行加密144结论15参考文献16湖北大学本科毕业论文(设计)II基于WEB服务器SQL漏洞入侵与防护摘要由于互联网的普遍应用,WEB应用平台早已渐渐发展成为互联网信息交互的中心,但是跟随而来的是WEB应用遭遇到日渐严重的安全威胁问题,怎样确保WEB应用安全,现已变成一个及其重要的探索课题。根据WEB应用的入侵与传统WEB入侵比较,具有很多新特点,比如利用常见的H1印协议携带恶意数据,使得传统的WE
3、B层防火墙和入侵检测系统根本不能辨别,所以得从应用层的角度出发进行安全防护。本文首先探索了WEB应用安全产生的原因和其目前面对的重要安全威胁,进而根据WEB应用平台提出了一个安全解决方案。进而更加深入的研究了SQL注入攻击这种影响非常严重的WEB应用入侵以及防护技术,并且在纯理论研究的根基上对提出的安全防护机制进行了设计与实现。对于SQL注入攻击,本文探讨了它的入侵行为以及语句特点,采用正则表达式对入侵特点进行了很完整的解释;而在研究SQL注入防护技术的基础上,本文主要在服务端过滤技术设计的基础上解决了WEB服务端SQL注入攻击过滤器。此过滤器在HTTP请求提交WEB服务器系统模块处理前,解析
4、请求数据,及时拦截攻击入侵行为而且加以警告;根据采用基于攻击特征的正则表达式描述解释过滤规则,减小了过滤机制的误报率和漏报率;而且在此期间结合IP访问限制功能,可以防止入侵者进行穷举式SQL注入攻击。之后的测试结果说明,本文设计实现的攻击防御机制可以很好的防止SQL注入,而且对服务器响应延迟和负载影响很小。关键词WEB应用安全,SQL注入入侵,SQL防护湖北大学本科毕业论文(设计)IIIBASEDONTHEWEBSERVERSQLEXPLOITSANDPROTECTIONABSTRACTWITHTHEWIDELYSPREADOFTHEINTERNET,WEBAPPLICATIONPLATFOR
5、MHASBECOMETHECOMMUNICATIONCENTEROFTHEINTERNETBUTATTHESAMETIME,THETHREATSTOTHEWEBAPPLICATIONAREVERYSERIOUSHOWTOPROTECTWEBAPPLICATIONSSECURITYISVERYIMPORTANTTHEATTACKSTOTHEWEBAPPLICATION,COMPARINGWITHTRADITIONALNETWORKATTACKS,HAVEMANYNEWFEATURES,SUCHASUSINGHTTPPROTOCOLTOCARRYMALICIOUSDATA,WHICHCANNOTB
6、EDETECTEDBYTHEFIREWALLANDINTRUSIONDETECTIONSYSTEMSOWEMUSTDEFENSETHEATTACKSFROMTHEAPPLICATIONLAYERINTHISPAPERWESTUDYTHEORIGINANDCOMMONTHREATOFWEBAPPLICATIONSECURITYFIRSTLYTHENWERESEARCHANDIMPLEMENTAPROTECTMODULETOPROTECTWEBSITESFROMSQLINJECTIONTODEFENDSQLINJECTION,WEANALYZETHECHARACTERISTICOFSQLINJEC
7、TIONANDCONSTRUCTTHEREGULAREXPRESSIONFORTHESEATTACKSTHENWEDESIGNASQLINJECTIONATTACKFILTERMODULEINSIDEWEBSERVER,WHICHISBASEDONTHEFILTERRULESUSINGREGULAREXPRESSIONTHISMODULECANDEFENDCOMMONSQLINJECTIONS,WHICHDETECTSTHEATTACKSBEFORETHEHTTPREQUESTSHANDLEDBYTHESYSTEMMODULESWITHTHEIPLIMITMECHANISM,THISMODUL
8、ECANPROTECTWEBSERVERFROMEXHAUSTIVEATTACKSLAUNCHEDBYHACKERSTHETESTRESULTSSHOWTHATTHEMODULESCANPREVENTSQLINJECTIONEFFECTIVELY,WITHVERYLITTLEINFLUENCETOTHEWEBAPPLICATIONPLATFORM【KEYWORDS】WEBAPPLICATIONSECURITY,DEFENSETECHNOLOGY,SQLINJECTION湖北大学本科毕业论文(设计)11绪论11研究背景由于信息化建设的逐渐普及,企事业单位,不管是建设其自用的业务应用系统,还是构建
9、仅对外信息的发布平台,都不能没有WEB应用技术。WEB应用技术不单单给USER供应一个简便的交互平台,而且同时给信息SERVER供应了一种搭建信息SYSTEM的标准技术。但是随着WEB应用平台应用日渐广泛,对于WEB应用程序的入侵也多了起来,WEB应用安全正遭遇越来越严重的威胁和挑战美国WEB安全SERVER的CENZIC的分析报告表明,2008年WEB攻击入侵事件有80是对WEB应用平台进行的,之后到2009年,这一入侵比例上升到了82。另外根据CNCERTCC研究表明,2006年至2007年,中国内陆WEB恶意挂马事件增长了26倍,而被更改WEB数量增长了15倍,2009年国内被更改WEB
10、数量已经达到42万个,这种恶意攻击入侵严重地影响了WEB应用平台的日常运作。现在对于WEB应用层的入侵已经多达到上千上万种,其中最常见的攻击入侵有以SQL注入攻击为代表的各种注入攻击入侵、非法篡改网站页面、网页恶意挂马等等。各种WEB入侵采用的漏洞攻击入侵方法不完全相同,甚至同样的攻击都可以运用各种各样的手段,从而达到入侵者最终的目的。以SQL注入攻击为例,如果WEB应用PRODUCER写的代码根本未对USER输入数据的合法性进行判断,入侵者就可以编造恶意SQL语句,以便得到一些重要的数据,更有甚者,可以得到SERVER最高执行权限。与此同时,SQL注入攻击入侵可以采用HTTP协议中的GET方
11、法、POST方法以及COOKIE数据等多种途径发起,入侵者就可以不间断的整合入侵参数来达到最终目的。图11描述了目前较为典型的一种WEB应用平台架构,客户端一般称为WEB浏览器向WEB服务器SEND请求,WEB服务器将请求再转发到应用逻辑服务器或者WEB应用程序处理,其中估计会涉及到与数据库服务器的交互。WEB应用程序完成逻辑数据后,将响应内容返回给客户端。为确保WEB应用平台的安全,许多公司都在WEB边界上设置了防火墙或入侵检测系统。但是防火墙和入侵检测系统仅仅只阻拦对网络层的入侵,而当入侵者采用WEB应用程序漏洞进行针对性入侵时候,防火墙和入侵检测系统就没办法了。网络防火墙可以面对端口实行
12、访问控制功能,然而防火墙必须能够让HTTP和HTTPS协议数据通过,来确保能够对外正常的供应WEB服务。假设入侵代码被移植到HTTP通信数据中,这样防火墙就不能辨别这样的通信数据合法性,反而不能防护这种入侵。比如,SQL注入攻击就是利用合法的HTTP通信数据,它在HTTP请求实体中植入恶意SQL查询代码,而安全地通过WEB防火墙,来达到攻击内网数据库的目的。入侵检测系统也工作在网络层上,也依据特殊方法检查攻击行为,然而入侵检测系统湖北大学本科毕业论文(设计)2对应用层数据的析构能力也有限。综上可以看出,传统网络层的安全防护系统不能够很好的应对应用层协议数据,更加不能够根据WEB应用程序深层次解
13、析请求内容,从而不能够防御对于WEB应用程序的入侵。对其根本讲,以应用层为基础的入侵本源上是由WEB应用程序漏洞引起的,而WEB应用程序PRODUCER的技术上或者经验上的缘由,未能有效应对各种WEB应用安全问题,最后产生了WEB应用层漏洞。但是实际情况下,让所有的PRODUCER在编写WEB应用程序时都注意防御这些漏洞不是很现实,并且WEB应用攻击入侵方式的不间断的更新也让只依据应用程序本身不能有效的防御各种各样的攻击。因此,研究专门的WEB安全防护策略来确保WEB应用平台的安全。12研究现状和意义当前防御采用HTTP协议进行的WEB应用攻击入侵,主要利用的技术是对WEB服务器的功能做延展,
14、在WEB服务器软件中加入安全防护板块,就能够在HTTP请求数据被WEB服务器系统模块处理之前进行安全检查,区别通常的USER访问和入侵者的非法数据,这种技术称为“WEB服务器扩展技术”或者“WEB服务器模块开发技术”,它可以及时有效的防护例如SQL注入攻击等利用正常HTTP通信数据的入侵。但是仅仅利用WEB服务器延展技术不可以防护所有类型的入侵,各种各样的入侵原理及模式的不同决定了相对应的防御技术也必然会有所不同。比如,防护SQL注入攻击的重点是可以辨别出HTTP请求中的注入字符串。对于SQL注入攻击的防御技术,有静态检查、服务端过滤、SQL参数化查询等。而且,华中科技大学周敬利提出了SQL语
15、法预分析技术,它是一种较新的SQL注入防御技术,利用USER提供的表单数据和上下文环境组建出一条SQL语句,并且对该SQL语句的框架特点进行析构从而辨别攻击入侵行为。这种技术在原先产生的字符串过滤技术的根基上进行更进,给SQL注入防护技术提交了一种新的思维。WEB应用安全的威胁日渐严重,逐渐增多的的国内外公司和科研机构开始进行到WEB应用安全防护技术的研究,从而WEB应用安全防护技术逐渐取得进步,多种多样的研究成果逐渐出现。全世界关于WEB应用安全的代表产品主要有国内中创软件商用中间件股份有限公司以国家863技术成果为基础研发的INFOGUARD网页防篡改中间件,以及上海天存信息技术有限公司采
16、用WEB服务器扩展技术研发的IWALL应用层防火墙;国外IBM公司开发的应用层安全漏洞扫描系统的RATIONALWEBAPPLICATIONSECURITYSOLUTIONS等。但是,一些商业原因使这些公司的技术并没有公布,仅仅在基本防御策略上有一点理解;另外,对于WEB应用的攻击方式和手段也不断改进和演化,促使我们需要不断研究新的防护技术与策略。总而言之,随着动态解析模式的WEB应用程序的产生,WEB应用平台遭遇着由WEB应用程序漏洞所引发的安全威胁。怎样有效的应对这些安全问题,以应用层的角度来防护WEB应用平台的安全,已成一项重要的研究课题。研究WEB应用安全防御技术,对于保障WEB应用平
17、台的安全运行,以及保障WEB应用访问客户的隐私和安全都有着重要意义。2WEB服务器SQL漏洞入侵21简单介绍本文的攻击方法成为SQL注入,由于本人初次学习,所以本实验的攻击方法为手动输入SQL攻击ASP网站。获得网站的登录权限。攻击网站首页如下湖北大学本科毕业论文(设计)322搜寻网站SQL注入点尝试几个有传入参数的页面,逐个测试是否有SQL注入漏洞,识别方法为把网址栏的IDX加个号,或在表单输入号,如果提示表达式错误,表示有漏洞可注入,另外,通过这个方式可以得到程序所用的数据库类型。点击北京链接会发现地址栏中出现了变量,直接在后面加入“”返回错误,初步判断有注入漏洞。湖北大学本科毕业论文(设
18、计)4进行验证是否存在SQL注入漏洞,验证方法如下在这里我们可以看到几条信息,第一错误信息上位JETDATABASE基本可以肯定为ACCESS数据库。第二出现字符串语法错误有可能存在注入漏洞。第三我们提交的字符串被单引号包含着说明是字符型。接下来利用字符型判断语句“AND11”和“AND12”测试。会发现“AND11”返回正确而“AND12”返回错误肯定存在注入漏洞。23验证漏洞后通过SQL入侵得到用户名和密码此处我们破解的流程如下判断数据库表名判断数据库列名判断列名字段个数字段猜解下面沾出实验的五个语句,然后慢慢带着大家破解测试数据库中字段长度HTTP/2021141458/INDEXASP
19、CITYBJANDSELECTTOP1LENTELFROMINFO10AND11猜测数据库中表ANDEXISTSSELECTFROMADMINAND11猜测数据库中字段子列ANDEXISTSSELECTADMINFROMINFOAND11利用二分法猜测数据库中的信息条数ANDSELECTCOUNT1FROMINFOWHERE11BETWEEN0AND100A湖北大学本科毕业论文(设计)5ND11猜测数据库中值得代码HTTP/2021141458/INDEXASPCITYBJANDSELECTTOP1ASCMIDCITY,1,1FROMINFO97AND1124开始破解241破解表名在地址栏后加
20、上ANDEXISTSSELECTFROM表名AND11当常用表名输入INFO时系统返回正常图面如下我们再随意输入一个表名“ANDEXISTSSELECTFROMADMINAND11”发现返回错误并且错误写着找不到输入表ADMIN,这就说明不存在ADMIN表但是存在INFO表。湖北大学本科毕业论文(设计)6242破解列名首先经过对表名的破解大家已经有了基础,还是破解列名的方法也是一样的如下猜测列名语句猜测数据库中字段子列ANDEXISTSSELECT列名FROMINFOAND11将列名换成USERNAME反馈正常判断有USERNAME接下来我们将列名换成ADMIN发现反馈错从而判断有USERNA
21、ME湖北大学本科毕业论文(设计)7按照同样的方法我们现在可以猜出有列名PASSWORD总结下,现在我们已经破解出来了表,INFO,列名USERNAME,列名PASSWORD243破解列名的长度USERNAME破解语句如下测试数据库中字段长度HTTP/2021141458/INDEXASPCITYBJANDSELECTTOP1LEN字段名FROMINFO数字NAND11如上我们将字段名换成USERNAME数字换成直到显示错误判断字段的长度如下图当时反馈正常,当时反馈不正常,从而判断所以USERNAME字段长度为5N4反馈正常湖北大学本科毕业论文(设计)8如下N5反馈不正常总结下,现在我们已经破解
22、出来了表,INFO,列名USERNAME,列名PASSWORD列名USERNAME长度5列名PASSWORD长度2244破解USERNAME的内容猜测数据库中值得代码HTTP/2021141458/INDEXASPCITYBJANDSELECTTOP1ASCMID列名,1FROMINFOMAND11如上述语句列名我们填写USERNAME,N分别写上12345表示列名的位数,M表示列名位数N的ASC的值,M为65122如上述语句中主要的函数就是ASCMID列名,1反馈ASC数值,理论不如行动如上列名USERNAME,N1,M103,M104反馈正常和不正常截图如下M103湖北大学本科毕业论文(设
23、计)9M104有上述可以知道ASCMIDUSERNAME,1,1104同理ASCMIDUSERNAME,2,1117ASCMIDUSERNAME,3,197ASCMIDUSERNAME,4,1110ASCMIDUSERNAME,5,1103由ASC表可以得知CHAR104H,CHAR117U,CHAR97A,CHAR110N,CHAR103G综合上述分析我们得到用户名USERNAMEHUANG同理我们得到密码PASSWORD;FU湖北大学本科毕业论文(设计)10245用所得到的用户名和密码登陆用破解的用户名和密码登陆截图登陆结果截图如下到此为止成功入侵网站后台湖北大学本科毕业论文(设计)113
24、WEB服务器SQL漏洞防护31简单介绍SQL注入攻击的危害性比较大,现在已经严重影响到程序的安全,所以必须从网站设计开始来防御SQL注入漏洞的存在。在防御SQL注入攻击时,程序员必须要注意可能出现安全漏洞的地方,其关键所在就是用户数据输入处。32对用户输入的数据进行过滤目前引起SQL注入的原因是程序员在编写网站程序时对特殊字符不完全过滤。造成这样的现象还是因为程序员对脚本安全没有足够的意识,或者考虑不周引起的。常见的过滤方法有基础过滤,二次过滤以及SQL通用防注入程序等多种方式321基础过滤与二次过滤在SQL注入入侵前,需要在可修改参数中提交“”,“AND”等特殊字符来判断是否存在SQL注入漏
25、洞;而在进行SQL注入攻击时,需要提交包含“;”,“”“UPDATE”,“SELECT”等特殊字符的SQL注入语句。所以要防范SQL注入,则需要在用户输入或提交变量时,对单引号,双引号,分号,逗号,冒号等特殊字符进行转换或过滤,以很大程度减少SQL注入漏洞存在的可能性。下面是一个ID变量的过滤性语句IFINSTR(REQUEST(ID),,)0ORINSTRREQUEST(ID),INSERTORINSTR(REQUEST(ID),)0THENRESPONSEWRITEJAVASCRIPTHISTORYGO1RESPONSEENDENDIF使用上述代码可以过滤ID参数中的“;”,“,”和“IN
26、SERT”字符。如果在ID参数中包含有这几个字符,则会返回错误页面。但危险字符远不止这几个,要过滤其他字符,只需将危害字符采加入上面的代码即可。一般情况下,在获得用户提交的参数时,首先要进行一些基础性的过滤,然后再根据程序相应的功能以及用户输入进行二次过滤。322使用SQL通用防注入程序进行过滤通过手工的方法对特殊字符进行过滤难免会留下过滤不严的漏洞。而使用“SQL通用防注入程序”可以全面地对程序进行过滤,从而很好的阻止SQL脚本注入漏洞的产生。将从网上下载的“SQL通用防注入程序V30”存放在自己网站所在的文件夹中,需要进行简单设置就可以轻松帮助程序员防御SQL注入,这是一种简单的过滤方法。
27、该程序全面处理通过POST和GET两种方式提交的SQL注入,并且自定义需要过滤的字符串。当黑客提湖北大学本科毕业论文(设计)12交SQL注入危险信息时,它就会自动记录黑客的IP地址,提交数据,非法操作等信息。除对用户提交的参数和变量进行过滤外,也可以直接限制用户可输入的参数,因为只允许提交有限的字符远比过滤特定的字符更为安全。33设置错误提示信息SQL注入主要依据是IIS给出的ASP错误信息,所以配置IIS和数据库用户权限,可以阻止SQL注入攻击。具体的操作步骤如下在“管理工具”窗口双击“INTERNET信息服务”图标,即可打开“INTERNET信息服务”窗口,如图依次打开“本地计算机”“网址
28、”分,右击其中的“默认网站”图标,在快捷菜单中选择“属性”选项,即可打开“默认网站属性”对话框,如图湖北大学本科毕业论文(设计)13切换到“自定义错误”选项卡,在“HTTP错误”列表中选择“500100”选项,如图所示。湖北大学本科毕业论文(设计)14单击“编辑属性”按钮,即可打开“错误映射属性”对话框,在“消息类型”下拉列表中选择“默认值”选项,如图所示,单击“确定”按钮,即可完成对错误提示信息的设置。34使用专业的漏洞扫描工具企业应当投资于一些专业漏洞的扫描工具,如ACUNETIX的WEB漏洞扫描程序等。一个完善的漏洞扫描程序可以查找网站上的SQL注入式漏洞;而程序员应当使用漏洞扫描工具和
29、站点监视工具对网站进行测试。35对重要数据进行加密采用加密技术对一些重要的数据进行加密,比如用MD5加密,MD5没有反向算法,也不能解密,就可以防范对网站的危害了。湖北大学本科毕业论文(设计)154结论在本论文中,主要涉及到一种基于WEB服务器SQL漏洞入侵以及防护。SQLSTRUCTUREDQUERYLANGUAGE,结构化查询语言是专为数据库设计的解释型语言,可用于读取、更新、增加或者删除数据库中保存的信息。在WEB应用程序中,SQL语言解释器处理的数据实际上是由程序员编写的代码和用户提交的数据共同组成的,入侵者可以提交设计的输入向应用程序发起攻击入侵,而这些输入一般对于应用程序来说,有特
30、殊意味的SQL语句。如果WEB应用程序之中有漏洞,也就是说PRODUCER写的代码未对数据库做相关的USER输入合法性检测,那应用程序就会依照入侵者的意图执行。从而,入侵者能够采用这种漏洞入侵目标WEB应用程序的数据库组件,进行注入恶意SQL语句,再窃取数据库中的重要信息甚至获取对数据库服务器的完全控制。在针对前人在实验室做的一个WEB,我开始进行SQL注入攻击,刚开始不得其要,始终攻入不了,在别人的帮助下,进行一些SQL语句的改变,进而彻底攻入实验室的网站。而在防御SQL注入攻击时,我查看了学校图书馆的相关书籍,对网站进行了一些防护,把漏洞给补上来了。因此要防护SQL注入攻击,程序员必须要注
31、意可能出现安全漏洞的地方,其关键所在就是用户数据输入处。常见的方法有1对用户输入的数据进行过滤,而过滤方法又有基础过滤,二次过滤以及SQL通用防注入程序等多种方式。2设置错误提示信息。3使用专业的漏洞扫描工具。4对重要数据进行加密。湖北大学本科毕业论文(设计)16参考文献1陈鸣网络工程设计教程系统集成方法FML北京机械工业出版社,20082冯吴,黄治虎交换机路由器的配置与管理【M】一E京清华大学出版社,20093张兴华,张晓计算机网络工程实践教程M1北京北京大学出版社,20104徐乇国,韩兆君WEB应用程序中的数据库安全策略J1电脑知识与技术,20071235寂寞的刺猬上传漏涧的形成【J1黑客
32、防线,2006419226王继龙常见WEB应用安全漏洞及应对策略【J1中国教育网络,2007875757周敬利,王晓锋,余胜生,夏洪涛一种新的反SQL注入策略的研究与实现【J】计算机科学,2006,331164688上海天存信息技术有限公司W,EB应用安全EBOLHTTPWWWTCXACOMCILIW甜UAPPSCCH仃N19赵静使用RATIONALAPPSCAN保证WEB应用的安全性,第L部分WEB安全与RATIONALAPPSCAN入FJ【EBOLHTTPWWWIBMCORNDEVELOPERWORKSCNRATIONALRENAPPSCANL,200710孙昕使用RATIONALAPPS
33、CAN保证WEB应用的安全性,第2部分使用RATIONALAPPSCAN应对W曲应用攻击EBOLHTTPWWWIBMCOMDEVELOPERWORKSCNRATIONALRCNAPPSCAN2,200711周敬利,王晓锋,余胜生,夏洪涛一种新的反SQL注入策略的研究与实现【J】计算机科学,2006,33116468湖北大学本科毕业论文(设计)17致谢冰冻三尺,非一日之寒。经过近半年来的努力,这篇毕业论文也顺利完成。回忆过去的日子,除了激动我更多的是感动,没有周围人的帮助,我是很难完成这个艰巨的任务的。首先我要感谢我的指导老师,张老师平日工作繁忙,还在百忙之中分出精力来给予我悉心的指导,帮我修改论文中的错误。除了敬佩张老师的专业水平外,他的严谨的治学态度和科学研究的精神也是值得我永远学习的。我还要感谢我的师兄,在实验室里正是他们和我一起克服重重难关,完成实验环节的各个突破,才得来这来之不易的数据,没有他们的帮助我几乎不能完成这个艰巨的任务。此外,我还要感谢大学四年来始终关心、支持我的老师、同学,是你们的关怀与支持陪伴着我走完了四年的大学生活。最后,感谢我的母校湖北大学,是她培养了我,让我学习知识,感悟人生。