您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页面向Web服务安全的漏洞扫描器的设计与实现

面向Web服务安全的漏洞扫描器的设计与实现

来源:华佗小知识
密级编号丰·初大·警CENTRALSOUTHUNIVERSITY硕士学位论文论文题目面向W出服轰塞全魍漏洞捐描器的…设让与实现学科、专业让箕机科学与技术研究生姓名黄丛韬导师姓名及专业技术职务…王伟平教援ResearchandImpIementationofWebApp¨catiOnSecurityscannerSpeciaIty:£Qmp世盟S£i£丑盟鱼壁£hn直Q鲤MasterDegreeCandidate:H丛B丑g£Q丑g!aQSuperVisor:里!!£坠iPi旦g№gCo|IegeofInfornlationScience&EngineeringCentraISouthUniVersityChangShaHunanP.R.Ctl!,.原创性声明本人声明,所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了论文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得中南大学或其他单位的学位或证书而使用过的材料。与我共同工作的同志对本研究所作的贡献均已在论文中作了明确的说明。作者签名:查丛整日期:塑&年土月兰生日学位论文版权使用授权书本人了解中南大学有关保留、使用学位论文的规定,即:学校有权保留学位论文并根据国家或湖南省有关部门规定送交学位论文,允许学位论文被查阅和借阅;学校可以公布学位论文的全部或部分内容,可以采用复印、缩印或其它手段保存学位论文。同时授权中国科学技术信息研究所将本学位论文收录到《中国学位论文全文数据库》,并通过网络向社会公众提供信息服务。作者签名:耋姐导师签名碑,日期:生年上月翌日摘要随着web应用被越来越广泛的应用,对其安全性的关注也逐渐上升到越来越高的层次,如何保障web应用的安全性已经是一个重要的研究课题。目前存在许多防护系统用于防御web应用攻击,在一定程度上增强了web应用的安全性,但是会带来不少的性能损耗和维护代价。因此及早发现漏洞并将其消除以增强web应用自身的安全性能够防忠于未然,极大减少后续软件维护的开销,提升软件产品的信誉。而web应用漏洞扫描软件作为漏洞检测过程中一类重要的工具,能有效地辅助检测者的工作,减少检测者的工作量,因此很有研究的必要。本文研究了Ⅶreb应用漏洞产生的原因以及对应的检测方法,对web应用漏洞扫描的两类关键技术一web漏洞扫描信息获取和web应用漏洞检测机制进行了深入研究,针对web应用的特点设计了一个web应用漏洞扫描软件框架,并实现了其中的相关核心检测模块。针对web漏洞扫描信息获取的目标,深入研究了基于正则表达式的网页内容提取技术、交互式表单内容的抓取技术、用于扫描信息的DOM文档技术和HTTP通信协议技术。利用宽度优先搜索策略结合实用的uRL传输库解决了对目标wEB应用扫描信息获取的问题。设计并实现了一个具有一定语义识别能力的自动表单填充模块,解决了隐藏在表单后面的扫描信息获取问题,可以达到对网页漏洞扫描相关元素的完整提取。在获取了相关漏洞扫描信息的基础上,进一步对web应用漏洞检测技术进行了深入研究。针对web应用漏洞不断更新、检测技术不断变化的特点,利用动态链接库技术,设计实现了一种基于规则扩展和插件扩展的漏洞检测机制,实现了可以自定义新的扫描插件,同时,深入研究了漏洞分析器的工作原理和过程,针对web安全中主流的sQL注入漏洞、s0L盲注漏洞、xSs攻击漏洞以及备份文件检测等漏洞,设计实现了用于相关的漏洞分析与检测的插件,在此基础上实现了一个自动化的w曲安全漏洞分析器。针对w曲应用中需要手动探索的部分以及自动化扫描软件的结果的确认,本文研究并设计了编码/解码工具、HTTP请求发送与解析等工具,以提高检测的准确性和效率。针对相关的网站进行了远程的漏洞扫描测试,结果表明本文设计的web应用漏洞扫描软件可以有效地检测s0L注入漏洞、xss漏洞以及各份文件检测等漏洞。达到了预期设计的效果。关键词:web应用安全,漏洞检测,页面抓取,漏洞分析AbstractAswebapplic“onsa瞳morewidelyused,血econcen打atknt0讹securityhasrisentoa11increasinglyhigh1evelHowtopmtectt11esecurityofWeb8pplicationshasbecomeanimponantresearchtopic.Curremlytherearemanyprotectionsystemsareusedfordefens。againstWebapplicationanacks,山es。syStemstosomeemem,enhance山esecurityofW曲印plications,butitr。quiresalotofperfoHnancelossandmaintenancecostTherefore,earlydetectionofvulnerabilitya11ditseliminationcallbeefrectjvepreventivemeasurestoenhancethesecurityofwebappllcationitseleitalsocangreatlyreducethebackfor{hecostofsonwaremaintenanceande11hancethecredibIIitvoftheso丘wareproductsWebapplicationⅧlnerabilitysca肿ingsoRwareisa11imponallttoolfort11edetectio“process,whichcaneffectivelysupPontheworkofthetesters,greatIyreduce山edetectionworl(10adSotheresearchonitisVorynecessary·First,thisp印erstudiesthecausesoftheWeb印plicationvulnerabilitiesandthecorrespondin卫detectionmethodsTothecharacteristicsofWebapplications,8practicalWebapplicationVulnerabiliUscanni“gso疗wareframeworki8proposedSecond,twoimponanttechn0109iesarein—depthstudiedwhicharevulnerablliWscanni“ginf0肌ationaccessa11dwebappHc撕0nvulnerabilitydetectionmechanismThird,AdesignandimplementationaboutthetechnologiesisgivenTotheWebⅦInerab肌yscanni“ginfomationaccessi“g,t}1ispaper百Vesanin-depthmdyofit3goals,selectanddesi呈n3processforscanni“ginfonTlationobtainedOnthebasisofthescaninfomation,adesigna11dreallzationofwebcontentextractionmodulebasedonre2nlarexpressiontechnicali5proposedNext,anin-depthstudyont11ecmwoftheinteractivefomlcontentiscamedoutDesignedandjmplementedatlautomaticfo衄6llingmoduIewitht11eabilityofsimplesemanticidenti矗esThen,inorderto印plytheinf0玎nationwhichisobtaineddud“gthescanni“gphasetothewebvulnerabilltydetectionphasea玎dtherepongenerationphase,ascanni“ginformationmodeli5pmposedTo{heⅥ铀印plicationⅥ11nerabilitydetectiontechnology,accordi“gcocheconscanclyupdateddeteccjoncechnojogya11dchechangjngnacureofthedetectiontechnology,inthisp印e‘avarietyofscalableⅧ1nerabjlitydetectionmechanismarecomparedandanalyzedBytal(eadvantagesofthecharacteristicsoftheWebapplicationⅦlnerabilitydetectionmethods,avuInerabilitydetectionmechanismwhichisb8sedonn11e.basedeXtensionsandpI“g—inextensionsisdesignedandimplementedThen,a11in—depthstudyontheworkingprincipjeandprocessofvuInerabiⅡtyanalyzeriscamedoutBasedonthepreviousdetecnonmechanism,aⅧlnerabilityanalyzerisdesignedandimplementedNexl’inordertocompensateforthelackofpureautomatedscarmingtools,aseriesofassisteddetectiontoolsareresearchedailddesigned,theyareusedtoimprovemeemciencyofWebapplicationⅦlnerabilitytesti“gThetestshowedthatt}leWebappIicationvuInerabiIityscanningsoftwarewhichisdescnbedinthispapercandetectsQLinjectionvulnerabilities,blindSQLinjectionvulnerabilities,xSSvulnerabjlitiesaswellasthedetectionofbacl(Llp61eetcKeyWords:Webapplicationsecuri吼Vulnerabilitydetection,Webpagecrawling,Ⅷlnerabilityanalysis目录摘要…IAbstract……111第一章绪论………11.1课题背景介绍……………………1】2Ⅵ,eb应用漏洞扫描研究的现状及意义……2l3研究目的与内容……314论文章节安排…3第二章w曲应用安全漏洞综述及漏洞检测方案的提出521web应用漏洞产生的原囡……..522、veb应用漏洞检测的方法723聃-eb应用漏洞检测方案研究…10231web应用漏洞检测方案…10232综台性的漏洞检测方案1124web应用安全漏洞扫描软件的结构设计…1225本章小结14第三章、№b漏洞扫描信息获取关键技术研究与设计1531Ⅶ铀漏洞扫描中网页抓取与分析的目标…1532页面抓取遍历策略的设计与选择1633基于正则表达式的页面内容提取…18331正则表达式简介……19332使用正则表达式进行网页元素的匹配和分析1934交互式网页内容提取……20341交互式表单内容的抓取…20342AJAx网站内容的抓取2535网页模型类研究与设计…26351HTTP请求消息头和HTTP响应消息头的内容26352HTTP响应消息体的内容28353网页模型类设计2936本章小结30第四章web应用漏洞检测关键技术研究与设计3l41漏洞定义及其说明…3142可扩展的漏洞检测机制研究3243漏洞分析器研究与设计3444辅助扫描检测工具的研究…3745本章小结38第五章web应用扫描软件的详细设计与实现3951Ⅵ,eb网页抓取与分析模块的详细设计与实现39511使用Libcurl进行开发39512网页抓取功能设计与实现…41513漏洞检测类功能设计与实现4352扫描器执行结果4553本章小节48第六章结束语…4961工作总结…4962进一步工作展望……50参考文献…,1致谢55攻读学位期间主要的研究成果…56堡±堂塑堡奎————兰二兰塑笙第一章绪论11课题背景介绍随着网络信息时代的到来,各种机构或团体的日常业务处理程序都逐渐往Ⅵ,cb应用方向迁移。wcb应用以其便捷,美观和功能强大的特点广泛地博得了用户的青睐。然而随之而来的w曲应用安全问题却不容小视。wAsc在2009年初曾做估算,所有的网站中87%都存在着安全隐患…。这些安全隐患一旦被攻击者恶意利用,轻则劫持用户会话,重则盗用用户账号窃取用户财产,破坏服务器数据或者发布恶意信息,给用户和web应用提供者造成严重的损失并且影响恶劣。特别像近期的csDN、天涯等网站发生引起社会广泛关注的用户信息泄露事件,26个疑似泄露数据库被公开,涉及帐号、密码信息278亿条.给广大互联网用户的合法权益和互联网安全造成了严重的影响。随着我国网民和主机数量的不断增长,、Ⅳeb应用产品已经逐渐融八人们的日常生活之中,一旦某个产品的的漏洞被黑客发现并进行恶意利用,将导致大量用户和单位的信息系统面临威胁,这种规模效应也助长了黑客对软件和网站漏洞进行挖掘和攻击活动的气焰。2011年3月,MYsOLcom和suncom被入侵,攻击者窃取了用户的信息。2011年4月,索尼数据服务器被侵入,将近一千万张信用卡,资料被泄漏,美国的FDI都介入了调查;同月谷歌的Gman邮箱被攻击:2011年6月,新浪微博遭到黑客攻击。另外像许多知名的产品如yall00m础,21cNMail,网易旗下16邮箱,腾讯旗下的QQMail,中国移动139邮箱等被广泛使用的互联网产品都被检查出存在跨站漏洞(xss),因此,web应用安全仍然面临严峻的态势。cNvD(国家信息安全漏洞平台)【H1在2011年共收集整理并公开发布信息安全漏洞5547个,较2010年大幅增加609%。其中.高危漏洞有2164个,较20】0年增加约2.3倍。在所有漏洞中,涉及各种应用程序的最多,占626%,涉及各类网站系统的漏洞位居第二,占227%,而涉及各种操作系统的漏洞则排到第三位,占88%。web应用安全问题已经是一个越来越急需关注和解决的问题。虽然、№b应用能从传统的网络安全保护措施中得到有限的保护,但是通过HTTP协议传输于应用屠的数据并不能被传统的防火墙,操作系统等进行仔细的检查,并且基于HTTP协议几乎可以传输任何对象,其中也包含恶意程序代码。从本质上来说,基于应用层的攻击基本上都是由于w曲应用或者服务程序本身存在漏洞造成的。造成漏洞存在的原因是多方面的,一方面早期的web应用开发门槛很低,因此开发出的程序并没有注意到可能存在的安全问题,另一方面.由于漏洞的发掘技顼士学位论文第一章绪论术逐渐演变,新的攻击方式和攻击技巧不断产生,这使得原有、Ⅳeb应用的脆弱性显得更为突出。就算某个web应用被发现存在着漏洞,那么在运行期司进行漏洞修补和升级也不是一件容易的事情.它甚至可能影响到原有业务的J下常运行。然而一旦web应用被恶意利用,造成的后果也是难以估计的,轻者可能对用户和w曲应用拥有者没有任何影响,重者也可能使得用户权益受到极大损害从而导致Ⅵ,eb应用关门倒闭。因此,如何发现脖藏于Ⅵ曲应用中的漏洞对于开发者而言是保证产品质量和信誉至关重要的问题,而对于web应用产品运营商而言,也是保证自身服务质量和声誉亟需面对的问题。特别是在应用开发阶段还没有交付使用之前,就将潜在的web应用漏洞扫描出来,并且进行修复,这种措施可以节省很大~部分用于w曲应用维护的成本,并且极大的降低web应用的潜在风险,从而提高整体的w曲应用抗攻击能力。2web应用漏洞扫描研究的现状及意义近几年来,国内外出现了很多web应用漏洞扫描软件m】,国外的如IBM.HpwebIns口ect.AcunetixwebvulnerabilityscanneLN.sk出th以及Net5parker等。国内也有启明星辰和绿盟等公司的漏洞扫描软件。相对而言,国外的web应用漏洞扫描软件更为成熟,其扫描功能强大,在易用性和扫描结果报衷生成等方面做的都比较完善,而国内专门针对web应用漏洞进行扫描的技术还没有达到成熟的状态。A1DDscan【20训:用于在wcb应用程序的整个开发周期提供安全扫描测试。它可以扫描许多常见的漏洞如跨站点脚本攻击、HTTP响应拆分漏洞、参数篡改、隐式字段处理、后门,调试选项、缓冲区溢出等,并且提供有关漏洞的详细信息,如产生原因以及修补漏洞的方法等口雌“。webIns口ect㈣:它可以扫描web应用中常见的漏洞,除此之外.它会尝试一些常见的web攻击。另外它可咀用于检查一个web服务器是否正确配置。c血毗lxweb、~1nerabilhscanner【”】:它可以用于检查web应用程序中常见的漏洞。同时它拥有一个用户友好的操作界面,并且可以生成规范的web站点安全审核报告。№cs口afke一41】:它分为免费版和收费版。两个版本都可以用于扫描常见的、veb漏洞,但是收费版提供更多的功能,如sQL盲注扫描,扫描结果保存等。国外的商业web应用漏洞扫描软件价格昂贵并且源代码不公开,中小型企事业单位并不愿支付如此巨额的费用购买该类软件来使用,并且用户无法根据自己的需要添加扫描规则。随着web应用技术的日益更新,新的web应用攻击手段和方式不断涌现这使得已有的商业web应用扫描软件也存在一定的局限【生。硕士学位论文第一章绪论相比较而言,国内同类的商业软件在存在相同问题的同时,功能方面还比较单一,并且性能和可操作性方面较国外的扫描软件还有一定差距。国内外也有一些免费的开源软件如pams删.Nikto㈣等.但是这些软件在技术和功能上都有一定的局限性,如不能支持并发的扫描,不能检查由javasc^pt脚本或者nash对象产生的链接,对于隐藏在需要验证的表单后面的网页也不能很好的检测,用于检测web应用漏洞的攻击向量过于简单,用于检测的方式也比较单一等问题,因此它们并不能用来提供专业化的检测服务。因此,研究能够提供专业化检测服务的web应用漏洞扫描技术并且基于该技术设计和实现一个实用的web应用漏洞扫描软件具有重要的理论意义和实际应用价值,并且也吸引了越来越多的研究组织和人员的注意。3研究目的与内容本文主要针对w曲应用扫描的关键技术进行研究,重点研究了扫描信息获取技术和web应用漏洞分析检测技术,在理论研究的基础上,设计实现了一个可以获取到目标web应用所有扫描信息并且对其进行漏洞分析检测的扫描工具。通过测试验证了漏洞分析检测技术的实用性。研究的主要内容包括:(】)深入研究wcb应用漏洞产生的原因以及常见的web应用漏洞攻击技术和相关检测方法。(2)深入研究wcb应用扫描中的网页抓取和分析技术,对网页抓取和分析的特点进行详细分析和研究,制定灵活完备的抓取和分析策略;结台目前广泛使用的curlib库,设计一种支持代理和多种协议的HTTP网页抓取和分析的客户端。深入研究H丁TP通信协议,并将其应用于wcb应用漏洞检测中。(3)深入研究各种w曲应用漏洞检测技术,分析比较各种检测技术的实现原理,并结台web应用平台的实际需要设计实现一种易于扩展的漏洞检铡机制,同时-设计并实现主流web应用漏洞的检测插件.例如sQL注入漏洞检测、sOL盲目注入漏洞检测、xss攻击漏洞、路径遍历漏洞以及各份文件检测漏洞等漏洞检测插件一在此基础上设计并实现一个自动化的漏洞分析器。研究并设计编码,解码、HT丁P请求发送与分析、HTTP代理等辅助w曲应用漏洞检测工具。14论文章节安排本论文共分为六章,其中第一章为论文绪论,第二章至第五章为论文主体第六章为论文结束语。第一章介绍了w曲应用漏洞扫描的的研究背景、研究现状和研究意义;硕士学位论文第一章绪论第二章主要讨论了web应用漏洞产生的原因以及常见威胁,提出了一个综合的web应用漏洞检测方案,并针对如何设计一个web应用漏洞扫描软件提出了一个软件框架:第三章主要研究了扫描信息获取技术,主要包含DOM文档元素分析和HTTP通信协议信息分析。通过使用正则表达式对网页元素信息进行了分析和提取,同时研究了交互式网页信息提取问题和HTTP协议信息获取问题,在此基础上研究并设计了扫描信息获取模块:第四章分析了web应用漏洞检测技术,并结合漏洞检测技术本身不断进化升级的特点,设计了一个易于扩展的漏洞检查机制,并且实现了主流web应用漏洞检测插件如sQl注入漏洞、sQL盲目注入漏洞、xss攻击漏洞、各份文件检测漏洞.用来进行web应用漏洞检测:本章最后研究了用于辅助web检测的工具,如定制HTlP请求、编码,解码、Hn甲代理等工具。第五章介绍了web应用漏洞扫描软件的详细设计,并对扫描软件的功能进行了测试,对测试结果进行了讨论:第六章对本文研究工作进行了总结,指出了工作中存在的一些问题,并展望了进一步的工作计划。硕士学位论文第二章wcb应用漏洞产生的原因以及检测方法第二章web应用安全漏洞综述及漏洞检测方案的提出本章主要介绍web应用漏洞产生的原因,分类以及检测方法,首先对w曲应用安全产生的原因进行了分析,之后介绍了、№b应用漏洞的分类,最后介绍了常见啊-eb应用漏洞的特点和检测方法,并结合服务器平台安全,提出了一种实用的w曲应用漏洞检测方案一21web应用漏洞产生的原因OⅥ,AsPI31(0penu,ebApplica60nsec嘶tyProject)是一个长期从事于发现和解决、№b应用安全问题的全球性开源组织,它经常发布的是“w曲应用的十大安全隐患【3”,这个项目总结了目前w曲应用安全最为严重的十种攻击.并且按照攻击产生的严重性进行了排序。该项目主要是为了发掘业界威胁最为严重的Ⅵ,eb应用安全隐患,从而加强企业对w曲应用成胁的防范意识。该项目最新版本的报告是2010版吼根据2004年,2007年,2010年的十大安全隐患报告可以看出,web应用安全漏洞所占的比例呈逐渐上升的趋势。下表是2010年十大w曲应用漏洞及其特点:表2—1web哥仝十大隐惠的特最下面本节对上述owAsP提到的web应用漏洞产生的原因进行介绍;(1)注入攻击【3。4】:注入攻击:该类漏洞包括sOL注入.Osshell,LDAP,xpathtHlbem砒e等等,它们主要是由于应用程序没有对输入数据的合法性进行合理的检查就直接提交给了数据库或者是操作系统进行处理,而攻击者可以将精.!!:壁堡堡苎笙三童坠!壁!塑塑兰皇堕堕!!墨堡型查堕心构造的包含恶意指令的数据向应用程序提交,从而引发攻击。该类攻击的危害性极为严重,通过执行sQL指令或者操作系统指令,可以窃取或者篡改数据库和操作系统的信息,甚至可以利用操纵系统级的AH来提升攻击的权限,从而获得服务器的控制权。(2)跨站点脚本攻击m4】(cfosssltesc打pting):与注入攻击类似的是造成xss攻击的原因依然是应用程序没有对输入的数据进行合理的检查和转义就直接在响应中包含了。因此浏览器在展示该页面时,嵌入于其中的脚本代码就被执行了,恶意代码将用户的会话标识传送给远端处于监听状态的攻击者,攻击者在获取到受害用户的会话标识之后就可以利用它来代表受害用户对相应的Ⅵ,eb应用进行操作了。xss可以分为反射型、保存型和基于DOM型三种,对应的检测方法也不尽相同,但是总体的思想是一致的,就是在响应中检查是否有提交的特殊字符串。与注入攻击不同的是,注入攻击的目标是web应用服务器和数据,而xss攻击的对象是web应用的用户,攻击者通过获取受害者的会话标识来窃取其用户信息。(3)遭破坏的认证和会话管理p创:验证机制和会话管理是用来帮助web应用程序从大量不同的HTTP请求中确定特定的用户,该特定用户拥有不同于普通用户的权限,以这种方式来达到防御未授权用户访问的目的。然而web应用程序中验证机制和会话管理存在的缺陷将使得攻击者可以绕过这一防御机制.从而获取原本不属于他的应用程序权限。这种漏洞经常出现在注销,密码管理,超时,记住我,密码问题,账号更新等实用功能中。(4)不安全的对象直接引用‘324】:这种漏洞产生的原因是web应用程序在产生网页的时候使用了对象真实的名字或者关键字却没有正确地检查用户的访问权限。一个已经授权的用户通过手动更改访问时的关键字或者名字,从而可以访问到原本并没有得到授权的对象。这种漏洞可以危害到所有可以被访问时关键字和名字所引用的数据。(5)跨站请求伪造口241:它是指强迫受害者的浏览器浏览器向一个易受攻击的web应用程序发送请求,最后达到攻击者所需要的操作行为。它一般分为站内和站外两种类型。这种攻击利用了web应用程序特定行为的细节都可以被攻击者所预测。由于浏览器会自动发送会话cookie,攻击者可以创建一个恶意网页,并利用这个网页来产生特定伪造的请求.而这种请求很难和正常的用户请求进行区别,因此一旦用户在此时发送了正常的请求,它的会话cOOKIE也会被发送到服务端,w曲服务器将无法区分出伪造请求,从而执行伪造请求的内容。(6)不安全的配置【324】:这种漏洞可咀发生在web应用服务器上的任一级别,例如操作系统,应用程序.web应用服务器等。表现在w曲应用服务器没堡主堂垡丝兰笙三雯堕!生!塑塑兰生塑堕!!墨垫19立墨有被正确地进行安全设置,操作系统没有打上合适的补丁,应用程序留有没用的文件,没有被正确保护的目录.使用了默认的账户,开启了没用上的服务等。(7)不安全的加密存储p斟】:这种漏洞源自于需要加密的信息没有被加密,例如2011年csDN用户信息数据库泄密事件。或者使用的加密算法比较脆弱,从而容易被破解出加密的原始信息,或者使用来加密的密钥存放在一个不安全的地方,从而被攻击者获取或者使用了未加入盐值的hash算法a(8)uRL访问失败【3圳:类似于漏洞不安全的对象直接引用,这种漏洞产生于对原本应该私有和受保护的页面的访问没有进行正确的身份验证。这些页面的访问是通过系统的配置来确定的,但是系统却没有被正确的配置,在这种情况下攻击者通常只要请求该页面,就可以对其进行访问。(9)无效的传输层保护【324】:这种漏洞源自于、veb应用程序对网络传输的用户敏感数据没有进行加密(例如使用明文传输用户认证的用户名和密码),或者在认证的时候采用了加密的传输ssL,rLs,却使用了过期的证书和不正确的配置。(10)重定向攻击【3】:这类漏洞源自于应用程序提取用户可控制的输入,并且使用这个数据执行一个重定向,指示用户的浏览器访问一个不同于用户请求的uRL。由于用户访问的是一个他信任的网站链接,但是被重定向到一个攻击者精心制作的假冒网站中,攻击者可以利用这类漏洞进行钓鱼攻击或者让用户访问恶意页面。22web应用漏洞检测的方法以下是几类在自动聃铀应用漏洞扫描软件中可以实现的漏洞检测方法:(1)s0L注入漏洞的捡测【4"8】:sQL注入漏洞根据其向攻击者展现的漏洞信息细节的多少可以分为普通sQL注入漏洞和sQL盲目注入漏洞两类。普通sQL注入检测:因为单引号是sOL查询语句中标记字符串边界操作符与转义字符,它作为字符串边界操作符时需要成对出现,通过在GET请求或者POsT请求中的参数中拼接单引号。如果原web应用简单的将请求中的参数传递给数据库并且构造查询时没有对输入参数作类型判断,那么插入的单引号就会破坏原有的查询语句结构.触发一个查询语法错误,如果Ⅵ,eb眼务器的配置中没有屏蔽产生错误的信息的话就会将此错误信息展示给攻击者。攻击者可以根据展示的攻击信息得到数据表的相关信息,进而一步步获得数据库的相关信息甚至是操作系统的控制权,sOL盲目注入漏洞检测:当web应用服务器做了正确了配置,即使产生了硕士学位论文第二章、№b应用漏洞产生的原因以及检捌方法查询错误,web应用服务器也有一个通用的出错页面展示给客户而不会暴露错误的细节.在这种情况下如果wcb应用依然没有正确的处理用户输入的信息,那么这种情况下还是存在sQL盲目注入漏洞。sQL盲目注入漏洞的硅险性同普通sQL注入漏洞一样,只不过是它屏蔽了错误的细节,给攻击者进一步获取信息增加了难度。但是只要这种漏洞存在,攻击者通过盲目二分猜测,也可以将数据信息以每次一个字符的方式读出来。经典的s0L盲目注入工具Absinthe采用二分猜测的方法,由于u11icode字符是16位的.因此每次最多进行16次比较就可以输出一个J下确的字符信息。针对sOL盲目注入有基于页面内容的盲目sQL注入漏洞检测方法和基于服务器响应延时的sOL盲目注入漏洞检测方法:基于页面内容的盲目sOL检测:这种检测方式首先要让程序知道一个查询条件永真的返回页面的特征并将之视为TRuE。然后让程序知道一个查询条件永假的返回页面的特征并将之视为队LsE。然后通过插入转义符触发一个通用出错页面的特征,只要三者的特征不一致,便可认定目标页面存在sQL注八漏洞。具体示例如下:针对数字型参数的检测方法:假设有链接HTTP://Ⅻx第一步:征值。第二步:HTTP:,/xXxxxxxx“abcxxxxxx,abca5p。pIYY正常访问HTTP://x)【)cxxxxxx,abcasp?p=YY将得到的响应流取特asp?p=YY’(附加一个单引号),此时akAsP中的soL语句变成了耐ect+矗鲫表名wh眦字段=YY’,abcasp运行时产生了错误,这个时候由于服务器屏蔽了错误信息,用户浏览器将转向到一个出错页面:第三步:HTTP:Ⅳx麒xxxxx“abcasp?p=YYorl=1--.abcxxx,abcasp运行正常,对得到的响应流取MD5值而且与访问HT丁P:,/xxxMD5值相同;xxxasp?p=YY时取得的第四步:HrrP:Ⅳ“xxxxxxx/abc船p?p=YYandl=2一,abcasp运行正常,将响应流取MD5值并且与步骤b和步骤c中的MD5值相比较,三者的值不一致:如果以上四步全面满足,那么可以判定abcasp中存在sQL盲目注入漏洞。针对字符型参数的检测方法与针对数字型参数的检测方法类似,不同的是考虑到sQL语句中。字符型参数都应该被单引号包围,因此串接的条件式响应的改为or’r=‘1‘一和and‘1-=’2~影响这个检测成功的因素之一是在第三步中构造的请求中web应用服务器没有数据记录返回,那么第三步和第四步响应流的特征值将会一致,因此,在这种情况下,即使原来的w曲应用存在sQL盲目注入漏洞,在此次检测中也检查硕士学位论文第二章Ⅵ铀应用漏洞产生的原因咀及检测方法不出来。基于web服务器响应延时的盲目sOL注入检测:这种方式是利用数据库中提供的延时函数,并计算正常请求和延时请求两次所需的时间差,如果大于或等于所设定的延时时间,那么可以确定,该页面存在注入漏洞。这种方式的优点是,判定的正确率比较高,缺点是速度太慢。sOL盲目注入漏洞的检测方法同样可用于普通sQL注入漏洞的检测,因为它对漏洞所展示的详细信息依赖更少。(2)系统命令注入漏洞的检测:通常可以使用山g命令让服务器在一段时期内检测它的回环接口,从而触发时间延迟。windows和uNⅨ平台在处理plng命令和命令分隔符方面存在一些细微的差别。如果用户被插入到系统命令中的输入没有被过滤,那么使用以下命令可以引起目标服务器30秒钟的延迟。ping—I301270.OI;x0pi“g—n301270O1&如果检测到延迟,那么可以通过改变延迟的时间来进行确认命令注入漏洞是否存在。重复几次测试过程以排除延迟不是网络延时或者其它异常造成的。(3)跨站点脚本攻击漏洞口川1检测方法检测反射型和保存型的跨站点脚本攻击漏洞的方法比较类似。检测步骤如下:第一步:选择一个特定的字符串并且保证该字符串不曾出现在应用程序的任何地方,为了让其不被针对xss的过滤所影响,让这个字符串仅包含字母字符。第二步:将这个字符串向应用程序提交,将它作为每个页面的每一个参数,且每次只针对一个参数。第三步:检查应用程序的响应,看其中是否出现这同一个字符串。与反射型跨站点脚本攻击漏洞检测方式稍微不同的是.针对保存型跨站点脚本攻击漏洞的检测需要对页面的每一个表单输入都要提交参数。针对基于DOM的跨站点脚本漏洞的检测需要审查检查客户端所有的Javasc^pt,看其中是否使用了任何可能会导致漏洞的DOM属性。(4)路径遍历漏洞【3一J:当web应用程序使用用户可控制的数据以危险的方式访问位于应用程序服务器或其它后端文件系统中的文件和目录,就会出现路径遍历漏洞。通过提交专门设计的输入,攻击者可以在被访问的文件系统中读取或者写入任意内容。从而导致攻击者能够获取到服务器的敏感信息,最终在服务器上执行任意命令=这种漏洞一般发生在web应用程序提供的允许用户上传或者下载文件的功能上,除了这种明显的目标功能外。还有其他各种行为表示应用程序需要和文件系统进行交互的地方也可能存在这种漏洞。检测方法:如果程序检测到用户提交的参数被附加到应用程序预先设定的目硕士学位论文第二章web应用漏洞产生的原因咀及检测方法录之后,那么插入一个子目录和一个遍历序列,修改参数的值。例如检测到用户提交的参数AAtxt被作为参数DestFile=6le/AAtxt传递给web应用程序,那么可以尝试提交DestFile2mc/temD,/从戗t如果这两种情况下应用程序的行为完全相同,那就表示它易于受到路径遍历漏洞的攻击。有些程序对用户的输入做了一定程度的过滤和,那么在这种情况下,通过使用字符编码、换行符(%Oa)和空字符(%oo),可以避开丌发者做的特定文件过滤及特定文件类型过滤。(5)不安全的配置口创】:在web应用漏洞自动扫描软件中易于实现的是如下几类安全配置检查:a)、常见的web服务器如IIs,tomc址,Apache等都有自己的默认页面,这些页面在用户部署正式的应用的时候应该被移除。通过构造相应的uRL请求目标页面,如果返回状态码为正常(200),则表示目标服务器存在此类漏洞。b)、常见的Ⅵ铀服务器(IIs,tomc乱,Apache等)都应该配置成屏蔽出错信息的模式。c)、常见的w曲服务器都应该配置成不允许调试的模式。d1、常见的web服务器都应该修改默认的请求头信息,以防止服务器版本和使用的技术的信息被泄露。上述配置漏洞在提交给服务器的请求后得到的响应流中通过匹配相关的关键字就可以得到确认。(6)备份文件检测出】:开发人员或者维护人员在修改部分代码的时候没有将原先代码各份到专门的备份文件目录,而只是简单的留在了当前目录。为了省事,一般而言备份文件的文件名就是当前目录名加上压缩文件的扩展名。这些备份的文件中可能包含程序的逻辑代码,甚至是关键的配置信息虽然用户在浏览网站的时候并不能直接访问到这些备份文件,但是通过构造相应目录串接备份文件名的uRL可以请求这些文件。通过服务器的返回码是产生错误,还是正常响应可以判定是否存在相应的备份文件。23web应用漏洞检测方案研究123web应用漏洞检测方案从前面web应用产生的原因及检测方法上可咀看出许多Ⅵ铀应用漏洞并不适台采用纯粹的自动化扫描工具来进行。通过辅以手动排查方式和对代码进行审硕士学位论文第二章Ⅵ'eb应用漏洞产生的原因以及检测方法查的方式可以更高效的确定目标wcb应用漏洞是否存在。例如针对uRL访问失败类漏洞,通过手动操作来进行排查要比使用自动化web应用漏洞扫描器来进行检查要有用的多,因为自动化扫描工具并不能从大量的网站链接中区分哪一个链接是重要的,但是检测者一眼就可以分辨那个链接指向了一个重要页面。然而,自动化的Ⅶ铀应用漏洞扫描工具“2,”1仍然在漏洞检测方面扮演者很重要的角色,设计良好的自动化工具可以协助漏洞检测者执行大量重复细致的检测工作.如构造一系列变异的附带攻击载荷的HTTP请求,对目标网站每一个页面的输入参数进行提交,并且检测响应中的关键字,这些工作如果仅靠人力手工来处理的话,将是不可想象的繁复,需要消耗大量时间与精力。所以设计良好的自动化扫描工具除了拥有强大的自动扫描漏洞的能力之外也拥有强大的手动定制化检测方法的能力,这些能力包括提供对指定页面链接的抓取,对指定请求内容进行手动修改后再提交,对指定参数进行修改或者并且以指定的编码形式提交等。为了达到对指定web应用进行完整漏洞扫描的目标,可以从以下几个步骤对目标web应用进行漏洞检测:(1)了解具体的w曲服务器平台和web应用程序,对、№b服务器平台可能存在的漏洞进行估计,同时了解web应用程序的主要业务和应用逻辑。(2)使用Ⅵ-eb应用漏洞扫描工具对目标wcb应用程序进行漏洞检测。第一步的工作可以帮助确定扫描器使用合理的扫描策略来进行扫描,从而提高扫描的效率。当然设计良好的扫描器会自动探索目标w曲应用的相关信息,并且优化扫描策略。在扫描的过程中将尽量完整抓取目标网站的所有资源链接,并对所有页面的输入参数进行测试,根据对响应特征的分析来确定相应的w曲应用漏洞是否存在。(3)当web应用漏洞扫描工具在完成对指定web应用的安全扫描之后,将生成一个详细的扫描报告。由于web应用自身的复杂性,不能排除扫描结果存在有误判的可能性,因此扫描人员需要根据扫描结果中的漏洞信息对漏洞进行确认。(4)扫描人员利用扫描工具定制化检测方法的能力,针对目标Ⅵ,eb应用定制相应的检测策略并进行仔细的测试,以排除那些扫描器不适用的web应用漏洞和由于目标w曲应用复杂的业务逻辑而不易被检测的漏洞存在的可能性。232综合性的漏洞检测方案要确保、veb应用的安全,从、№b应用本身出发进行的检测工作和防护【6121仅仅只能降低web应用本身被攻击的风险。但是w曲应用本身就部署在某一个平台中(如;IIs,Apache,Torncat等),而这个平台又处于一个操作系统下硕士学位论文第二章Ⅵ协应用漏洞产生的原因以及检测方法(windows,Linux,solaris等),这个系统所在的主机又位于一个网络之中.而这个网络中赊了该主机之外还有路由器,交换机,防火墙和其他主机等设各。这些设备的安全性彼此是相互关联的,它们之间的任何一个存在着安全隐患都会提高最终的web应用系统受到攻击的风险。因此,我们提出一种综合的漏洞检测方案,它从一个立体的层面保障目标w曲应用的安全性。(1)对目标web应用服务嚣所在的物理环境进行审查。这一步将排除目标web服务器物理环境可能存在的隐患,比如机房堆砌杂物,放置易燃易爆物品,有不明网线或者通信设备接入等。(2)对目标web应用服务器所在的网络环境进行审查。这一步的目标是保障目标、№b服务器基本的网络环境或者网络防护设备处于一种有效工作的状态下,比如防火墙和路由器的配置是否处于一种合理状态。(3)对目标web应用服务器操作系统环境进行审查。这一步的目标是保障目标w曲服务器的主机安全,比如目标操作系统关闭了所有没有必要使用的服务,数据库处于一种安全的配置下,关键文件和目录的的访问权限设置正确,没有多余的应用程序被安装,所安装的应用程序都已经打了虽新的升级补丁。(4)对目标web应用进行审查。这一步将对目标、Ⅳeb应用本身的安全|生进行检查。将使用自动化的web应用漏洞扫描工具对目标web应用进行扫描,对于不适合使用扫描工具进行检测的漏洞,扫描人员使用辅助工具进行定制化的漏洞检测,同时验证自动化漏洞扫描软件产生的结果。(5)除了以上各方位的检测之外,不能忽视的还有对于w曲应用的日常管理制度和web应用管理员自身的安全意识。一般防御良好的系统,其最脆弱的地方往往在于使用的人。攻击者一般会利用社会工程学的方法渗透到目标系统的组织内部,从而收集到足够的信息。因此,虽后还要对web应用安全管理制度进行审查,并督促其建立完善解决前面发现的漏洞与风险的机制。24web应用安全漏洞扫描软件的结构设计在本文中,我们针对web应用本身的安全检测层面设计实现了一个w曲应用漏洞扫描软件,其整体框图如图2—1所示。该框图主要分为基础功能模块层、扫描信息抓取模块、漏洞分析与检测模块、公共数据信息、报告生成模块这5部分。基础功能模块层向上层提供本软件运行所需的基础功能和服务,包括日志记录、线程池、H订P通信、网页信息模型和实用函数,其中实用函数根据系统平台的不同而不同,包含网页编码与解码以及对系统API封装的函数等。硕士学位论文第二章Ⅵ曲应用漏洞产生的原因以及检测方法报告生成模块OwAsP标准WASC标准sANs标准漏洞分析与缝删模块公共数据信息分析嚣基本1分析;爹9棱心函数己处理对象队列扫描信息抓取模块术处理对象队列抓取横块基本抓取模块用户配置配置核心函数扫描器状态数据基础功能模块培日志记录蛙程池HTTP遥信坩页模裂实用函数图2一1web应用漏洞扫描软件框图扫描信息抓取模块负责抓取到目标、Ⅳeb应用的网页信息和协议信息,它包含基本配置、用户配置信息及核心函数,其中核心函数用于按照所加载的配置信息执行扫描信息的抓取任务。漏洞分析与检测模块负责对目标web应用构造漏洞测试用例.并且发送测试请求,它包含分析模块的基本配置、分析模块的用户配置及核心函数,其中核心函数用于构造测试用例并且判断目标web应用是否存在相应的漏洞。在运行的时候该模块先读取配置文件,然后加载用于漏洞检测的插件,在一个线程池中对抓取模块中产生的网页节点信息进行漏洞检测。针对每一种漏洞类型(sOL注入,xss攻击,路径遍历.备份文件检测等)构造用于检测的HTTP请求,并且分析响应的特征,以确定相应漏洞是否存在。公共数据信息包含已处理对象队列、未处理对象队列及扫描器状态数据这三部分。其中已处理对象队列和未处理对象队列用于扫描信息抓取和分析的过程中,以保证扫描信息获取和漏洞分析的完整性和不重复性,扫描器状态数据用于记录扫描器运行中的统计信息,同时记录当前扫描器执行的状态,以便暂停、重新开始扫描等操作的执行,并且在用户保存当前扫描信息的时候将公共数据序列化到存储文件之中,以便下次扫描时加载使用。报告生成模块将最终扫描器产生的结果以一定报告的格式展现给用户,根据用户所需要的形式以HTML、DOc或者PDF的形式展现出来,并且在展现的时候需要考虑到兼容现有的权威的漏洞标准比如0wAsPTOP10、ⅥAsc威胁分类、sANsTOP20等,这种方式的兼容使得用户能够清楚地了解自己w曲应用在同行业中的安全状况。由于篇幅原因,本文将重点阐述在设计Ⅵ,eb应用漏洞扫描软件时两类关键性问题——web应用漏洞扫描信息获取技术和w曲应用编洞分析与检测关键技硕士学位论文第二章Ⅵ铀应用漏洞产生的原因咀及检测方法术研究与设计,并在理论研究的基础上介绍相关技术的实现25本章小结本章主要针对w曲应用漏洞相关的关键技术进行了研究,首先介绍了现今最为常见和威胁最严重的几类web漏洞的起因和检测方法,之后总结了web应用漏洞产生的原因,最后结合web应用漏洞产生的原因、特点以及其所处于的具体环境,提出了一种实用w曲应用漏洞检测方案硕士学位论文第三章Ⅶ曲漏洞扫描网页抓取和分析技术研究与实现第三章web漏洞扫描信息获取关键技术研究与设计Ⅶ铀漏洞扫描信息包括页面信息和HTTP协议交互信息两类。其中页面信息又包含HTML文本.Javasc“pt脚本,css样式文件,Fl础、Applet等对象。这些信息都会由浏览器进行渲染与解析,最终以内容丰富的网页形式展现在用户面前。而这些信息又是我们进行漏洞检测的基础。H丌P协议交互信息主要指用于向目标web服务器发送的HTTP请求信息,以及服务器针对该请求反馈的响应信息。通过定制HTTP请求信息,我们可以探测目标web应用存在相应漏洞,而通过请求反馈的响应信息,我们可以确定其是否存在相应漏洞。本章将对如何获取至Ⅱ用于web漏洞检测的原始信息(页面信息)和判定信息(HTTP协议交互信息)做深入的研究。31web漏洞扫描中网页抓取与分析的目标网页抓取技术通常被实现为一个网络爬虫也称为网络机器人(Robots)或者蜘蛛程序(splder),它被广泛地使用在搜索引擎系统中。它作为搜索引擎的重要组成部分,通过不断的抓取网页,尽可能多和快的给索引部分输送网页,从而实现强大的数据支持。在互联网中,网页之间的链接关系是无规律的,它们的关系错综复杂,如果一个爬虫从一个起点开始爬行,那么它将会遇到无数多的分支,由此生成无数条爬行路径,因此如果爬虫没有准则地爬行,将会陷于海量数据的之中,甚至都没有爬行完的可能。因此对于搜索引擎而言,在提高爬行速度的同时.也要提高其抓取网页的质量。网络爬虫对搜索引擎的查全,查准都有影响.决定了搜索引擎数据容量的大小,而且网络爬虫的好坏直接影响搜索结果页中的死链接的个数。另外识别垃圾网页,避免抓取重复网页,也是高性能爬虫的设计目标。网页抓取技术在搜索引擎系统中已经有了很好的实现,因此通过对比搜索引擎中使用的网页抓取技术,可咀给我们研究w曲应用漏洞扫描软件中的网页抓取技术提供很好的借鉴意义。web应用漏洞扫描软件中使用的网页抓取与分析的目标如下:(1)网站页面及其资源的完整性扫描。与搜索引擎系统不同,在web应用漏洞扫描软件中,抓取网页的质量并不是需要考虑的目标.而如何才能全面完整地扫描到整个网站的页面及其资源才是最重要的目标。威胁往往存在于人们所容易疏忽的地方,而那些一般访问不到的边边角角却通常是隐含w曲应用漏洞的地方,而根据短扳原理,不管这个系统在其他方面的安全做的如何的好,一旦它隐藏着威胁,那么它就被认为是不安全的。(2)指定目标范围的抓取。web应用漏洞扫描软件针对的通常是一个或者指定的几个目标web应用,因此它不像在数据量快速膨胀的互联网中抓取网页的搜索引擎那样需硕士学位论文第三章u妯漏洞扫描网页抓取和分析技术研究与实现要处理海量数据。扫描软件的抓取范围是由用户指定的几个种子uRL或者IP地址所决定,与该IP地址不同的网页.或者域名与这些uRL不同的网址都不在抓取范围之内。因此web扫描软件可以抓取并保存同目标web应用详细的HTTP交互信息,用以进行详细的漏洞测试和漏洞重现过程,并且生成一份详实且具有说服力的漏洞检测报告。(3)更加关注网页的结构特征。搜索引擎系统中,网页内容的语义(与关键字的匹配程度)是其最关心的内容之一,而web应用漏洞扫描软件更关注的是网页的结构特征。因此对于动态网页而言,搜索引擎更关注的如何全面地获取到将要显示于网页中的数据库中的内容,从而如何遍历存储于数据库中的信息是它关心的问题。而对于Ⅵ,eb应用漏洞扫描软件而言,它关注的提交给动态网页的参数类型和参数个数的不同从而可能导致的web应用漏洞。(4)扫描信息获取的高效性。在对目标web应用进行漏洞扫描的时候需要通过使用H兀P协议进行文件信息传输,而这种传输的过程具有一定的延时性,并且通常是同步阻塞完成的;由于目标web应用服务器所处网络环境的不同,由网络延时带来的影响也不同。因此,为了能更有效率的进行扫描信息的抓取,可以采用多线程并发的方式来实现抓取的过程。也有部分扫描系统同搜索引擎一样采用分布式的信息获取方式,这类漏洞扫描系统由中心控制端进行扫描任务调度,并将任务分发给分布式扫描端进行执行。通常这类扫描系统可以充分利用硬件资源的优势同时执行一系列漏洞扫描任务。web应用漏洞扫描软件与搜索引擎系统中使用的网页抓取技术的差异源自于应用的场景不同,然而由于其局部功能的相似性,它们在一些方面也存在许多共同点a32页面抓取遍历策略的设计与选择在网页抓取技术中使用的策略[”1可以分为网页重要性度量,深度优先遍历策略,广度优先遍历策略,最佳优先遍历策略。这些策略各有特点(I)网页重要性度量在面对海量页面数据的时候,如何尽可能的先抓取重要性的网页,这就要求爬虫在抓取网页的时候遵守一定的网页抓取原则。网页重要性通常由链接欢迎度、链接重要度和平均链接深度这3个方面决定。l、链接欢迎度1B(P),它可以通过反向链接的数目和质量来衡量。如果有很多网页指向一个页面,那表示其他网页对该页面的认可度就很高。另外,如果有很多重要性高的网页所指向它,那么它的重要性也越高a2、链接重要度IL(P)是一个关于uRL字符串的函数,考察的是字符串本身,比如认为包含顶级域名(如com或home)的uRL重要性高,以及层次较少的uRL重要性高。3、平均链接深度ID(P),它表示网页离初始站点的距离.通常这个距离越短,表明该网页越容易被访问到,因此可以认为其重要性也越高。硕士学位论文第三章w曲漏洞扫描网页抓取和分析技术研究与实现网页的重要性I(P)可以通过以上的两个量化值线性决定即:I(P)=Q+1B(P)十B+IL(P)(2)深度优先遍历策略深度优先遍历的策略是尽量向离初始uRL远的地方进行抓取。在抓取并解析一个页面之后,访问该页面中第一个不重复的链接,并对该链接的响应进行分析。然后递归访问该响应的第一个不重复链接,直到满足退出条件。使用这个策略进行扫描时采用的是逐链接进行探索的方式,每次在找到新链接的时候将对新链接进行探索。在进行深度优先遍历的时候需要记录爬行过的总链接库和每次爬行的分支节点,通过这些已录的内容来避免重复地爬行节点。(3)广度优先遍历策略广度优先遍历策略是一种层次优先的遍历方法。与深度优先遍历策略不同的是,广度优先遍历策略在抓取并解析一个页面之后.要将该页面中的所有链接保存在一个队列结构中,直到该页面中所有的链接都被访问之后才开始进行下一层次的链接的访问。使用这个策略进行扫描时采用的逐页进行探索的方式,在继续下一个页面前需要先探索完上一个页面的所有链接。(4)最佳优先遍历荒略最佳优先策略的算法是按照一定的网页分析算法,预测候选的uRL与目标网页的相似度,或者是与这个网页的主题的相关性,并选取评价最好的一个或几个LRL进行抓取。目前主要有基于立即回报价值评价的搜索抓取策略模式和基于未来回报价值评价的搜索抓取策略模式这两大类优先黄略。上述几种策略在网页抓取程序中被广泛使用,然而根据web应用漏洞扫描程序的特点,一般选择实现深度优先遍历策略和广度优先遍历策略。由于在多线程环境中无法提前确定哪个线程处理的任务先完成.因此并不能保证每次探索的都是离根LRL距离最远的节点,所以在实现深度优先遍历的获取扫描信息的时候需要把获取信息的线程数目设置为l即采用单线程的模式运行,这样的话会在一定程度上影响到扫描的执行速度。而使用广度优先策略进行遍历的时候容易控制遍历的深度,并且由于一般站点都具有以域名为根LRL的树状层次关系,通过采用公共数据队列的方式可以保证上一页面的所有链接先于下一页面中的链接被访问的宽度优先原则,因此在web应用漏洞扫描软件中使用广度优先遍历策略符合该应用场景的特点。如果用户不希望采用多线程访问的方式来对目标web应用造成一定的压力.并且有足够的时间来等待扫描过程地完成,也可以选择使用深度优先的抓取策略来进行扫描。在本web应用漏洞扫描器中默认使用宽度优先搜索策略去进行网页的抓取.在抓取的过程中使用了一个全局链接队列来保存页面解析中产生的网页链接。网页抓取的流程如图3-1所示。鉴于队列先进先出的特性,只有先前页面中所有的链接都被访问过之后,后硕士学位论文第三章web漏洞扫描网页抓取和分析技术研究与实现面页面中的链接才有被访问的可能。那么,为了防止爬行器重复地抓取相同的页面<二霹ii譬>1取m链接井自该链<奎>丑◇解析响应7疆葡页焉1藤焉弭一———_l——结束囝3—1抓取页面流程圈对每一个抓取到的链接都需要进行判重处理。对于已经抓取并且解析完毕的链接,将其放入到一个已抓取链接队列之中,在进行链接判重的时候需要检索未抓取链接队列和已抓取链接队列,以此来判断新的链接是否是已经处理过的链接,或者是待处理的链接。33基于正则表达式的页面内容提取通过上一节讲述的扫描信息抓取目标和页面遍历策略将web应用的网页资源抓取到本地,然后需要进行的是对抓取到的资源进行分析。w曲应用漏洞扫描程序需要解析目标响应中的HTML文本,J“asc由t脚本,css样式表,以及网页中的对象。对于Javascnpt脚本和样式表,扫描程序需要静态和动态的从中解析出网页uRL。对于网页中对象(Flash,A口口1et等),现有的商业扫描软件可以通过模拟播放nash的形式从中动态解析出网页链接。在本节中将研究一种基于正则表达式提取页面内容的方法。硕士学位论文第三章Ⅵ铀漏洞扫描网页抓取和分析技术研究与实现331正则表达式简介在本文的网页元素分析过程中使用了正则表达式强大的文本分析能力来实现对网页标签和标签属性值的获取。正则表达式[49邡1由一系列的元字符和普通字符组成,根据正则表达式流派的不同,元字符集会稍有差异,但是大部分是一致的。根据正则表达式引擎工作方式的不同可以分为确定性有穷自动机(DFA)和非确定性有穷自动机(NFA)两种。DFA是文本主导型引擎,它在第一次遇见正则表达式的时候需要对其进行详细的分析,并且在内部建立一张详细的匹配路线图,在建立这张路线图的时候是需要时间和内存消耗的,但是之后的匹配过程则会比较快速。NFA是表达式主导型引擎,它在报告匹配失败之前,必须尝试正则表达式的所有变体,因此在匹配的过程中会进行大量的回溯操作,因此它比较容易支持反向引用,在面对糟糕的正则表达式的时候这些回溯操作会消耗很多时司,而使用DFA引擎却不管是正则表达式写的是好是坏,匹配时间都一致。这两种引擎各自具有自身的优点和不足,因此,在具体的实现上,某些匹配程序会针对表达式的特点在匹配过程中在DFA引擎和NFA引擎中间切换以糅合两者的优点。用于正则表达式中的元字符主要包括以下几类l、用于匹配对象的元字符,包括点号(),字符组(卜·]),排除型字符组(卜-】),转义字符(\):2、用于提供计数功能的元字符,包括问号(?),星号(·),加号(+),区间量词(fmln.max})。3、用于匹配位置的元字符,包括脱字符(一),美元符(¥),单词开始分界符(、<),单词结束分界符(悟)。4、其它的元字符,包括选择符(|),括号(()),反向引用(、1.\2)等。332使用正则表达式进行网页元素的匹配和分析在本文所述的web应用漏洞扫描软件中使用pcrc正则表达式阻5”来实现对网页元素的匹配和分析。用于解析网页元素的两类正则表达式如表3.I和袭3.2所示。由于HTML语法规定中本身并没有强制要求对应的网页源码格式遵循其规范,因此很多时候浏览器在解析和渲染网页时即便是遇到部分格式不正确或者不符合规范代码的网页也能够正确处理,因此对于web应用漏洞扫描软件而言,正确处理这部分链接也是其可用性的体现。用于抓取网页链接的正则表达式如下所示:(9hre目”cIurl)忆+2忆+(’:Ⅵ[叶”’】+)m?4)’、_.I、‘(f”?]+"”+)?Ⅶr吣w>?】+)m?+、\s+J’)上面这个uRL包含三部分,虽然HⅣL标准规定对于属性值需要用双引号包含起来,但是实际中可能会遇到被双引号包含的,单引号包含的或者没有引号包含的链接值的情况a上述uRL模式对应于这三种情况。同理,在表3—1与表3.2中的正则表达式中也增项士学位论文第三章Ⅵ协漏洞扫描阿页抓取和分析技术研究与实现加了许多对于属性值边界情况的判断。表3—1解析网页标签的正则表达式标签名B孤e标签Inpul标签用于匹配标签的正ⅢJ表达式(b越e忆+’([^>卜?灿+?)<jnpunb+?(【^>]+’)、、s+?>seJecf标签奄elect恬+’(f^>】+∞忆+》(.+∞坼e】ecnu+々)Tem口ea标签O巧en标签O州。n标签Fo砘marc挑+’(【^>】-?)忆+9(+?)‘/Iema”扎+?><oqec“b+’([^>】十?)\、s+?>(‘’)舶qect\、s+'>‘叩non\、s+?(【^>]+’)忆”’(+?)舶ption忆+?><如mns+?([^>】+?舳’?>(‘?H如rITl憾+?>袁3—2解析网页标签属性的正驯表达式nIl标签标签名标签名标签值用于匹配标签属性的正则表达式协+’n锄e忆+?踯s+(Ⅳ】{O,1})([~”。】+?卅1“惺us+’)№+?v出ue忆+。地+(旷】{0,1))(【1”’】+?)\、lO、z忆+p)怄+’可pe忆+?=帖+(r】{0,1))(【1”’】+?)\、l(忆忆+p)忆"me廿lod忆+?=帖+([、___】{0,1))([1“‘】+?)nl(忆忆+’)标签类型表单提交方法表单提交uRJ惦+?actionk·?=怕‘(r】(0,l})(【吖”]¨)\、1(忆1时’)34交互式网页内容提取现在的web应用中,与用户交互的元素运用的越来越多,这些交互元素极大的丰富了web应用的展现形式并且增强了用户的友好体验。然而对于扫描信息抓取而言,这些技术也增加了扫描软件实现的难度。交互式网页内容主要分为传统的交互式表单内容与现在流行的AJAx网站内容,同时还有一些嵌入于网页中的FLAsH、Applet对象等。341交互式表单内容的抓取交互式表单内容叭”1的抓取是网页抓取技术中的难点之一。许多互联网中的页面隐藏在需要验证的表单页面之后,而对于通常的博客和论坛系统都需要有用户填写完注册表单之后才能够访问一些需要注册会员权限才能访问的数据。Goog】e公司在2008年声称其升级后的网页抓取机器人已经可以根据网页内容自动提交表单内容,并且访问提交表单后续的页面。对于网站管理员而言,如果不希望自己网站的表单被自动提交,需要在robots文件中显示地指明。在自动进行表单内容提交的的时候,爬行器需要模拟用户操作表单的行为,因此它需要能够理解表单元素的特点才能够正确处理表单元素的属性和参数,同时由于w曲应用硕士学位论文第三章wcb漏洞扫描同页抓取和分析技术研究与实现开发者为了能够从用户那里收集到合理的数据,通常会针对数据的内容作正确性验证.如果是非法数据,那么这个表单是会被服务器的处理逻辑拒绝掉,从而无法造成真正意义上的数据提交。因此,扫描器也需要对需要提交数据的内容有基本的理解。及多行文本域(TExTAREA)。这三种元素又有其各自的特点。INPuT和TEx眦A元(1)表单元素的特点。表单元素包含包含输入域(ⅢPuT),选择域(sElEcT)以素都具有n跏e和value属性,这两个值通常是构成提交请求的参数字符串的参数来源。输入域(INPuT)具有7种不同的类型分别为:TExT'HIDDEN,suBMIT’cHEcKBOx,RADIOREsET,PAsswORD。不同的类型的输入域(mPuT)在网页上的展现方式也不同,而其所具有的功能也不同。当INPuT的类型为REsET和cHEcKBOx时其作为参数提交的值可以被忽略。选择域(sELEcT)由一系列选项(0PTION)组成。在构造POsT参数的时候选取sELEc丁的naITle属性和OPTION的value属性构成一个键值对。表单信息类如表3.3所示。表33表单信息类消包内容内容作用表单提交方法保存表单的mefhod值表单提交的LlRI保存表单的actlon值输八域列表表单中INPuT标签列表选择域列表表单中sELEcT标签列表多行文本域列表表单中TExTAREA标签列表在表单信息类中使用的表单标签类如表3.4所示:——墨!二!墨兰堑垒墨属性属性作用标整名字表单标签N砌e属性,用于与别的DOM元素进行区分标签值表单标签Ⅷue属性,对于SELECT标签而言,在表单自动提交的时候通常取其第二个0PnoN标签的值作为它的值进行提交.第一个值在实践中默认作为说明该选择域用选的文字。类型指明rNPuT标签的类型(2)提交正确的表单元素值。为了能够给相应的表单元素附上正确的值可以采用对标簦名字属性进行匹配的方式来处理。可以这样做的原因在于通常web应用开发人员在后端的逻辑代码中会通过标签ID引用页面的标签元素,而标签ID的值一般为一个与标签内容相关的值t这个值通常会说明这个标签的用途或者这个标签应该输入的内容。而标签名(N蜘e属性)与标签ID的值一般来说是一致的,在前端的J“asc打pt脚本与css样硕士学位论文第三章Ⅵ曲漏洞扫描网页抓取和分析技术研究与实现式表中对页面标签的引用是通过标签名来进行的。当然应用开发人员如果并没有根据的对标签命名,或者命名的时候虽然与标签有一定相关性,但是采用了过度缩写的方式或者是特殊的命名方法,在这种情况下,这种通过标签名字来确定标签内容含义的做法也会面临若失败。另一种方式是通过匹配相邻的HTML文本内容以确定该标签的作用和应该填入的值的类型。采用这种方式的时候需要需要对相邻文本的边界做出有效界定,以减少匹配的范围并且提高匹配的精度,另外由于HTML文本中可能会有许多经过了HTML编码的符号.而这些符号通常是空格,单引号,分号,尖括号等,其本身并不会影响到HTML的语义,因此可以进行过滤处理。虽然对通过处理的HTML文本进行匹配可以大致确定标签应该填充的内容,但是有的情况下该HTML文本与标签无关,或者用于提示标签作用的是一张图片等原因,这种确定方式也有面临失败的风险。表3—5默认字段填克表表3—5中字段描述说明了即将匹配的标签可能有哪些含义,那么针对这些含义在对表单名或者表单附近的HⅢL文本中如果匹配到了匹配项(也就是字段匹配部分列的值),那么就用第三列中的默认值进行填充。标签名匹配和标签附近HTML文本匹配这两种方法可以结合起来使用,必提高识别的成功率,如果实在识别不出来,那就用未知内容行的值进行填充。在对一个表单进行自动提交后,需要通过服务器响应的内容与表单提交前内容的差异以及服务器响应的状态码来判断表单的提交是否成功。如果依然没有提交成功,那就说明这个表单页面需要扫描者通过手动的方式进行探索。自动表单提交过程如图3-2所示。由于交互式表单一般涉及到与数据库之间的数据查询与插入等操作,频繁的向一个论坛表单提交数据可能造成大量的服务器资源被消耗,从而导致拒绝服务攻击。因此对于web应用漏洞扫描程序而言,在使用侵入式(具有影响原web应用正常使用的方式)扫描的模式时,可以对目标w曲应用的表单频繁自动构造提交的数据,以检测其是否易于受到攻击。{拿]垒_—}、*m|墼}图3—2自动表单提交过程(3)结合手动操作对一些无法自动化提交的表单进行抓取。对于需要多步完成的操作,比如电子商务网站的支付过程,用户一般需要填写多步表单,最后一步才是支付页面,又比如网上报名系统或者求职系统,通常每个页面都仅包含一个主题的信息,然后下一步再填写下一个主题的信息,考虑到用户还有对上一步填写的信息有修改的可能。因此还会有连接到上一步的回退按钮。对于这类表单,如果提交的序列不是按照正常的步骤一步步往下进行,那么爬虫在自动提交的过程中可能无法达到最终事务结束的页面,或者是经过很多不必要的提交过程才最终到达事务结束的页面。因此对于这类需要多步提交完成的页面操作t可以由扫描者手动访问,并生成一个操作序列的脚本供自动扫描器使用以提高其扫描效率和准确性。这一技术同样可以应用在需要登录验证的表单提交页面中。许多web应用为了防止表单页面被反复恶意提交或者是防止暴力破解登录口令,在这类表单页面都会有验证码图片,最简单的验证码图片是内容为几个数字的图片,通过使用图像识别技术可以识别出具体的数字是什么。比较高纽的验证码图片技术会增加图像的干扰园素,或者是使用变形的中文汉字,或者是一个提问,然后要求访问者输入问题的答案。对于这类无法自动提交通硕士学位论文第三章web漏洞扫描网页瓠取和分析技术研究与实现过的表单,同样可以采用登录序列生成的方式,借助于扫描者提供的手动操作,通过获得井使用其已认证的会话㈣,从而通过表单的验证。(4)动态页面表单提交。不同的动态网页(AsPx、JsP、PHP、AsP等)在生成响应的时候会有自己格式的特点。为了能够让漏洞扫描器自动提交表单,本文在实现的过程中研究了两类典型的动态页面生成响应的特点。1>对于Aspx页面,为了能够自动处理表单控件的回送事件,在生成的响应中,web服务器会插入一些默认的代码。如下所示<input呻e2”hidd刚n锄e=“』vENTrARG¨舻1』vEN丌ARG刚Va】啪‘””卢Einput计Pe=”hldden”㈣掣一EvENTARGUMENT”id-”—EVENTARGUmNT”VaIue‘…’卢<inpm卯e=”hidd酬㈣掣—vIEWS工m”id2”—vIEWSTATE”Value_””序上面是默认生成的三个隐藏输入域,的控件名:EvENlTARGET的值用来表示发生回送事件EvENTARGuMENT值用来表示向回送控件发送的参数:一VIEwsTATE值用来保存页面中控件的状态值。另外web服务器还会自动插入处理这个回送事件的方法,如下所示func渤—doPosIB虻k(eventlargH。eVemA唱唧enI){lf(!theFomonsubml圳(theFo丌nonsubmn01=血1se))(theFo丌n』vENTTARGErvaIue_eVentlargeI;meFom—EvENTARGUMENtValue训emA嘻ument,血eFo兀nsubmito;))这段脚本被用来处理发生回送事件的来源以及参数的赋值,并且触发了表单的提交。通过使用类似javasc咖t=一doPonBack(’gosearch_’)的语句可以调用上述的脚本,并且触发表单的提交,其中印s咖曲表示触发事件的控件名。对于这类动态页的处理过程如图3—3所示在匹配doPostback事件的时候使用的正则表达式为:doPostBack\In¨‘([a.zA-z0·9j’?州叭¨Y盈-zA-zol9j+珊mI)由于在c-+语言和正则表达式中转义字符都是反斜杠,而在HTML语言中,为了表达一个单引号需要使用反斜杠作为转义符,因此上述正则表达式中出现了四个反斜杠用来表达一个反斜杠字符的写法。因为在该类请求中,隐藏参数值的正确设置将影响到提交的表单是否能够正确被服务器接受并处理,所以在取到doPostback调用参数的时候需要重新对一EvENTTARGET和EvENTARGuMENT进行赋值。硕士学位论文第三章u曲漏洞扫描网页抓取和分析技术研究与实现/————、、一————/开始拿萋害国3—3^spx动态页面表单提交2>对于jsp页面,通常使用自定义的脚本来处理页面控件的回送事件,在脚本中通过DOM函数来触发表单的提交。例如documemfomsf’vlewNewsListFo嘲。】submit(),上面的代码通过表单名“viewNew暑Li盯orm”找到对应的表单,然后通过submn方法触发表单的提交。这种通用化的方式相比于Aspx页面而言虽然增加了其应用开发的难度(服务器不生成额外的代码,表单控件的控制由开发者自己写脚本来实现),但是其不需要服务器任何默认的处理也体现了它的灵活性及跨平台的优势。对于这类页面的表单提交,不需要额外的赋值隐藏域的操作。342AJAx网站内容的抓取AJAx指异步javasc邱t和m】-它的核心是jav拈cript的xmIH卸Request对象,它是一种支持异步请求的技术,简而言之,它可以让用户使用javasc打pt向服务器提交请求并处理响应,而不阻塞用户。用户所需求的数据可以于实际的网页服务端并且被动态的写入网页中,这种技术使得缓慢的Ⅵ,eb应用体验有了像桌面应用一样的实时响应的特点。然而如何抓取萄ax网站的内容却是当前网络爬虫所面临的难题。现有的网络爬虫只需模拟用户的超链接请求并解析对应的响应页面,然后再分析页面内容、语义以及衍生的硕士学位论文第三章web漏洞扫描网页抓取和分析技术研究与实现超链接,以此进行网页内容的抓取。与之不同的是,Aiax更多的改用了Javasc^pt驱动的异步请求,响应。而对于现有的网络爬虫而言,它们对Javascrl口t缺乏语义理解,因此对于模拟触发javascipt的异步调用并解析异步调用返回的内容存在一定困难。由于Ajax技术是一种事件驱动的模型,以往基于HTTP协议的网页抓取和分析的技术如果要适于Ajax技术产生的页面,就需要做到事件驱动。因此新的网络爬虫需要解决以下问题:能够模拟解释执行浏览器端的JavascnpI脚本,能够对浏览器中操作DOM的网页元素事件进行触发并模拟发送请求。同样的问题也存在于包含na洲nex以及wPF,E、xuL的应用中,在这种应用中.为了能够获取这些应用脚本动态产生的链接,甚至需要爬行器理解并模拟播放这些应用的文件以发现仅通过解析可能发现不了的链接。35网页模型类研究与设计网页模型类是用于本文第二章中图2.1所示公共数据信息部分用于保存扫描和分析过程中产生信息的数据结构。对于每次扫描器向wcb应用服务发送了请求,并且接收到响应,我们可以认为扫描器与web服务器交换了~次消息,这个消息将包含扫描器发送HTTP请求的方式,请求的参数以及服务器返回的响应消息头以及响应消息体。从上述描述中可以看出一个消息包含三部分:HTTP请求消息头和请求参数,HTTP响应消息头,H丌P响应消息体,其中H1TP请求消息头和HTTP响应消息头通常是浏览器自己来构造发送并且接收处理的,而HTTP响应消息体就是展现在浏览器中的页面信息。而要对目标web应用进行漏洞检测,就需要能够定制化HTTP请求消息头,并且能够根据响应消息头判定请求的状态。351HTTP请求消息头和HT什响应消息头的内容在本节中我们将详细介绍HTTP协议的内容…”,并且指出哪些部分在设计w曲应用漏洞扫描软件的时候是需要关注的。在web应用漏洞扫描器的设计中,解析HTTP消息是关键的部分,HTTP仂议∽删的特点和内容直接影响到扫描器对目标网站是否存在相应漏洞所进行的判断。通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息两部分。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头.响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行.在每行开始处,使用至少一个空格或制表符。典型的请求消息如下所示:GETh曲:Ⅳw…ueducr咖mljne^ndexhnnl硕士学位论文Host第三章Ⅵ铀漏洞扫描网页抓取和分析技术研究与实现educnw…suAcceDt+pPmgmano。c扯heCache—ConIrolno—cacheRekmr:hnD肌…csuusePAgenleduc州Mozjll“04…(winxP;w毗I;N“)在上述请求消息中,第一行表示发起的HTTP请求方式以及请求目标,可能的请求方法如下表36所示:表3—6HTTP请求中使用的方法方法名方法作用请求获取Requen-uRI所标识的资源在Reques■uRI所标识的资源后附加新的数据请求莸取由Reque女.uRj所标识的资源的响应消息报头PUT请求服务器存储一个资源,井用Reauest_uRI作为其标识请求服务器删除Rcquen.uRI所标识的资源请求服务器回送收到的请求信息,主要用于测试或诊断CONNECT保留将米使用请求查询服务器的性能,或者查询与资源相关豹选项和需求满足人们日常浏览网页需求的H丌P方法是GET和P0sT。在诊断和测试的时候可以使用TRAcE方法,它会将服务器收到的信息全部发送回来,并且包含cooKIE值,使用TRAcE方法可以对标记有HTTPOnly的c00KIE值进行窃取。因此,web应用漏洞扫描器至少要支持GET,POsT,PLT,TRAcE这三种HTTP发送消息的方式。Pragma与cachecontrol的值表明用户数据在浏览器中是否需要进行缓存,一般设置为no—cache,这样即使用户访问的网站交换了重要的数据也不会因为在浏览器端缓存,而造成被人窃取的风险。Referer值表明发起的请求来自于的LRL,在一些网站中会有运行于服务端的脚本来检查该宇段的值来确认对当前页面的访问是否来自于本站中具有访问权限的页面(比如对向一个下载链接的请求来检查它是否来自于指定的下载页等)。Lser—Agent值表明了客户端代理的类型,某些服务器只会处理相应代理类型的请求。因此,在扫描器的实现中需要正确的设置该值,典型的响应头消息如下所示:H兀,,102000KDme:Mon31Dec201202:2S:57GMTS州rAp8ch“1314(unlx)Conlen}帅e:tex坍1tml硕士学位论文第三章web漏洞扫描网页抓取和分析技术研究与实现L拈t。mOdlfIed:Iuel7AOr200106:46280M】COnten-lengm39725426响应头的第一行指明了使用的HTTP协议版本以及响应的状态码。扫描器在实现时需要关注响应头消息中的状态码值,它指示了所进行的HTTP请求是处于一个什么状态,这个状态可以说明所进行的测试是否成功。HTTP状态码值的含义如下所示:jxx:服务端内部错误,服务器不能正确处理一个正确的请求4xx:客户端发生错误,客户请求包含语法错误或是不能『E确被执行3xx:重定向响应,为了完成指定的动作,必须转到其它链接接受进一步处理2xx:处理成功响应,表示动作被成功处理lxx:信息响应,表示接收到请求并继续处理响应头中server值表明目标web服务器的类型,比如上面的响应头中。我们可以看出该请求是向一台Unix服务器发送的,并且进行处理的web应用服务器是Apache。content—type表明了所请求的资源的类型,content—le“gth表明了响应内容的长度。352HTTP响应消息体的内容HTTP响应消息体的内容通常是一个D叫文档口”,有的时候当请求的方法不同时也会有不同的响应。比如使用HEAD方法,服务器的响应中就只有响应消息报头,而响应消息体fi#dⅢAD>冈罔厂]圈篇,I竺竺l竺竺lri《W¨㈣1,,【#Hkhr圈3—4HT札DOM结构图的内容就会为空,另外使用TRAcE方法,返回的信息中将包含响应消息所经历的代理服务28堡主芏垡丝壅墨三兰鲨!坚塑塑堂!夏塑里翌坌堑堇查堕窒i壅型——一器处理过的信息。通常的DOM结构文档如图34所示。它显示一个DOM文档结构有一个根元素节点(html>,这个根元素节点有两个主要的孩子<head>和<body>,对于这两个主要的孩子,他们也有自己许多的孩子节点,每个孩子节点有自己的属性,包含于其中的文本等内容。在扫描软件中,需要关心的孩子节点有链接(A元素)、图片(IMAGE元素)、表单(FO蹦元素)、框架(FR心E元素)、脚本(scRIPT元素)、样式衰(css元素)以及HEAD节点中的META和BAsE元素。353网页模型类设计网页模型类是一系列用柬保存HTTP协议通信过程所产生数据并且用于描述每次HrrP会话的类。对于每次扫描器向w曲应用服务发送了请求,并且接收到响应,我们可以认为扫描器与Ⅵ桃服务器交换了一次消息,这个消息将包含扫描器发送HTTP请求的方式,请求的参数以及服务器返回的响应消息头以及响应消息体。表3—7表示当次会话中扫描器需要关心的请求消息的内容类,表3.8表示当次会话中响应头消息的内容类,表3.9表示用于一次会话中交换的消息的内容类。表3.7与表3.8所描述的内容被包含在表3.9之中。表3—7请求头消息美消息内容内容作用请求方法表明提交的HTTP请求是使用何种方法上一个链接对应于请求消息头中的Re&商字段用户代理对应于usepAg∞t字段用于请求的参数扫描器向服务器提交请求时附带的参数,根据其所提交请求方法的不同,参数字符串的串接方式也不同,OET方式需要用问号将参数的键值对甜加在请求的uRL后面,而采用POsT方式的时候需要对参数值进行uRL编码。表3-8响皿击消息粪消息内容内容作用响应状态码表明请求是成功还是被重定向或者是发生错误的一个三位整鼓HTTP协议版本可能的值为HTlPl1,HTTPlOtH丌P0,9内容的类型表明响应的内容是个图片,文本/网页.文本,脚本或者是其它资源服务器类型表观该wEb应用服务器的类型比如un诜或者wmd洲s上一纽链接一般设置为找到该链接的页面的uRL原始响应头消息保存未被解析过的原始响应头字符串,用于生成报告,或者重现原始的扫描过程。硕士学位论文第三章Ⅵ,eb漏洞扫描网页抓取和分析技术研究与实现裹3-9错消息类消息内容内容作川请求方法表明扫描器向服务器提交请求的方式,可以为GET、POsT、PuT,TRACE请求头请求头是一个包含HTlT协议中请求信息中用到字段的类响应头响应头是一个包含Hm协议中响应消息中用到字段的类链接列表保存响应网页中所有的链接元素(A元素)图片列表保存响应网页中所有的图片元素(】MAGE元素)表单列表保存响应网页中所有的表单元票(FORM元素)框架列表保存响应网页中所有的框架元素(FRAME元素)对象列表保存对象元素(0勘en元素).通常指n盘Sh,AppletActjvex对象脚本文件集合保存对应网页上采集到的JAvAscRlPT脚本样式表文件集台保存对应网页上采集到的css样式表文件BAsE元素保存b器e元素的值,当这个值存在的话,该页面所有的相对地址都要以该值作为基地址请求的uRI所请求的资源的位置原始响应消息体保存未被解析过的原始响应字符串,用于生成报告,或者重现原始的扫描过程36本章小结本章主要针对w曲漏洞扫描中网页抓取及分析的关键技术进行了深入的研究,首先介绍了现有的网页抓取需要达到的目标,之后比较分析了几种网页抓取技术策略的优缺点,然后通过使用正则表达式技术研究了如何提取网页中的元素信息,接下来研究了交互式网页内容的抓取过程中所面临的问题和解决方法。最后结合网页元素的特点和HTTP协议信息的特点设计了网页模型类,出用于漏洞扫描器的实现c翌主堂堡堡苎——笙!童鲨!鏖旦塑塑塑塑茎壁垫查里窒!望!.第四章web应用漏洞检测关键技术研究与设计在获取到了用于扫描漏洞的原始信息并且研究了怎样来存储这些信息之后,本章将研究如何来描述一个漏洞以及利用先前扫描到的信息来检测目标web应用漏洞机制。最后为了弥{}纯粹的自动、№b应用漏洞扫描工具的不足,我们也对用于辅助手工进行web漏洞检测的工具进行了研究与设计。41漏洞定义及其说明(1)漏洞定义;目前存在很多对漏洞㈨55‘60境义的解释。在RFc2828中对它的定义为在系统的设计,实现,操作和管理阶段中存在的错误或者弱点,它们可以被恶意者利用从而使得系统的安全策略达不到预计的效果。DofothyEDe衄i“g等人在《c聊to舯phandDa诅sec州ty》15q一文对漏洞的定义是从访问控制的角度给出的。系统中通过访问控制矩阵的方式来实现主体对对象的访问.而这个访问控制矩阵具体实现的就是安全策略,当安全策略和系统的操作之间相冲突时,安全潺洞就产生了。MBishopaIldDB越Iey等人在《Acdtic甜An出yslsofv1曲er曲ilnyl缸onoInies》”“一文中认为。由若干描述实体配置的当前状态组成了计算机系统.这些状态被定为易受攻击状态、不易受攻击状态以及受损状态、非受损状态。攻击就是将系统的状态从非受损状态向受损状态转变的过程。而容易受攻击的区别于所有非受损状态的特征就被定义为漏洞。王丰辉在《漏洞相关技术研究》口3】一文则是从安全域的角度来定义潺洞的,它认为安全域存在于任何运行的系统或软件中,任何操作在该域内都是可控的、安全的,一旦违反了安全策略或者超出该域,系统或软件的运行就是未知的、不可控的。由安全域切换到非安全域的触发点就构成了漏洞。因而漏洞是被动的、静态的,但是可以被触发。从上述说明中我们可以看出,漏洞的存在使得系统的行为不为管理者所预计和掌控成为了可能,那么检测漏洞的过程,一种有效的方法就是去触发漏洞,使它对系统的不良影响得以展现,从而得到相应的消除漏洞的方法。一旦系统被提交漏洞并触发后表现出了违反其安全策略的行为或者已经是一种受损状卷的话,通过这些特征就可以诊断系统存在着相应的漏洞。那么对w曲应用系统中的漏洞检测而言,本文也将采取这种触发漏洞然后匹配漏洞响应的方式以确定web应用系统的漏洞是否存在。(2)漏洞说明。为了能够完好地描述一个漏洞产生的原因、带来的影响及针对硕士学位论文第四章Ⅵ铀应用漏洞检Ⅻ4关键技术研究与设计它的修补措施,以便生成一个权威且格式良好的漏洞扫描报告,还需要对漏洞进行说明。大多数网络安全检测产品公司都声称其产品针对的漏洞知识库能够兼容cvE(公共漏洞和暴露)。cvE¨”表现为一个字典表,通过它可以查询到广泛认同的信息安全漏洞和弱点的公共的名称。利用这个公共的名称,用户可以在各自的各种漏洞数据库和漏洞评估工具享数据。那么针对web应用安全漏洞的说明,也应该兼容到OwsAP、wAsc、sANs等漏洞分类标准。这样用户在使用本漏洞扫描软件获得详细的漏洞信息之后也可以去与上述标准兼容的漏洞知识库中查询相关的预防和修补措施。表4—1设计了用于wcb应用漏洞扫描软件中的漏洞说明表。袁4一l漏洞说明类字段值漏洞1D漏洞产生原因漏洞修补措施漏洞引用的页面漏洞分类漏洞威胁等级字段值说明用以唯一标识该漏洞的值用于描述该该漏洞产生的原因用于向用户提供漏洞修补建议提供用于说明漏洞的权成页面或文章的链接用于说明漏洞所属的类别用于说明漏洞威胁是严重,中等.轻等42可扩展的漏洞检测机制研究由于漏洞发掘技术和利用的手段在不断变化更新,因此对于、№b应用漏洞扫描工具而言,将漏洞检测机制设计为可扩展的是非常必要的,它使得用户在面对新的漏洞的时候可以扩展扫描器的功能以适应新的需求和变化。现有的可扩展机制主要有通过添加新的配置文件的方式和添加新的扫描插件的方式。(1)扩展配置规则文件。通过在配置文件中添加一个描述漏洞说明的纪录项,这个记录项包含了漏洞说明表内容,检测向量判定结果字符串组。扫描器在加载了轰4—2配置纪录项兰嬖堕漏洞说明类兰垦堕望塑包含表4—1中用咀说明漏洞的信息用于暴露相应漏洞的一系列字符串,在检测的时候通过逐个串接在请求参数后面的形式构造一个个畸形的HTl’请求,以选到暴露目标web应用漏洞的目的。漏洞检测向量漏洞判定向量用于在服务器接受到测试请求之后,用于在对应的响应之中逐个匹里!坠堡塞!!堑曼墨查壹垄塑壁塑鉴!壁里塑塑配置文件之后会应用默认的扫描过程对目标w曲应用进行所配置漏洞规则的对堕主兰堡堡茎兰!兰鉴!堕!堡塑竺型茎壁垫查堡塞皇堡生应检测向量进行检测,在收到来自服务器的响应之后,匹配相应的判定结果字符串组,以确定相应漏洞是否存在。配置纪录项内容如表4-2所示。扩展配置文件是一种很方便的扩展方式,并且仅需要少量简单的修改就可以使得扫描器具有检测新的web应用漏洞的能力。这种扩展方式对用户而言也很容使用,只需要参照用户帮助文档理解了配置文件中各个配置项的作用就可以自己动手修改配置文件了,或者用户觉得这个方式太麻烦且容易出错,那么也可以通过扫描软件本身的配置界面进行配置,由扫描程序自动生成或更新对应的配置文件。但是这种方式也有其明显的缺点,因为可用于配置的内容仅限于表4.2中描述的配置纪录项,而无法决定扫描漏洞的过程,这样对于一些需要特殊的扫描过程才能够判定的web应用漏洞类型而无法进行检测。(2)扩展扫描插件。扩展扫描插件的方式能够有效的弥补仅通过扩展配置文件方式所带来的不足。在扩展的扫描插件中,用户可以定制化用于漏洞检测的过程,并且使用自己定义的初始化信息填充对应漏洞说明类以及检测及判定向量。目前主要有两种方式来实现扩展扫描插件的方式,一种是使用一个脚本解析执{亍器来解释执行对应的插件,这样的情况下,插件就可以通过相应的脚本语言来编写完成.典型的采用这种方式的扫描软件如NEssus。另一种是通过实现扫描程序提供的API接口来编写用户定义的扫描插件。对应的接口函数应该包括插件的初始化函数,用于被扫描程序调用的执行扫描函数|三l及用于清理插件所占用资源的清理函数。这种方式被广泛应用于大型软件的实现之中,例如IIs服务器提供了IsAPI接口以供用户在H兀P提交给服务器之前自定义对其处理的过程.又如Apache服务器的扩展开发模块,用户可以自己编写用于A口ache加载使用的功能模块。使用脚本编写插件的方式需要实现一个脚本解释执行程序,并且用户如果要编写自己的插件的话需要学习使用脚本的语法及插件的编写方法。相对于用脚本来编写插件的方式,直接实现扫描程序API接口的方式显的简单易行。不过用户最好使用与扫描程序同样的开旋语言来进行开发,并将开发好的插件放置于配置文件中指定的目录下。同时,还需要遵循扫描程序对于实现函数的要求.例如扫描程序在一个多线程的环境下调用插件的实现函数的话,就需要所实现的函数具有线程安全性。(3)用于Ⅵ曲应用漏洞扫描程序中的插件机制选择。大部分web应用漏洞检测的实质是一种采用精心构造的内容作输入的FuzzING技术吼对于这类、№b应用漏洞的检剁都可以采用一致的检测流程,即提交请求并检查响应的方式,因此使用配置文件扩展的方式可以比较轻便的满足此类问题扩展的要求。但是对于某些类型的漏洞检测,如sQL盲目注入检测,需要使用额外的判定过程,因此需要使用插件扩展方式。在本文的实现之中,为了避免实现一个复杂的脚本解释执行程序,采用硕士学位论文第四章web应用漏洞检测关键技术研究与设计了基于扫描程序API扩展的方式实现插件43漏洞分析器研究与设计不管是漏洞配置规则文件还是用于扫描漏洞的插件都应该由漏洞分析器进行加载和初始化,并且在进行漏洞扫描的过程中调用执行。漏洞分析器的总体结构如图4.1所示,它主要分为漏洞插件和规则、数据队列以及核心函数三部分。其中核心函数负责漏洞分析器的初始化资源分配以及扫描任务调度与分发的过程,数据队列保存的是未分析过节点的信息和已分析过节点的信息。[二亟[]■~—』竺竺竺兰=二随圃雠j。I制…插件满目幢“规Ⅲ%∞拴Ⅻ厂—]月PiR规则I“P定Rm则。—_一图4—1漏洞舟析嚣总体姑构图漏洞分析器的执行流程如图4.2所示。分析器首先需要被初始化,这个过程包括初始化漏洞检测规则以及漏洞检测插件。然后分析嚣将从数据队列中取出未被分j,—孑二、1《吵’”墨釜篙赫捕””1翟茹捕”圉4—2分析器执行流程析过的节点,这个节点的内容是第二章表3-9所示的会话消息类,它包含了用于漏硕士学位论文第四章、veb应用漏洞检测关键技术研究与设计洞分析与检测的所有原始信息。接下来针对每个节点将进行两个阶段的扫描,分别为默认扫描过程检测与使用扫描插件自定义的漏洞扫描过程检测。(1)默认扫描检测过程。默认扫描检测过程的思想是针对每一个节点的每一个参数依次使用每一个扫描配置项中的检测字符串去构造测试请求。因此,假设一个站点有M个网页节点,平均每个网页可以提交N个参数,并且该漏洞扫描软件配置了P个漏洞检测项,平均每个漏洞检测项内包含O个检测向量,那么最终用于完成对该w曲应用的漏洞扫描总共需要发送并接收NuM=M+N·P+O次H丌P请求。假设M220,N=10,P=10,Q=10.那么总的HTTP请求将是20000次。这也说明了厂■一卜佥fJ<唾爹一J<爹为什么完成一个完整的漏洞扫描需要执行大量繁杂反复的工作。同时,太过于频繁的H兀P请求也容易对目标web应用的正常使用带来额外的负担。默认检测流程如图4_3所示。这个流程图展示的是针对每一个节点采用的扫描过程,它是图4.2中的一图4—3默认捡剥流程“使用默认扫描过程检测”部分的细化。在上述检测过程中,即便在应用到某一检硕士学位论文第四章web应用漏洞检测关键技术研究与设计测项检测到了漏洞,剩余的检测项也应该继续应用于检测中,因为针对一个检测点可能存在几个不同类型的漏洞。(2)扫描插件检测部分。一种典型的不能通过上述默认检测流程检铡出来的web应用漏洞就是sOL盲目注入漏洞,因为即便目标web应用具有sOL盲目注入漏洞,那向目标web应用提交的测试请求也无法导致响应中包含出错信息,从而无法进行漏洞特征匹配。但是通过本文22节所示的检测方法也可以对sQL盲目注入漏洞进行检测,检测的思想就是通过改变查询的条件以判断插入的字符串是否被提交给了后端数据库进行处理。如果确认是被处理了,那么目标、№b应用就存在sQL盲目注入漏f|可。sQL盲目注入漏洞的检测流程如图4—4所示。一’*蛤J红娘有参数后面串接±苎存在sQL盲目注入漏洞l,—j—~、h}——————————————-——一f结束1圉4—4、、、......,————一,,s0L盲注插件检测流程这个检测的过程需要在对应的检测点不存在普通sQL注入漏洞的时候进行a因为一旦某个检测点存在普通sQL注入漏洞,那么使用盲目注入漏洞的检测方法就必然能够检测出它存在sQL盲目注入漏洞,因而没有进行sQL盲目注入检测的必要n上述检测流程实际上是相对于默认检测流程(图4-3)中“匹配响应是否存在漏洞特征”的另一种用于判定漏洞是否存在的方法。因此在进行sQL盲目注入漏洞检测的时候也进行了大量的H兀P请求。用户在定制自己的漏洞检测插件的时候也可以针对漏洞本身的特点,选择发送少量HTTp请求来进行其它漏洞的判定。(3)特殊类型漏洞的检测。特殊类型的漏洞包括两类,一类是通过使用不同的检测方式来确定漏洞的存在,一种典型的例子就是测试目标web应用是否存在访问硕士学位论文第四章Ⅵ柚应用漏洞检测关键技术研究与设计权限方面的问题。首先使用一个普通用户的权限来访问目标web应用,然后使用具有初级权限的用户来访问目标w曲应用,再使用具有高级权限的用户来访问目标Ⅶ.eb应用.保存用户访问到的所有资源。通过比较这些用户所能够访问到资源的差异,可以确定相应的web应用中的访问控制策略是否得到了完整的实施,或者是否存在未授权用户可以越权访问的现象。另一类是针对具体web应用已知漏洞的检测,这种方式类似于针对现有的系统和应用漏洞的检测方法。由于现在大量的开源web应用被广泛使用,比如知名的Discuz、wordpress、Joomla等,针对这些具体的web应用存在的漏洞,许多检测的方式已经被发掘出来,并且可以应用到扫描软件之中。当扫描人员已知扫描的对象中含有这类可能存在已知漏洞的w曲应用的话,那么可以直接选择相应的检测措施就可以对相应漏洞进行检{雯4。使用这种方式的优点是针对一个检测点只需要进行少量的HTTP请求(通常是一次)就可以了,并且完全不依赖于前期所获取的扫描信息,检测过程具有很强的针对性和准确性。缺点是应用的对象范围有限。44辅助扫描检测工具的研究Ⅵ,eb应用漏洞检测【22捌过程中除了应用自动化工具进行扫描以外,还应该由漏洞扫描者针对部分区域进行定制化检测,比如扫描软件报告的待手动检测uRL列表或者扫描者认为的可能存在未被检测出来的漏洞页面。这个时候,为了能够方便用户进行手动探索,应该提供一组辅助扫描检测工具。这些工具主要包含编码/解码工其、用于定制HTTP请求并且接收响应的工具、sQL盲目注入信息获取工具以及本地代理工具等c这类工具本身的原理并不十分复杂,但是却可以给手动探索、№b应用漏洞提供极大便利。(1)编码/解码工具。编码/解码工具作用是对字符串进行处理,这些处理操作包括u砒一编码懈码,Base64编码懈码.字符串加密与解密以及对字符串进行啥希操作。用于HTTP请求的参数通常都需要进行Hnn编码,否则请求中的参数不会被正确处理。编码的思想是大小写字母,数字和【,_·】保持不变,如果是空格,转换成+,其它的字符按字节首先加%.再按字节转换成16进制的形式.16进制中的字母需大写。Base64、B船e32、Basel6编码与解码的定义与原理可见于RFc3458㈣。B拈e64已经成为网络上常见的传输8bit字节代码的编码方式之一,它主要是把一些二进制数转成普通字符用于网络传输t以避免直接传输二进制字符时可能与协议控制字符冲突的问题。采用这种编码方式之后的内容将是原始数据的4如大小。字符串加解密方式包含DEs,3DEs等常用的密码学加解密算法。另外对于字硕士学位论文第四章web应用漏桐检Ⅻ4关键技术研究与设计符串进行哈希的算法包括MD5,s}IAl等。由于该工具是为方便扫描者处理字符串,以达到构造正确的H丌P请求.验证响应内容完整性,分析响应内容的目的.因此在后续实现中还可以增添很多实际遇到的处理方式。(2)定制HTTP请求并且接收响应。针对特定的uRI。发送定制化的请求时,这个请求的头信息是H兀P协议中的相关字段,对于扫描者而言,记住这些字段的写法显的有些繁琐,他们只需要关注与漏洞相关字段的内容以及请求字符串的设定。因此该工具可以针对目标uRL生成一个默认的HTTP请求头信息,而扫描者仅需要要根据其需要修改请求的一部分,并且手动提交请求。该工具负责接收并且显示响应的内容,并且将匹配到的扫描者定义的漏洞特征内容高亮显示。实际上,本工具是扫描软件中页面抓取模块的部分功能,只是这里将其分离出来。变成手动提交的方式以方便使用。(3)sOL盲目注入漏洞信息获取。有时候当判定一个页面存在sQL盲目注入漏洞的时候并不能令人信服,因为漏洞触发的错误信息被服务器屏蔽了。那么在不使用破坏性的攻击方式前.能够通过这个漏洞获取到什么信息,往往是这个漏洞严重性的很好证明。已有很多方法可以利用sQL盲目注入漏洞提取信息,比较经典的方法有Absintbe中实现的通过二分判断逐字节获取信息的方法。(4)本地代理工具。本地代理工具也是一类必要的辅助扫描检测工具,它的工作方式是通过在本地建立一个监听服务器,然后将HTTP请求发向那个监听服务器的地址和端口,代理工具可以拦截到请求的详细内容,用户可以通过该工具选择转发该请求或者放弃转发。这种方式的优点是当发送请求的是某种具体的浏览器(IE,chrome,Firefox等),用户可以很方便的看到在正常浏览器中对具体页面的请求内容应该是个什么样子,并且使用这种方式也可以检测某些在浏览器端进行内容认证的漏洞旧为浏览器端进行的认证方式是容易被绕过的)a45本章小结本章主要针对web应用漏洞检测关键技术进行了深入的研究与设计a首先研究了如何正确的描述一个web应用漏洞,之后研究了可扩展的漏洞检测机制,并且针对web应用漏洞的特点采用了配置扩展和插件扩展结合的漏洞扩展扫描机制a然后对漏洞分析器的结构和分析流程进行了深入的研究和设计。虽后,为了弥补纯自动化漏洞扫描软件的不足并且减少手工检测的难度,研究了一系列辅助手工漏洞检测的工具。硕士学位论文第五章q岫应异j扫描软件的详细设计与实现第五章web应用扫描软件的详细设计与实现本章主要介绍了web应用扫描软件的详细设计与实现。首先介绍了常用的HTTP传输库Libcurl并对其进行封装,设计了一个封装类以方便使用。然后介绍了网页抓取功能的设计与实现,并且指出了实现过程中碰到的问题。接下来介绍了漏洞检测功能的设计与实现。最后给出了扫描器执行的结果,结果显示,该扫描器可以有效检测常见的w乩应用编洞。51Ⅵ曲网页抓取与分析模块的详细设计与实现511使用Ljbcurl进行开发cuRL【捌是cl胤nfofurl的简写,意思为cRL的客户端。cLRL项目是由cLRL命令行工具和libcurl库组成的。它作为一个成熟的网络传输工具,许多操作系统已经默认集成该工具。按照cuRL官方文档的介绍,Libcud有以下优点:(1)1mc一是一个易于使用的客户端uRL传输库。(2)11bc州支持多种通信协议。(3)llbcIlrl高度可移植。(4)libc州免费自由、线程安全、兼容IPv6、特性丰富、快速、社区支持。、ubcⅥl库被设计成易于使用的一个库.因而提供API调用接口也相对比较简单。它提供三组常用的接口,e船y类,muti类和share类。其中easy类一组特点是同步完成t高教并且快速的,每次完成一个传输请求。而mun类一组具则有异步完成的特点,它能够同时开始一组传输操作。除此以外.这个库还提供其他一些有用的操作,总共有40个左右的API函数。使用该库函数进行网页抓取的流程大致如下:(1)调用cllrl_910bal-iIlil来初始化libc训所需要的程序运行环境。在每个程序中,这个调用必须在1jbc删中任何函数被使用之前执行至少一次。值得注意的是,这个函数调用不是线程安全的,因为在它内部会调用一些非线程安全的调用。困此,一般在使用多线程处理之前执行此函数调用。(2)调用c删一easy—111it来初始化一个cuRL句柄。cuRL句柄指向一个sessjonHandle结构,它包含了用于一次会话可能用到的数据信息如域名信息,采用何种接口信息(easy.muti,share),请求的信息.用户指定的信息,ufl状态,cookie信息以及数据流使用的编码等。cuRL句柄是一个很重要的结构,虽然由于该库对其进行了封装,使得在运用的时候几乎不需要了解它的细节,但是从提供的源码中对它进行了解,有助于理解libcⅥ1函数库的工作方式和其运行时需要记录的信息。硕士学位论文第五章Ⅵ协应用扫描软件的详细设计与实现需要注意的是cudJ拈y—mlt调用会在内容检查是否调用了curl_glob出-init,如果没有调用的话将自动调用c删_910bal-init,所以要让该调用具有线程安全性的话,需要在之前手动调用curlglobminit(3)调用c州_easy-setopt来设定会话参数来制定一个特定的请求,并且指定响应内容处理的方式。通过curle8sys豇oPt函数可以设定上百个选项,ljbc删对诸多通信协议和认证方式的支持都是通过设定不同的参数选项来实现的。常用的参数选项如表5—1所示:表5—1libcurl中常用的设定选项选项名CLJRLOPTURLCURLOPTUSERAGENTcuRLOPTFOLLOwLOCATIoNCURLOPTW刚TEFLJNCTIoN选项作用指定所请求的URL指定请求头中usepA窟em字段的值指定请求资源时候是否白动跟踪跳转指定获取响应资源所需要执行的操作指定存储响应瓷源的数据结构指定获取响应头所需进行的操作指定存储响应头的数据结构指明读取初始c00kje的文件.并擞活cookie相关操作指明写入cookie的文件CL瓜LOPTWRJTEDATACLJRLOPT}瑾ADERFUNCTl0NCURLoPTWRIrEHEADERCURLOPTCLJRLOPTCOOⅪEF1LEC00KIEJARCURLOPTERRORBUFFERCURLOPTPOSTFlELDSCURLOPTPOSTFIELDSIZECL爪LOPT指定出错信息存储的缓冲区指定用于P0sT的数据指定用于P0sT的数据的长度指定代理PROXYPo盯c0RL。PT』us丁oMREQuEsTCURLOPTPUTCURLOPTGETCURLOPTPOST指定请求使用的方法,可以为DJek,T口∞等指定请求中使用的方式为PuT指定请求中使用的方式为GET指定请求中使用的方式为POsT上表为常用的设置选项,而需要进行ssL认证或者定制请求头的内容的以及其它功能的选项可以在源代码文件中找到,其使用的方式具有一致的风格。通过使用curleasvsdopt调用可以定制接下来网络传输的特性。在需要维护认证cookie的时候需要开启CuRLOPTcOOⅪEFILE选项。而在传输图片或者是音频等资源对象的时候,cuRLOPTwRITEFuNcTION指定的函数操作中需要类似使用memcpy的内存区域复制函数,因为这些资源对象本身包含很多0字符,而对于字符串而言,O字符是结束符,所以使用字符串复制类函数将无法正常下载到相应的资源。(4)调用curleasyperf0叫来进行传输。这个传输是同步阻塞进行的,直到堡主堂堡丝塞塑亘皇些!生旦塑塑堑堡!鲎塑堡生!壅望一传输内窑完成或者出错,该函数才会结束。通过查看上步cuRLOPTERRORBuFFER中指定的缓冲区的值可啦查看错误的详细信息a(5)调用cllrl』a5y-clean“p来清除一个cuRL句柄所占用的资源。(6)调用curl—global—m1I来清除1ibcIlrl的程序运行环境所占用的资源aHTTP传输类定义如下tclassHnputil{HnpUtil(k~HttpUtil();、+oidsetur】(conststd::stnng&urI);smnggetun();Dublic:GetBu肺啦constsⅡl“gGnEHorBu雎哦constsUlngconstsmngGelHeadBu行er();b001voidst甜icma{1cPerfo衄TrarIsf):ReseIBu圩erfl:/,开始传输∥全局初始化vo讨Glob出Inltcurl(1仰gnags);voidolob出De¨tCuTlO;脯理全局句柄,全局函数各调用一次tDrotectedng【icvo.ds诅tjcsize|ntwd把“vo|d+bu鼢,sizettsi理.mzenmemb,voi扩{):RcvHeadefs(vold铀u丘bLslzejsize,slze—tnmemb.Void+usorpLSetBu旋r(cha工岫u髓r,size-tsize,s魄-tnme“山IsetOptions(s砸ngopt、hlue.intOPTION),CURL+m-pcu吐boolcharme丌orBu脑『cuRLheadBu如r:stnngm∥保存传输中的错误信息sIzE】,pagcBuf琵r.m{TTP协议体内容ERRORmin2);m删TTP协议头内容∥用于传输的uRL地址sⅡingmszurl:在上述这个类中,GlobmJ血tc洲与GlobaIDeI血tcud是非线程安全的,它们用于初始化】ibcud库的运行环境,各自仅需执行一次即可。pe晌mTrans是线程安全的传输函数,用来执行请求的发送与接收,而wd船和rcv№ad啪是传输过程中使用到的回调函数,因此被声明为静巷的。setO州011s用来为传输设置选项,它主要是将用户定义的选项值转化成传给libcllrl库的选项值。512网页抓职功能设计与实现网页抓取在漏洞扫描软件中是一项很重要的功能,它决定了扫描软件是否能够检查到网站中的所有链接,匿此对最终扫描的结果是否完各有设具有决定性的意义。网页抓取的过程通常是一个用户指定的初始链接开始的,通过解析这个初始链接返硕士学使论文第五章Ⅵ协应用扫描软件的详细蹬计与实现回的响应,抓取程序会获得更多的链接。根据前面的本文3.3节讲述的网页抓取策略,抓取程序椅继续访问更多的页面,直到本站所有的页面都被访问完毕或者达到了用户事先定义的结束标准。同页抓取程序中使用的线程池叫的工作示意如图5.1所示在使用HTTP协议进行囤5—1罗线程进行网页抓取示意图网络资源传输的时候,由于所进行的操作延时取决于所传输资源的大小和网络传输速度的影响,在传输没有完成的时候,对网页的解析操作是被阻塞的,因此使用基多线程来处理传输过程能够提高网页抓取的效率。通过使用一个线程池来管理进行网页抓取的工作线程可以很大的减少线程不停地创建和销毁所产生的资源消耗,同时使用线程池也可以控制工作线程的数目,从而使得程序消耗的系统资源在可以控制的范围之内。线程池通过一个线程分配器查询线程池中各工作线程的状态和总的工作线程数目。当有一个新的网页抓取请求到来时,分配器先查看线程池中的工作线程是否有执行完毕正在等待任务的,如果有空闲线程,则把抓取任务给该线程去执行。如果没有空闲线程,则判断工作线程的数目是否已经达到上限,如果没有达到数目上限则创建新的工作线程来执行此抓取任务,否则,该任务暂时被阻塞,直到线程池中有空闲线程的时候再把该任务提交给空闲线程去执行。在网页抓取的过程中过程中为了使抓取程序具有足够的灵活性和有效性需要注意以下几个问题:(1)链接判重问题链接判重时需要使用全局队列中的数据,因此要保证操作的线程安全性。另外在对链接进行判重的时候不单是比较uRL,同对要比较用于请求的参数名和参数个数是否相同。由于对于同一个动态页面提交不同的参数值往往硕士学位论文第五章web应用扫描软件的详细设计与实现可以构造不同的条件从而导致动态页面显示不同的内容.但是这些不同的内容往往足服务器从数据库中读取出来并且填充在动态页面内返回给用户的。这些内容的不同并不会改变原有网页的结构,因此也就不会导致新的web应用漏洞。对于这类链接.不必要每一个链接都去抓取,通常抓取一个就可以代表一类了。这类页面可以通过请求的参数名和参数个数来进行分类。(2)相对地址向绝对地址的转换在网页上抓取到的网页链接有许多是相对地址,在抓取网页的时候需要将这些相对地址转换成绝对地址才能请求到相应的网页资源。转换时需要先查看该网页是否有base属性值,如果有的话将取到的相对地址串接到base值后面即可,否则的话串接到当前网页目录后面即可。值得注意的是有的地址使用一/表示网站的根目录,使用/表示网站的当前目录,使用/表示上一级目录,因此在链接中遇到这些符号的时候需要做相应的处理,以便生成一个正确的资源URI。(3)网页抓取程序除了可以抓取指定的种子网址,同时也可以对用户配置的一个网址列表中的域名和IP地址进行抓取。同时,用户有些网址和IP也不愿意扫描器去进行检测,对于这些特殊的地址,文件扩展名或者是特殊的参数,扫描器需要读取配置,然后执行用户想要的行为。(4)网页抓取程序由于并发对服务器提交大量的请求,因此,它也会对目标web应用服务器资源造成一定消耗,同时因为网络带宽的,如果网络状况不好而并发度太高的话,会造成请求超时而失败的后果。因此对于抓取程序设置了抓取请求延时参数。通过设定这个延时参数可以减轻扫描器对网络带宽的需求。(5)定义抓取程序的是大抓取深度。抓取深度的定义是到达一个特定的页面需要从种子网址点击多少次。通过在全局的链接队列中的每个链接中附加一个指示链接深度的值来实现。每当抓取一个新的页面的第一个链接的时候,这个值在原有的基础上加一。设定抓取程序的抓取深度可以让用户选择检测比较容易访问到的(通常也是比较重要的)页面是否存在着w曲应用威胁,那些一般访问不到的页面内容就不需要被检测了.这个选项在面对网页数目急剧膨胀的w曲应用时可以大大缩减用于扫描的时间。(6)对于某些不能够自动提交的验证表单,比如使用了验证码技术的登录界面,为了能够访问到授权后的页面内容.抓取程序将标记这些页面,将其归类为需要手动探索页面。在用户手动输入验证信息并且通过验证之后,扫描程序将获取到用户的登录会话,并使用它作进一步的自动扫描。513漏洞检测粪功能设计与实现(1)漏洞检测类详细实现。cAbs们ctPl“gin是一个抽象类.它提供了其子类必须实硕士学位论文第五章web应H{扫描软件的详细设计与实现现的三个方法hlll、Deinit和scan。另外它也提供了描述一个扫描插件所需要的数据成员。classCAbsn∞tPlugin{Dub】ic:cAbs耵actPlugin(void),vinual ̄cAbsⅡanPl”91n(void);vimmlvoidscaIl(cP89eInfo+pInf0)=0;vlnualb001In∽;Deinit();vi咖酊bool1mstring1m∥公用接口,表示父类是抽象类/,子类须实现的初始化函数Ⅳ子类须实现的清理函数GetID(){rdll丌lnId,)GetPl“91nNmne()(retmmJluginNme0Getcmegory(){陀tLlmmcategoTy}0Hsolution(){remmrn—solution;)GetReferences0{renlmmReferences:}GetIsEnabled(){retmm_IsEnabled;)mId:mPluginName;s啊ngsm“gboolDroteckd:IntⅣ唯一标识插件的IDsnlng,/插件的名称Ⅳ用于漏洞的描述stringlmm—Pl“91r1Desc打Ption:mcak20rv:Ⅳ用于漏洞的分类strin£stringbooImsolution:mReferences:mIsEnabled:/佣于说明漏洞的解决办法Ⅳ用于说明漏洞的引用文档Ⅳ标志该插件是否已经被启用};对于一个具体的漏洞扫描插件而言,它需要继承cAbs昀ctPlugin类,并且提供自身的Init、Deinit和scan方法的实现,因为这些方法会在cAnalyser类中被调用,其中Init与Deillit用来做插件的初始化和清理工作而scan方法用于定制化插件自身的检测流程。例如:classcBlindsQLIPlu咖cAbs们ctPIugln{Dublic:csQLIqectlonPlugin(v01d);~csQLI脚ectl011Pl“gin(void),v01dscan(CP39eInfo+pIllf0);b00lIIljtO;b001DeiDit():pn、r乩evoidAnalyseResult(smng&pagesⅡ);voidFlndAnck(s仃ing&anckInfo),Ⅳ分析是否存在sQL盲注攻击的方法∥找到一个攻击.将其记录):第五章web应用扫描软件的详细设计与实现52扫描器执行结果下面是对某个小型新闻网站的执行扫描的结果。扫描器在windowsxP平台上执行,运行该扫描器之后,在命令行的模式下输入目标web应用的uRL.扫描器首先抓取目标web应用的链接.然后针对每个链接提交参数进行漏洞测试。最终将检测到的漏洞信息替换到一个HTML模板之中,生成以下结果。【6、虹)jI-●_|曼曹lL女n№吐血Lm命令注入。链接路径遍历:攻击点5·垃卫●-■—鱼蔓曼曼世堕竖鱼』!Lg垫盟!韭盟L瑚J链接攻击点囝5—2检测结果总览扫描器执行之后会生成一系列HTML文档作为输出,图5—2显示的是对某正在硕士学位论文第五章Ⅵ,eb应用扫描软件的详细设计与实现运行中的站点运用该扫描器检测之后产生的结果报表。从生成的结果看来,该站点存在18个漏洞,并且大部分是严重的sOL注入漏洞以及xss漏洞,扫描器针对泼站点构造了大量的测试请求。每一个漏洞的链接指向该漏洞的详细信息,用户可通过点击该链接查看相应的详细信息文档。检测详细结果类趴s。L注^威胁等级,高惑嚣’。等=‘。’”““““血』…一产生雁目:攻击者在用户输入中嵌人了粹0构造的soL罱甸,以破坏原先查询的结构.并且试图执行奉来不被允许的操作解决方囊z仔细柱测脆弱点a“mun*的输凡-消除其中可能导致s啦凡攻击的关键字请柬详细内窑=O旺T■hDT晰女a岫j岫Lp35p。am。虬“一,缸m呲J。撇s咖HPEp虾。。90’E≯d^。d二Zr开1Canbe舢?江T-sml叫扛研hm4,轴qq;teIc吨^…c’+jS难S≈aq∞U8BⅨU§=oED嫩00×环埘C贼0E(郇rs“一^:mi吐4i05t:‘●■_响应详细内窑:^c‘印timE“峰“∞fS0“om口at酣e·、:s正6O:Ⅵ。“:,R妇%h叩.■●●■—●-DTs对eba如血a触-舶d雠d镕XHPse止。出£^s啦sⅢdmcq~cBR^sccD}m斌iGo强1艇GBG0ⅨLpIl5。。k池ⅡdSdYHhC㈣iq“5S0aEll=C…一dosEDⅢr’hD却r1011∞it当∞SHr%、KⅡomⅢS)∞…d女^”ⅡT6OC^&e£∞mm匹配转肇窘:C吼t嘣-T弹El毗协m‘pl柚o‘曲j:]n北Ⅱe三f‘;“K妇1t>(&m血f={;体5I=F,错误s3:.k:一1∞【,咄mtn:t一束体一:)在sQL语句结尾之后牧到字符。(f伸E)图5—3sOL注入漏洞详细检测图图5—3显示的是sQL注入漏洞的详细信息。对于s0L注入漏洞,用户需要知道它所针对的目标uRL以及脆弱点。对于sQL注入漏洞产生的原因,以及相应的解决方案也在详细漏洞检测结果中体现出来。详细的漏洞检测结果图中还包含了探测该漏洞时所用到的HTTP请求头,以及相应的响应头,用户可以使用该请求头重复该测试。匹配特征内容给出了软件判断该处存在sQL注入漏洞的原因。上述的请求在用户输入的信息中添加了~个单引号,而单引号在sOL语言中是表示字符串的开始或结束的关键字,这个新加的单引号提前结束了原先查询中的字符串,从而导致原有堕主堂竺丝兰苎互兰坠!生塑塑塑鏊壁塑堂塑堡盐皇壅翌的查询多了一个单引号.因此得到一卟服务器内部错误,并且提示在“sQL语句结尾之后找到字符’。检测详细结果类别:xss攻击威胁等级:高目标uu:h印.■··————日i血mdexse诎a甲脆弱点:Ke博啪d蠢|雾器户输^十嵌^了罔直脚奉Hg诹用户的舍话信息,并且试图利用谖台语信息代替用户执行掉作篝麓氯弱点神州的输^,消际箕÷可能导轴蛳自的目页脚车请求详细内窑=POSTIbhmd“Se毗has口;五}lJco。HE^SP轾SS:o、D^钮B舢啦∞、鼬CPo、000Ic3扎旺Ⅻ.^sP征T_smladd—-:w“!jh“q审呲mmgC㈣L“}mj^…c’‘0R☆Ehq:-l拙hⅢdBmd—pYmo叩ti“;”;…-rs三三o#■■■■■一5日趣眦、:o珊a一扎c。唧龇+、:sE6々.w砒≈Co脚.T印哪E……々一☆m删…“dK忖∞亡【·‘s饥P呲旧§s!e5t‰c}j衅s。p口&§e甜一dO响应详细内窑t#HPll二∞OXCo…nDmf、:咀二j却f::j:0二:Ⅲ岛ⅡCom呱i忸}虹S!一:ck;eS“v*^a…o"s60X{附研dBv^S?二《=C删J弹Enn枷Chse删cadlc‘。n口n…e匹配I牟怔窑tse“:h【、kn【:ol一’d)·一Es:1∞E,Ⅲ·nj鹞:e"s—s}柚I5砷2Hmnt3】图5—4xss攻击漏洞详细检测图如图50所示.与sOL注入详细检测结果使用的模板相同.xss攻击漏洞详细检测结果也包含了上述信息。在上述结果用户请求中,用户的输入项中添加了“--)(sc^pt’akn()(ssTcstsuccessfLll)叫sc^pt>“,该输入中包含了一个没有在该站点出现过的字符串”xssTestsuccess舢’。响应的结果表明,该请求得到了服务器的正确处理,并且在输出的响应中包含了该特殊字符串,这表明该页面没有对用户输入的内进行正确的处理就将其直接展现在响应的内容之中,而嵌入在用户输入中的恶意脚本代码也被执行,因此存在严重的跨站点脚本攻击漏洞。图5.5显示的备份文件检测漏洞的详细信息,从该详细信息中可蚍看到,针对目标web应用构造的对于一个压缩文件的请求得到了服务器的正确响应,响应的状态码为200,也就是处理成功。这说明扫描软件成功检测到了一个存在于阀站执行目硕士学位论文第五章Ⅵ曲应用扫描软件的详细设计与实现录中的各份文件。攻击者可以下载该文件,从中可能得到该web应用的敏感信息如关键的事务处理逻辑,用户账户信息等。检测详细结果类别:备份文件威胁等级:中目标m:h印:-—_·-正赴smb哪-脆弱点。mb掣瞄产生巨目;用户对日标、、蚰用晌备份文件没有进行正随的管理.而在nb应用的执行目录下留下了可毗被下戴的备份文件解决方素:使用指定的备份目录,清渐有冈站目录下舳备甜文件请柬详蛔内搴tGET_m“mb~n口1coohE^S?∞女Ⅸ叨^轺日)R^S啦回、斑CCP0、odOIa班OE:Ⅺ:0^sP二{T-sesg咖d孙0*叫jjhqq;"cd二叫m…’4如‘q。L越9雌rd“S0s*^!眦。l:o山j0:c蛳口《dMe:、£旺6Aw叫0三£。cc■■■●■一跏由Kh卸■■■■■■一rmll2。。oK憾洋■^#tC…‘∞!n‘£∞O……C删J冲£o卯ⅡcanonL∞mdme女hi∞S∞:∞901=。1:16乱玎^c。■“hgt宰=bH。!玎蜂。03elb96;:&n靠”XP口硼t4k^SP二E:S“K、&…^.Ⅱs50DnE、札}却f:01101s;瑚孙ⅡCo∞tdhmsed脯tg:!='.::∞0x图5—5备份文件漏洞详细检测图53本章小节本章首先介绍了广泛使用的HTTP传输库libcud,并且分析了其开发流程和注意事项,基于该库,实现了用于扫描器的HTTP传输类。然后给出了网页抓取模块和漏洞检测模块的实现,并且分析了其中关键函数的功能,最后给出了用于实现插件机制的类定义以及常用的漏洞检测向量,并且给出了扫描器的执行结果。堡±兰生堡主————第六章结束语6兰查兰苎壅堕1工作总结本文对Ⅵ铀应用应用漏洞产生的原因以及检测的方法和技术进行了研究,同时结合web应用漏洞检测本身的特点提出了一个w曲应用漏洞检测方案,并且给出了一个web应用安全漏洞扫描软件的总体结构设计。之后选择了Ⅵ铀应用漏洞检测中的两类关键技术作为研究对象,对其原理和相关技术进行了深入的研究。由于Ⅶ铀应用以其方便、美观和功能强大的特点越来越被广泛应用于各种领域的信息管理系统中。但是web应用漏洞本身危险性却没有引起足够的重视,许多w曲应用都面临这潜在的威胁。一旦这些漏洞被攻击者恶意利用,造成的影响也是很严重的。因此莸们需要尽早地找出这些潜在的威胁.并且将其消除。然而由于web应用漏洞的隐蔽性和多样性,手动进行完整的检钡4工作既耗时又耗力.因此我们需要研究自动化的扫描工具对目标w曲应用进行漏洞检测,同时针对某些特殊的漏洞类型,我们也要提供必要的辅助检测工具以提高检测的效率。纵观全文,本文所完成的主要工作及研究成果包括以下几个方面:1、对web应用漏洞产生的原园以及对应的检测机制进行了深入研究;同时结台web应用本身的特点提出了一个Ⅵ,eb应用漏洞检测方案,给出了一个可行的u铀应用漏洞扫描软件框架。2、深入研究了漏洞检测软件中扫描信息获取与分析技术,对漏洞扫描软件中同页抓取目标进行了深入的分析.并且研究了页面抓取的策略,在此基础上设计了网页抓取的模块,利用该模块可以对目标Ⅵfeb应用页面进行完整抓取。针对基于正则表达式的网页元素提取和交互式网页内容进行了深入的研究。同时完成了网页元素内容的分析和提取。研究了DOM文档特点和HnP协议信息内容,在此摹础上设计并实现了扫描信息获取模块,达到了对目标w曲应用进行扫描信息获取的目的。3、研究了漏洞扫描软件中漏洞的表示方法并且分析比较了常用的漏洞扩展检测机制在此基础上设计了一种基于插件和用户配置文件扩展的漏洞检测方法。针对主流的w曲应用漏洞(如sQL注入漏洞、sOL盲目注入漏洞、xss攻击漏洞、路径遍历漏洞以及备份文件检澳4漏洞)设计并实现了相关的漏洞检测插件和一个用于web应用漏洞检测的漏洞分析器。最后研究了定制HTTP请求、编码,解码、HTTP代理等用于辅助web应用漏洞检测的工具,以提高Ⅵ曲应用漏洞检测的效率=硕士学位论文第,Y章结束语4、实现了一个可以检测目标w曲应用漏洞的屎型软件。结果表明,该软件可以有效的检测主流的web应用漏洞。62进一步工作展望目前web应用安全仍面临着巨大的挑战,随着新的攻击方式不断出现,新型的web应用漏洞也被逐渐发掘出来,那么用于检测这些漏洞的方法和技术也在不断地更新。由于时间和精力等多方面的原目,本文设计的Ⅵ铀应用漏洞扫描软件并不能确保完全检测出一个复杂应用的所有安全漏洞。可|三【从以下的几方面对其进行进~步的研究和完善:(1)通过研究最新的web应用攻击方法,同时收集针对具体web应用的漏洞检测方法,并且形成自身的Ⅵ,eb应用漏洞检测库。将其应用于本w曲应用漏洞软件以提高本漏洞扫描软件的速度和精度。(2)针对FLAsHfLEx以及wPF,E、xuL等应用中的漏洞检测。为了能够检测出这类应用中的漏洞,需要扫描软件能够理解这类应用脚本的语义,并且通过动态解析的方式检测出潜在的漏洞。本文并没有对如何动态执行脚本并分出漏洞做出深入的研究,为了提高扫描器的检测能力,可以针对这类漏洞的检测做进一步研究。(3)针对Aia)‘网站内容的漏洞检测,本文设计的漏洞扫描软件仅能进行静态的分析,识别其xmlH卸Rcquest对象,并提取其目标链接。而需要完善的解决这类问韪,需要扫描器能够模拟执行Javascript脚本,并且动态的触发页面上的事件。(4)针对辅助扫描工具,可以开发出具有更多有用功能的工具,如弱会话验证分析工具,暴力口令破解工具等。并且将辅助工具与扫描器做到数据共享.使得辅助工具可以轻松的从漏洞扫描软件中获取数据,并且辅助工具产生的结果可以轻便的集成到原漏洞扫描软件的结果之中,甚至用于改善自动化漏洞扫描软件的行为,提高其扫描效率。(5)本工具的用户友好性j丕有待加强,以使得该工具成为一款轻便.成熟,有效的web应用漏洞扫描工具。总之,随着新的web应用技术的不断运用,新的web应用漏洞会不断涌现而新的Ⅵ铀应用漏洞检测方法也会随之出现。本论文为w曲应用漏洞检测技术的研究和实现打下了一个良好的基础,目前已经可以解决部分常见的web应用漏洞检测问题,期待后续的开发能够扩展更多功能,最终形成一个轻便、智能、成熟、有效的综合漏洞检测工具。硕士学位论文参考文献参考文献…ouAsPAuconk—e2009[EB,0L】h郇sⅣ”mowaspo咖nde”php/0wAsP_Au—co咄rencc_2009,2012[2]赵亭,陆余良等Fuzzi“g技术综述[J].计算机应用研究,201027(3):829.834口]OwAsPjes2004Foundation11他把nmostcdticmwebapp】ic砒lonsecu五tyvulnerabiljtyupdme[EB/0L】hnp:ⅣuWowaspo圳ndexphprrop_10_2004,2004tenmost【4]OwAsPFoundat】onThecritic址webappIic砒ionsec嘶tyvulnerabiljties2007“pd砒e[EB/OL]http:Ⅳumuowaspor酣ndexphp仃op-10-2007,2007【5]OwAsPFoundatlonO、ⅣAsPT0pTenPro】ect2012【EB,oL】h印:∥ⅥⅥwowaspo叫inde。phP/c叭。gory:OwASP一。rop_Ten_Project,2010[6】李昌wcb应用安全防护技术研究与实现『D1长沙:中南大学,2010年5月[7】cNCERr/cccNCERlYCcA1111ualRopon2叭0hnpⅣHrwⅥceno唱c删serFiloes,FiI“CNCERTAnnualRopon2010v2pd£2仇2[8]cNcERT,cc2010年中国互联网网络安全工作报告【EB/OL】h“p://wwwcengc仉JserFile虾il以010annual%20ropon4pd£2叭O[9]w砥chardstevensTcP/IP详解卷1:协议『M1北京机械工业出版社,2000stevens[10】wRichardTcPⅡP详解卷3:TcP事务协议,HTT只NNTP和LNIx域协议[M]北京机械工业出版社2000[11]RFieldl”g.JGenys.JMo呲HypenextTr珧ferProtocol~H兀P『11[EB/0L]hnp:∥、v”vw3org伊rotocols脓2616厅托2616h叫,1999[12】严承web服务器安全监测系统的研究与开发『D]长沙:中南大学2010年5月【13]刘奔群搜索引擎技术基础【M]北京:清华大学出版社2010HTTPs协te[14]MechanjsmManagemem2012『EB,OLlh“p∥wwwr丘-editoLo咖&厅托6265Rt[15]RFc3548一TheBasel6,Base32,andBase64D砒aEncodlngs2012[EB/OL]hnp:/,、、wwfaqso咖盘s厅觅3548html,2012【16]单国栋,戴英侠t王航计算机漏洞分类研究[J】计算机工程2002,28(1o)3—6[17】沈寿忠基于网络爬虫的sQL注入与xss漏洞挖掘『D1.西安电子科技大学硕士论文.2009【18]赵亭,陆余良等基于表单爬虫的Ⅵ,eb漏洞探测[J】.计算机工程,2008,34r91:186-1882】5[19]sconMeye皓.E髓ct眦c++,T11irdEdi廿on[M]侯捷译电子工业出版社,2006硕士学位论文参考文献[20]赵静使用Radon甜Appscan保证web应用的安全性第1部分:Ⅵ,eb安全与RmionalAppscall入门[EB/0L】hitp:/^vwⅥ1bmcoI州developerwork“cn,rational/pcn—appsc丑n】,2007[21】孙听使用RationalAppscaIl保证Ⅵ,eb应用的安全性,第2部分:使用Rati小n副Appscan应对w曲应用攻击[EB/OL]h郇//nwwlbmcorr埘evelope州orks/c“r缸ional/}cn-8ppscatl2,2007[22】丁妮web应用安全研究[M]南京:南京信息工程大学.2007[23】郑光年web安全检测技术研究与方案设计【D]北京:北京邮电大学,2叭0年6月【24]Dafyddstun砌MarcusPinto黑客攻防技术宝典:web实战篇fMl北京:人民龆宅出版社,2009[25]邓巍巍跨站点脚本技术的成困与防街【J】技术研究与应用,2007.09:27—30[26]JererniahGrossman,Roben“Rsnake”Hansen,PetkocrosssyngressPublishing,Incsitescrl口tingAnacks:xssEoploiBandDefcnse[Ml【EB,oL],【27]cross-sitesc“Ptingh却∥en谢咖e池or∥wlki,cmss-site_sc邱t吨/2010一04[28]cross-sitesc^ptl“gwebApplicanonsecudtyconsonium(200s)Retievedon2008一05‘28[EB,OL]hnp:Ⅳu^V砒web印pseco‘g,pr叫ects仙re“classes,cross·sl‘e-scr卸ingsh【mI,2012[29]沈寿忠基于网络爬虫的sQL注入与xss漏洞挖掘『D】西安:西安电子科技大学,2009年1月口0rxss(crosssitescn’pnn由cheetshe毗”[EB/OL]mttp,mackerso唱,xsshtml[31]邱杰勇跨站脚本攻击与防御技术研究[D]北京:北京交通大学2叭0年7月f32】DocumentO巧enModelh婶:/knwik呐edia。r咖lkl巾ocumenI-oqecI-Model口3]Je缶。yRjch把Lwindows核心编程【M]北京清华大学出版社口4]Justincl灯kesQL注八攻击与防御[M】北京:清华大学出版社口5】check埘thAcune氐webxvuInerabijItyscanner[EB/OLJht[p^+ww砒ac如encom,Ⅵllllerabilitv—sc蛐e“口6]刘勃范欣周荷琴基于cVE标准的漏洞库设计Cc】第十二届电子对抗学术年会.2001:170.175[37]Nil(【o[EB/OL】,ht币:/,wW帆cinnet.2012口8]P哪sProxy【EB,OL],h“p:Ⅳu_wwparosProxyo唱.2叭2口9]libcurl-t11emultiprotocol矗leⅡ躅sfer1bcun/2012libraryIEB,0L】.hnp:Ⅳcurlh“xse,l参考文献[40】HP、vebInspectasoRwareDmasheet[EB/OL]HPwebInspectso胁areDmsheetwⅥvwatcbcomno/nkmgLphp?id275,2012[4I】NHsparkercon瑚uni‘y[EB/OL],hnps:,/ne‘sparkeLzendeskco州.2叭2【42】Hul-zho“gEv村u砒ionshi,Bochen,L1ngYu.AnmyslsofⅦ,ebsecuri【ycomprehensiVeTools[c]secondImemationalconferenceonNetwofkssecllrityWirelessCommunic乱lollsand1hstedComputiIl出2010[43许治坤,王伟,郭添森等网络渗透技术[M】北京:电子工业出版社,2005【44】郑理华w曲应用安全测试评估系统的研究与实现【D1长沙:国防科学技术大学2005【45]tPieⅡaszekandcV珀denBo唱hestn“gDefendi“gag越nstProceedmgsI币ectionAttackst}lrou曲context—sensjtiveEvmu砒10n[c]of血e8thIntem乱lonalSympo蛄umonRecemAdvanceslnImmslonDetenlon(RAlD),2005:124-145[46]蒋继娅.刘彤,王树威web应用中的sQL注入攻击与防护方案研究[J】计算机安全.2008.0509.12[47】张楠,张振国基于规则的检测sQL注入攻击方法的研究[J】陕西科技大学学报自然科学版,2007,25(02):121_123.132[48】陈小兵.张汉煜,骆力明等sQL注入攻击及其防范检测技术研究[J]计算机工程与应用.2007,43r11)150.152,203[49]Je箭eyEFF眦乩精通正则表达式[M】北京:电子工业出版社.2005[50]王功明,吴华瑞,赵春江等正则表达式在电子政务客户端校验中的应用[J】计算机工程2007,33(091[51]wAsc269.271cLAssIFIcATIONV20THREAT『EB/O¨[EB/oL】HTTP:∥WWWWEBAPPSEC[52】web0RG2012Ap曲砒lonsec岬’ysca肌erEvalu甜ionc^teiah仲:Ⅳwuwweb印pseco叫2叭2[53]王丰辉漏洞相关技术研究[D]北京:北京邮电大学2006年7月【541Doro吐wEDerIrI洫g.c‘弹tog‘aphandDg缸sccu眦y【M】BoslonMA.usA:Add】son-WeskyLongmanPublishlng[55】MBlshopandDBaileHAc^tjc甜an出ysisonofⅦlnerablli‘y诅xonomjesProceedlngsoftheNISTappearsasInvit札lon削WorkshopVulnerabj】itles.July1996,A}soComputerScience,UmveHltyofTechnic柚R印on96·ll,D印anInemofC出lfomia甜Davls[56]De、da亡【aAkhaue,AdamSecun【yBanhetcTowardsaFo丌n副Found缸lonof、№b201023rdIEEEComputerSecurltyFound越ionsSymposi岫Unjversityof硕士学位论文参考文献Call±omla,Berkeley[57]Inc,“cross·domampo】jcynlespeci6catlon.”[EB/OL]Available:hnp:∥Ⅶ州adobeco州devne“扒icles止mssdomal“policynle8pecht训,2008[58]stamm,’.ContentsecuⅢypolic扩[EB/OL]Available:https:Ⅳwlkimozlllaor∥sec埘ity,csP/spec,2009[59]AppleInc,’Remotescripti“gwithIFRAME,一[EB/OL]AVailable:httpⅣdevelopeL8ppleco“intem副webconten“lframe}l廿nl,2012[60]DanielJackson,sof【、vareAbstractIons:Logjc.Langu89e,andAnalysis【M】TheMITPress2006『611冯国良动态网络安全模型的设计与应用[J]广西民族师范学2010,(03)[62】纪泳Tcp九p协议安全分析[J]网络安全技术与应用,2004,(08)硕士学位论文致谢致谢时间如白驹过隙,三年的研究生学习转眼之间就要结束了。在研究生生涯当中,首先要感谢的是导师王伟平教授。在导师的精心指导下,我完成了课题的调研、研发以及论文撰写,其中每个环节都倾注了导师大量的心血。王老师知识渊博、治学严谨,使我受益匪浅。在三年研究生学习期间,导师在学习和工作上都给予了我很大的帮助,值此论文完成之际,首先要对王老师表示最衷心的谢意。感谢王建新教授、朱虹老师,您们对课题的研究工作提出了许多宝贵的意见。另外,还要感谢课题组的所有同学们,他们是贺永佳,米昂,梁文员,宋良梁,桂立振,吴伟。在整个课题项目的研究过程中,大家一起学习、共同努力,完成了课题组既定目标,同时他们也对我的课题研究给予了大量宝贵的意见和建议,对我的论文撰写提供了很多有参考价值的帮助。感谢实验室的所有同学们,戴龙泉,魏珊,孙杰英.李浩,费柳风等,三年来大家共同努力、互相帮助和学习,愉快地度过了研究生生活。感谢家人和亲爱的朋友们,谢谢你们一直以来的默默支持。最后感谢在百忙之中参与论文审稿工作的各位老师,谢谢你们的建议和意见!硕士学位论文攻读学位期间主要的研究成果攻读学位期间主要的研究成果[1]网站安全监测系统v1O国家版权局计算机软件著作权登记号:2009sR050207200910[2】web网站安全评测及防护平台2010年度米塔尔学生创新创业项目:10MYl6面向Web服务安全的漏洞扫描器的设计与实现

作者:

学位授予单位:

黄从韬中南大学

本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y2199733.aspx

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务