基于网络爬虫的SQL注入与XSS漏洞挖掘.pdf
《基于网络爬虫的SQL注入与XSS漏洞挖掘.pdf》由会员分享,可在线阅读,更多相关《基于网络爬虫的SQL注入与XSS漏洞挖掘.pdf(57页珍藏版)》请在冰点文库上搜索。
西安电子科技大学硕士学位论文基于网络爬虫的SQL注入与XSS漏洞挖掘姓名:
沈寿忠申请学位级别:
硕士专业:
密码学指导教师:
张玉清20090101摘要摘要信息社会的到来,给全球带来了信息技术飞速发展的契机。
信息技术的应用,引起了人们生产方式,生活方式和思想观念的巨大变化,极大地推动了人类社会的发展和文明的进步,把人类带入了一个崭新的时代。
随着计算机及网络通信技术的迅速发展,如今的互联网已经成为触及全球任何角落的开放网络,给人们带来了实时、方便、快捷及低成本的服务。
与此同时,网络安全问题也日益突出。
如何挖掘网络应用软件的安全漏洞,是当前漏洞挖掘技术的研究热点。
本文以Web应用程序中的SQL注入及XSS漏洞为研究对象,主要工作有以下几方面:
1)总结分析了静态分析技术、Fuzzing技术及动态调试技术这三种漏洞挖掘技术,并针对静态分析技术进行了重点分析总结。
2)详细剖析了SQL注入及XSS漏洞,主要包括其产生原因、危害、避免方式、检测方法等。
3)针对SQL注入及XSS漏洞的特性,改进了网络爬虫技术,并利用该技术收集Web应用程序中可能存在SQL注入及XSS漏洞的可疑点的信息。
4)在漏洞检测过程中,使用Fuzzing漏洞挖掘技术,并结合SQL注入及XSS漏洞的检测技术,对可疑点进行注入测试。
5)实现了一个针对Web应用程序中的SQL注入及XSS漏洞的自动挖掘工具(SQLXSS)。
关键词:
漏洞网络爬虫SQL注入XSSAbstractAbstractThearrivaloftheInformationSocietyhasbroughttheworldtOtherapiddevelopmentofinformationtechnologyopportunitiesTheapplicationofinformationtechnology,raisingproduction,lifestylesandideaschangedgreatlypromotedThedevelopmentofhumansocietyandcivilizationbringhumanintoaneweraWitllthecomputerandnetworkcommunicationtechnologyisdevelopingrapidly,nowtheInteracthasbecomeaglobalreachanycomeroftheopennetwork,bringsrealtime,conveniem,fastandlowcostservicesAtthesametime,networksecurityproblemhasbecomeacuteHowtotapthenetworkapplicationsoftwaresecurityvulnerabilitiesareloopholesinthecurrentminingtechnologyhotspotsBasedonWebapplicationsinSQLinjectionandXSSvulnerabilitystudies,themainworksofthispaperareasfollow:
1)Thispaperanalyzedthreevulnerabilityexploitingtechnology,suchassmileanalysistechniques,Fuzzingtechnologyanddynamictechnology,andsummedupandanalysisthestaticanalysisasmajor2)IthasbeendetailedanalysisofSQLinjectionandXSSvulnerable,includingtheircause,harm,thewaytoavoiddetectionmethods,etc3)UsingSQLinjectionandXSSvulnerabilitycharacteristics,improvedcrawlertechnology,andtheusethistechnologytocollectionWebapplicationspossibleSQLinjectionandXSSvulnerabilityofsuspiciouspoints4)UsingFuzzingtechnology,andcombined、)I,itllSQLinjectionandXSSvulnerabilitySdetectiontechnologytestedthesuspiciouspointsinthevulnerabilityStesting5)Realizingatool(SQL_XSS)minedtheSQLinjectionandXSSvulnerabilityintheWebapplicationautomaticKeywords:
VulnerabilityCrawlerSQLInjectionXSS创新性声明本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。
尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的材料。
与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说明并表示了谢意。
申请学位论文与资料若有不实之处,本人承担一切相关责任。
本人签名:
加务嘉关于论文使用授权的说明本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:
研究生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。
本人保证毕业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。
学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。
(保密的论文在解密后遵守此规定)本人签名:
导师签名:
第一章引言第一章引言随着Interact技术的发展,Web应用程序得到了日益广泛的应用;与此同时,Web应用程序地位的提升也直接导致了其漏洞可能带来更为危险的安全隐患。
11W曲漏洞挖掘的发展现状Web应用程序(WebApplications)是指用户界面驻留在Web浏览器中的任何应用程序。
它基于Web运行,是典型的浏览器服务器架构的产物。
根据美国国家漏洞数据库(NationalVulnerabilityDatabase1J)的统计,在2005和2006年上报的漏洞中,Web应用程序漏洞占总数的比例分别为3767和5505,在2007年上报的漏洞中,Web应用程序漏洞的比例为4078。
根据OWASPl2J(注:
OWASP是世界上最知名的Web安全与数据库安全研究组织)的统计,基于Web应用程序的十大安全漏洞中,XSS(跨站脚本,Crosssitescripting)和InjectionFlaws(SQLinjection为其中最主要的一种)这两大类型的漏洞高居榜首,分别为25和18左右(具体数值如图11中所示)。
再根据我国CNCERTCCi列(国家计算机网络应急技术处理协调中心)在CNCEI刑CC2007年网络安全工作报告一文中所统计的数据(如图12所示)来看,网络仿冒事件(30)、网页恶意代码事件(25)及漏洞事件(8),可知我国的Web安全也不容乐观。
30002SOO20OOlSOO10OOSOOO00llL。
一LL一一。
J茎萋茎霎董重要茎萎耋蓁重詈重茎霎重萋耋萋薹图112007OWASPTop10的MITRE数据由此看来,如何保障Web应用程序的安全性,不可避免的成为了燃眉之急。
漏洞挖掘技术,是站在一个攻击者的角度去审核代码安全的一种技术手段。
减少2蕈丁网络爬虫的SQLfl入与XSS黼嗣挖矗f攻击者眼r_的Web应用程膨的安个漏i|14,就相1:
加强了Web应用程序的安全性。
这是可以从根本卜解决Web应jj程序安全隐患的种有效手段。
漏目m挖掘投术一直是刚络攻h肯最感兴趣的问题,漏洞挖掘的范俐也在随着技术的提州而有所变化。
在前期针对缓冲区溢出,格式化字符串,堆溢fH,1ib库溢出等技术都足针对ELF文件(LinuxlJr执行文件)或者PB文件(Win可执行文件)的漏洞挖掘技术;在针对ELF文件及PE文件(“e与td11)的漏洞挖掘过程中,出现了很多的漏洞挖掘技术,但是针对ELF文件及PE文件的漏洞挖掘始终停留在了黑盒测试(包括单元黑盒测试)阶段。
目前的漏洞挖掘技术有很多种,主要分为静态分析技术(Staticanalysis)、动态词试技术(Runtimeanalysis)和Fuzzing技术(Fuzzing)。
2007年网络安伞事件类型分布CqCRLCC日iei码-垃#图1,2我幽2007网络安全事件类型分布国际上针对Web应用程序漏删挖掘这课题的研究始于二十世纪末。
奥地利ViennaUniversityofTechnology提出静态源代码分析方法,对数据流进行分析,依靠别名提高准确率,并开发了开源工具PixyI;美国GeorgiaInstituteofTechnology和NortheasternUniversity提出了基十二I信数据源的SQL注入攻击动态监测方法并实现了原型WASPl63;意大利的edge-securitycorn提供了针对Web应用程序的开源Fuzz工具Wfozz8I:
此外,还有swAT、GoLdM、kltk4t等个人研究者对Web应用程序漏洞挖掘技术进行了研究。
但是这些工具部存在着一定的不足之处,如操作麻烦(命令行形式)、测试点扶舣不全面(只分析r阿页中的表单,而忽视了网页叶1含参数的超链接)、对1椎架式的网站分析不足等。
国内涉足浚领域的丰要订,国科学院信息安全国家重点实骑一,北京邮电大学,武汉大学,巾南大学等婶稀,第一章引言312课题背景基于以上原因,中国科学院研究生院国家计算机网络入侵防范中心承担了国家自然科学基金委员会的项目(项目编号:
90718007)“网络应用软件安全漏洞挖掘技术研究”的研究课题。
该项目旨在全面、系统地研究网络应用软件的安全性,将安全漏洞挖掘技术应用到软件开发和测试的过程中,增强网络应用软件的可信性。
研究内容主要包括研究可信软件的安全性需求,分析网络应用软件安全漏洞的形成机理,深入研究源码审核技术、Fuzzing技术和动态调试技术等漏洞挖掘技术,提出一套可信网络应用软件安全性的测评方法,开发和实现安全漏洞挖掘工具平台,并对重要和典型的网络应用软件进行安全性测评。
网络应用软件暴露在安全形势日益严峻的互联网环境中,先于攻击者发现安全漏洞,并及时修补软件开发的安全缺陷,对保障网络应用软件的可信性具有重要意义。
开展网络应用软件的安全性研究对促进我国软件事业的发展、提高我国自主开发软件的质量和水平、保障国内各个行业正常运转具有重要意义。
13章节安排本文分为六章,其主要工作和内容安排如下:
第一章:
引言。
主要介绍Web漏洞挖掘的发展现状、课题背景及章节安排。
第二章:
漏洞挖掘技术。
主要对漏洞进行了简单的阐述,介绍了目前三种主要的漏洞挖掘方法,即静态分析技术、Fuzzing技术及动态调试技术。
第三章:
SQL注入及XSS漏洞的挖掘。
主要介绍了网络爬虫技术,详细剖析了SQL注入和XSS漏洞的产生原因、利用方式、危害、避免方式及检测原理。
第四章:
SQLXSS漏洞挖掘工具的设计与实现。
主要介绍了SQLXSS的整体结构和其各模块的功能结构及实现。
第五章:
SQLXSS的测试与分析。
主要介绍了SQLXSS的运行测试情况。
第六章:
结束语。
概括本文的主要工作以及创新之处,指出了有待于进一步开展的研究方向。
14本章小结本章主要分析了漏洞挖掘技术的背景及Web应用程序的安全现状,引出了论文主题的课题背景,最后对整篇论文的研究内容和章节的安排进行了介绍。
第二章漏洞挖掘相关技术介绍5第二章漏洞挖掘相关技术介绍随着网络化与信息化的飞速发展,信息系统的安全问题日益严重。
网络攻击、入侵等安全事件频繁发生,而这些事件多数是由于系统存在的安全漏洞所导致的。
于是,为了从根本上解决问题,人们开始进行了系统安全漏洞方面的研究。
对系统安全漏洞的研究,有利于及时修补已知的漏洞、发现未知的漏洞、从而减少系统安全漏洞被攻击者利用的可能性,对降低安全事件的发生率有着重要的意义。
21漏洞概述211漏洞的概念系统安全漏洞,也叫系统脆弱性(vulnerability),简称漏洞。
它是针对系统安全而言的,包括一切导致威胁、损坏计算机系统安全性(可靠性、可用性、保密性、完整性、可控性、不可抵赖性等)的所有因素,是计算机系统在软件、协议的具体实现或系统安全策略上存在的缺陷和不足。
在RFC282811911争对漏洞的定义如下:
AflaworweaknessinasystemSdesign,implementation,oroperationandmanagementthatcouldbeexploitedtoviolatethesystemSsecuritypolicy也就是说安全漏洞可以被恶意攻击者用来突破系统的安全策略,从而访问未授权的资源和数据。
212漏洞产生的原因“漏洞”是一个抽象的概念,是和计算机安全相对而言的。
造成漏洞的原因很多,例如:
(1)设计人员不是非常熟悉安全设计者知道软件可能会有哪些安全问题,软件在什么地方比较危险,才会采取合适的技术来减缓威胁,这样可使软件更加安全。
软件设计人员在分析和设计软件时,如果不能够将所有的安全风险考虑周全,尤其是最新出现的安全问题,稍有疏漏就有可能给软件留下安全隐患。
(2)开发人员编码疏忽6基丁网络爬虫的SQL注入与XSS漏洞挖掘软件开发人员在编写代码中,对可能引入安全漏洞的危险函数使用不当,一个小小的疏忽就有可能导致安全漏洞出现。
当然即使再小心细致的开发人员,有时也是不可避免的会在编程中出现安全问题。
例如,虽然缓冲区溢出的原理很简单,大家都很容易理解,但是要让程序员编写出完全没有缓冲区溢出漏洞的代码却是十分困难的。
(3)测试人员对软件安全性测试的经验与技巧不足不少软件公司在测试软件时并没有专门的安全人员参与到安全测试中去,而仅仅是对软件进行功能测试和性能测试。
而软件正常的功能测试和性能测试功能与软件的安全测试区别是很大的,经验充足的安全测试人员会更容易找到软件的安全漏洞。
(4)软件开发进度上的压力任何软件的开发都会有进度压力,这就使得开发者必须在进度与质量上做出抉择。
有的开发者首先将进度放在首要位置,其次他们考虑的是预算,如果有富余的时间才有可能考虑安全性能和安全目标。
没有充足的时间去进行安全测试将无法保障软件的安全性。
213漏洞的特点漏洞的来源是多种多样的,但是也可以总结出漏洞的一些基本特点,如t1)编程过程中出现的逻辑错误,这是很普遍的现象,这些错误绝大多数都是由于疏忽造成的。
2)数据处理(例如对变量赋值)比数值计算更容易出现逻辑错误,过小和过大的程序模块都比中等程序模块更容易出现错误。
3)漏洞和具体的系统环境密切相关。
在不同种类的软、硬设备,同种设备的不同版本之间,由不同设备构成的不同系统之间,以及同种系统在不同的设置条件下,都会存在各自不同的安全漏洞问题。
4)漏洞问题与时间紧密相关。
随着时间的推移,旧的漏洞会不断得到修补或纠正,新的漏洞会不断出现,因而漏洞问题会长期存在。
22漏洞挖掘技术目前,挖掘漏洞技术有很多种,本文主要介绍了静态分析技术、Fuzzing技术及动态调试技术。
第二章漏洞挖掘相关技术介绍7221静态分析技术静态分析技术(Staticanalysis)包括源代码审核和二进制审核。
源代码审核指人工或者利用工具阅读程序的源代码,从而发现可能产生安全漏洞的相关代码。
软件丌发者一直在寻找在开发早期发现漏洞的办法,以便尽快修复,并降低开发费用,源代码分析就是非常重要的一项措施。
目前,以微软为代表的各大国际软件公司均成立有专门的安全小组负责对自身的软件进行安全测评,所应用的主要技术之就是源码审核技术。
2006年,美国国土安全部科技司与美国专业的源码审核公司Coverity10】达成协议,美国政府拨专款资助Covertiy公司利用源代码分析寻找并解决全美各级基础设施关键代码的安全隐患。
目前不进行源码审核,软件的安全性就无从谈起,这已经是国际上普遍的共识。
二进制审核是指对二进制程序进行反汇编,通过分析反汇编代码来寻找安全漏洞,其过程一般是在一些工具(如IDAPro)帮助下的分析过程【11,12l。
源代码审核与二进制审核不同的根本原因:
一个是有源代码,一个是仅有可执行文件。
在可执行文件中,由于变量信息的缺失和类型信息的缺失,我们只能分析和追踪寄存器值,从而导致了两种静态分析技术的巨大差异。
二进制审核的瓶颈目前在于反汇编工具反汇编功能不够强大。
静态分析技术的目标一般是C和C+,同时由于C+的某些高级特性使得源代码审核更加困难,所以,多数的静态分析工具将目光集中在C语言上。
目前审核Java的工具,比较典型的是Findbugs13,14】,安全焦点2007会议上也有文献讨论了基于Java的Web应用程序的安全问趔”J。
静态代码分析技术包含较多的主题,如词法分析、控制流分析、数据流分析、符号执行、类型推理、抽象解释、模型检测和自动定理证明等掣161。
目前在安全漏洞挖掘方向使用最为广泛的是词法分析、控制流分析和数据流分析。
此外,国外同行在2007年度新提出了应用布尔可满足概念来改进源码审核技术的有效性,这也是当前源码审核技术研究的一个焦点。
(1)词法分析词法分析(LexicalAnalysis)不仅是能够实现编译器中的词法分析,还包括语法和语义分析。
如表21列举了一些简单的词法分析(语义分析)工具,它们通过对软件代码进行词法分析,然后从特征数据库里抽取感兴趣的内容进行上下文分析,并对有问题的软件代码位置进行报警。
特征数据库包含的主要是会产生安全问题的函数,例如gets、strcpy、printsprintsn州ntf等。
针对不同的目标函数,词法分析工具会调用不同的处理函数来对危险函数的参数进行分析。
词法分析能够进行自动化的检测,但是由于词法分析无法对程序的上下文进行必要的分析,8基丁网络爬虫的SQL注入与XSS漏洞挖掘误报率和漏报率都非常高。
表21简单词法(语义)分析J:
具工具名称软件类型开发者国家功能描述运行平台Flaw使用Python编写的脚本程序,针类Unixfinder开源DavidA美国对CC+语言,检测危险函Windows针对C和C+语言的免费的命ITS4开源Cigital,lnc美国令行工具,事先定义一系列危险类Unix,函数名,检测潜在的安全弱点WindowsFortify非常简单的代码审查工具,可以RATS开源Software美国审核的编程语言有:
C,C+,类Unix,lncPerl,PHP和PythonWindows加