版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-12-基于网络爬虫的高校Web应用漏洞检测与分析摘要在如今这个网络飞速发展的时代,网络信息安全问题受到社会极高的重视。在其中,高校网络安全又尤其引人关注。对于高校而言,要实现信息化和现代化网络的发展不受到影响,就必须要重视网络安全问题。我认为高校网络安全的重要作用,是能提高系统建设水平,并且能够进一步提高对数据安全性的管理,关键还有他可以拉近师生之间的距离。高校校园网在方便了师生的日常工作与学习的同时,也由于校园网本身拥有共享性、交互性、接触性等特点而频繁遭受攻击,已经严重影响到学校和师生的利益,所以这就让如何保证网络通畅、信息完整显得尤为重要。因此,本文将通过网络爬虫技术,对出现较多的常见漏洞进行特征提取和分析并进行统计,制定合适的检测方法并应用于高校网络中。关键字:网络安全;网络爬虫;Web漏洞目录TOC\o"1-3"\h\u第1章绪论 11.1课题设计的背景、意义及目的 11.1.1课题背景和意义 11.1.2设计目的 11.2课题现状 11.2.1爬虫技术现状 11.2.2web应用漏洞检测现状 21.3设计内容 31.4本章小结 3第2章需求分析 4第3章核心技术介绍 53.1网络爬虫技术的原理 53.2WEB漏洞介绍 63.2.1SQL注入漏洞 63.2.2XSS漏洞 73.3漏洞扫描技术介绍 83.4本章小结 9第4章详细设计 104.1爬虫主体部分设计 104.2.1url管理器 104.2.1网页下载器 114.2.1爬虫主函数部分 124.2漏洞扫描检测相关设计 134.2.1插件系统 134.2.2插件系统的调用 134.2.3sql注入漏洞检测 144.2.4sql注入检测脚本融入插件系统 144.2.5e-mail扫描插件 154.2.6XSS漏洞检测插件 154.2.7web指纹识别扫描器 164.2.8端口扫描与系统指纹分析 174.2.9敏感目录爆破 184.2.10CDN检测 194.2.11自动生成网页报告 194.3本章小结 19第5章漏洞检测程序运行测试 205.1程序的运行环境 205.2程序所完成的工作 205.3程序的运行结果 205.4本章小结 22结论 23参考文献 24第1章绪论1.1课题设计的背景、意义及目的1.1.1课题背景及意义:随着现代科技的发展,网络普及已经是当今社会的一种现状,中国的信息化网络也处于一个重要的变革阶段,但在网络极大的方便人们的同时,也会存在一些安全漏洞。现在各大高校都拥有自己独具特色的校园网站和师生数据库,而web漏洞会造成这些隐私信息的泄露,导致教师与学生的学习和工作面临着巨大的风险。Python脚本语言,由于其具有优秀的解释性、交互性以及运用方便等特性,使其成为如今应用十分广泛的程序设计语言。也由于python语言拥有独特的结构化代码在大大提高程序开发维护的效率的同时,又具有良好的可读性,因此成为了编程初学者的不二选择,由此让python脚本语言迅速发展成为了热门程序开发语言之一。使用Python脚本语言所编写的网络爬虫设计具有独特的优势,Scraping自动爬虫框架就是基于Python脚本语言开发出来并封装的,利用此框架可以实现定向的数据爬取任务。在实际运行过程中,想要运用此自动爬虫框架来快速获取所需要的准确网页数据,就只需要提前填入设计好的爬虫规则,便可以执行。1.1.2设计目的:Web应用安全问题日益恶化,当务之急是为其制定一个尽可能完善的安全策略,使其能够进行及时有效的安全管理。在信息安全技术发展迅速的当下,web漏洞扫描技术在信息安全中的地位正日益高升,其中,网络爬虫技术是至关重要的一部分。网络爬虫作为分析网络数据的得力工具,也一直在不断发展着,越来越多的网络安全技术人员不断加紧摸索着网络爬虫技术如何应用到web漏洞扫描中,这样能够在拓新发展网络爬虫技术应用的同时,也能使web应用安全技术同步进展。1.2课题现状1.2.1爬虫技术现状互联网承载着庞大的数据信息和无数网页,当我们需要从中查询我们需要的、感兴趣的信息时,我们不可能只依靠眼睛和双手来反复查看每个网页,因此我们需要能够帮助我们快速获取网页内容并能按照需求提取信息的程序,也就是网络爬虫。网络爬虫技术是搜索引擎的核心技术之一,在1993年第一个网络爬虫诞生以来经历了二十多年的发展,这项技术也越来越开发应用于多种领域。如今已是AJAX/Web2.0的流行时期,已然使用爬的方式已经无法解决抓取动态页面的问题,因此接下来所需开发的爬虫引擎必然是要基于驱动的。1.2.2web应用漏洞检测现状漏洞又被称为脆弱性,它是程序中存在的不符开发者、维护者本意的特性。如果有攻击者以漏洞作为突破点,便可以执行非法操作甚至获取一些敏感信息。Web应用攻击的主要来源是用户输入。互联网飞速发展的现在,web应用程序也已从开始的只提供静态资源,发展到现在的能够结合使用数据库与用户进行动态交互。由于Web应用程序是必须要接受用户输入的服务模式,因此而为攻击者提供了可乘之机,使攻击者可以发现并利用漏洞进行非法操作。随着近些年来网络层安全技术的发展,web应用程序漏洞也越来越受到人们的关注。对于web应用程序的漏洞扫描技术的,国内已经出现了很多大能进行了研究:①黄从韬曾经针对web应用漏洞的成因以及相应的检测方法做出了深入的探讨与研究,利用了漏洞发掘技术的不断更新变化的特点,设计出并实现了一种能够基于规则与插件的可扩展漏洞检测方案,此方案灵活应用了动态链接库技术,其通过对扫描插件的重新规划定义,实现了插件的扩展,并于此同时研发了编译码和http请求响应与解析等此类基础工具,大大方便了操作又提高了web应用程序漏洞扫描的检测效率。②孙晓飞曾发表过对于web应用漏洞分析与检测的研究,其研究了如何将网络爬虫对web网站的页面信息爬取融入到漏洞扫描系统的整体架构设计中,并且还运用了爬虫的多线程技术,在网络的爬虫率得到改善的同时,有采用漏洞检测插件化技术大大提高了它的可扩展性。如今,国内外都已有不少对于web应用漏洞的检测研究设计。Web应用漏洞检测大体上分为两种方式,一种是动态检测方式即黑盒检测,它通过获取程序的输入、输出等具体运行状况信息,对其进行分析检测,来查找应用程序中存在的安全隐患;另一种就是静态检测方式即白盒检测,它是通过对程序的源代码和程序的执行流程进行分析,以建立相应的数据模型,对此进行分析检测来发现程序中存在的漏洞。1.3设计内容本论文将使用python语言设计一种基于网络爬虫技术的web漏洞分析检测方案,以实现其对web应用程序扫描检测出SQL注入漏洞、跨站点脚本漏洞这两种web应用常见的漏洞。本设计的大致流程如下:(1)页面过滤:通过爬虫的自动化程序抓取页面,对其中所包含的web页面进行url提取。(2)url检测与去重:对从网页中所爬取出来的url进行检测匹配,提取其中的未进行漏洞检测的url加入队列,并将重复的url剔除,进行去重,以便执行下一步。(3)漏洞检测:将未检测且去重后的url从队列中提取出来,由已经编译好的漏洞检测程序对在url的参数部分进行参数变更,以进行漏洞检测,也就是对服务器进行模拟漏洞攻击。然后根据服务器返回的结果,来判断其中是否存在需要检测的某种漏洞。1.4本章小结本章主要介绍了基于网络爬虫的web漏洞检测技术对于网络安全的重要意义及web漏洞检测技术的现状,并简要介绍了本文的主要设计内容。
第2章需求分析据统计,截至2017年底时,我国就已经有526.06万个网站和2604亿个网页,而这只是距今三年多以前的数据,现在是网络飞速发展的时期,到现在我国到底有多少网站和网页,由于没有具体统计暂不可知,但可以想象出这个数字必然是极其庞大的。而随着这些网站网页呈指数增长的同时,也带来了管理方面的严峻挑战。如今人们在上网时,经常会看到很多带有虚假、色情、暴力的广告信息,这严重的影响着网民们的日常工作与学习,这其中有很多是攻击者利用网页的漏洞输入的。这种行为时刻影响着整个社会,给个人、公司与社会造成了严重的威胁。以某些即时消息应用程序为例,其平台每天都会有大量的用户访问,拥有极高的阅读量和发送量,这就使得用户的个人行为不当会被无数人传播,影响会被不断放大,成为集体性的社会行为,最终会形成舆论风暴。因此,对于一个这种类型的公司来讲,如何控制网络平台上的各种舆论消息,并对其进行疏导、化解以及事后处理是非常关键的。在这其中就会使用到爬虫技术,像是微博、微信、QQ这些国内知名的社交平台,一个完善的反爬虫机制是必须的,而且为了准确又高效的收集相关信息,也是需要应用爬虫技术的。在这个网络安全问题严峻的态势下,我们急需针对网络安全方面进行一系列的攻防演习,用以加强防范手段,例如在2016年时,我国就曾进行过“护网行动”,让网络安全防范意识深入人们的心中。本设计就是通过模拟漏洞攻击,来达到检测漏洞的目的。目前常见的web漏洞有SQL注入、跨站点脚本(XSS)、缓冲区溢出、cookies修改、上传漏洞、命令行注入(webshell)这几种。其中SQL注入漏洞是黑客对数据库进行入侵的常用攻击手段之一;XSS是经常在web应用中出现的一种漏洞,他能够让恶意web用户将恶意代码植入到供他人使用的页面中。本文将主要介绍这两种种漏洞。
第3章核心技术介绍3.1网络爬虫技术的原理网络爬虫本质上是一种能够自动下载网页数据并根据设定的规则采集筛选数据等功能的计算机程序,它也是搜索引擎用来抓取系统的重要部分,因此能够应用于各个领域的用途,比如网页开发、数据处理等等。在如今互联网数据不断增长的时代,网络爬虫技术能够很好的解决如何在互联网中获取指定信息的问题。在我们平时上网时都是使用浏览器在网络中进行查询信息,而爬虫就像是浏览器一样,对目标服务器发出请求信息,收到响应后再对其进行解析以获取所需要的信息。爬虫的类型可以根据其功能分为通用网络爬虫、聚焦网络爬虫、增量式网络爬虫和深层网络爬虫等。接下来对这几种爬虫类型进行较详细的介绍:(1)通用网络爬虫:此类型在根据url指向爬行的过程中,一般都会采用广度优先或深度优先策略,然后通过url补充到web中,每一级每一层的进行网页链接访问。此方式适用于对某单一信息的大范围搜索,通常是应用于大部分搜索引擎,也有一些大型的web服务商会需要应用此方式。通用网络爬虫所常用的两种策略:①广度优先策略(BFS):也可以将其称为宽度优先搜索策略或者横向优先搜索策略。广度优先策略在最初是将它作为一种利用图形的具有直观特点的搜索算法而被提出来的,可以说是将其看作像是树根一样的节点开始搜索,然后顺着树的宽度来将每一层的节点遍历,当整个树上存在的节点都遍历过后就会停止搜索。此策略一般都是使用open-closed表来实现的。接下来介绍一下广度优先策略的具体搜索流程:首先根据爬取得到的页面结构,将网页的所有站点依次划分为不同的层次,然后自上而下按照分好的顺序将每层都进行爬取。先将之前已经分好的上层的链接爬取,在把这一层次的网页数据全都爬取完成之后,再接着向下,对下一个已经划分好的层次进行爬取。BFS当然也是可以进行多线并行爬取的,如此做能过大大加快整个程序的工作速度,从而提升整体效率。这样就可以在较大的程度上提高网络爬虫系统爬取网站上的信息的效率,与此同时也可以对网络爬虫系统在爬取网页上的站点的深度进行人为地自定义和控制,从而能够避免网络爬虫系统由于太过深入网页当中,致使网络爬虫程序无法通过正常方式终止运行;②深度优先策略:在网络爬虫技术刚刚开始发展的时期,深度优先策略是最常用的策略,采用这种策略想要达到的结果,是要让网页中的站点的最底层中,没有重复url的网页。这种策略的运行方式,就是当网络爬虫爬取到一个html文件中的一个链接时,立刻对该链接指向的网页进行深度优先搜索,由此先建立一条完整的路径,在对网页中的其他链接继续爬取。总体来说,深度优先策略就是先沿着从网页中爬取解析的一个链接进入下一个链接,如此循环直到无法继续深入为止,形成一条由链接组成的线路,然后回到第一个链接所在的网页,再从中选择一个不与之前重复的链接,进行与先前一致的操作操作继续爬取,一直到第一个网页中已经没有其他可再进行爬取的链接,至此说明本次搜索已结束。深度优先策略最大的最明显的缺点就是如果爬取的网页节点结构太深的话,会造成爬取效率低下,资源浪费严重的问题。因此此方法适用于那些网页节点结构不太复杂不太深的网站。(2)聚焦网络爬虫:它是根据链接结构评价和内容评价,并按照设定的目标进行选择性爬去。使用这种方式进行查询时,它会将输入的查询词作为主题,所查找或下载的信息都是围绕着主题提取的。而在对链接进行评价的过程中,是需要运用半结构化的文档web页面的,并且会使用到PageRank算法。因此,建立语境图和引入增强学习都能够在使用聚焦网络爬虫方式时,有效的进行爬行策略制定。(3)增量式网络爬虫:使用此方式是根据网页更新频率的差别来制定不同的策略的一种爬虫策略,它会对已爬取过的网页采取增量式更新策略进行数据存储,按照网页更新频率进行爬取,也就是只会爬取刚刚更新的数据。这种策略相较于优先策略它能够避免浪费硬件、网络等资源,不会发生爬取大量重复信息,导致系统利用效率下降的状况。(4)深层网络爬虫:经过静态链接和传统的搜索引擎得到的一般都是表层网页信息,而利用深层网络爬虫方式可以获取深层次网页的数据。使用深层网络爬虫进行爬取时,首先会根据领域知识来进行表单填写,然后再执行语义分析以此获取关键词,最后提交关键词之后就能够获取web页面。也可以进行根据网络结构的分析来填写表单,然后使用DOM树的形式来表示html网页。3.2WEB漏洞介绍3.2.1SQL注入漏洞:sql注入漏洞一种最常见且危害甚大的漏洞。Web应用为用户服务的流程一般都是通过利用数据库实现的,web应用程序收到用户的输入后,将其作为数据项或者条件项来嵌入sql语句中,然后用户就可以通过这种方式执行sql语句来对数据库进行各种操作。因为SQL是一种解释性语言,由于其在执行中的机器代码是由SQL解释器生成,这就让一些承载SQL程序片段的攻击荷载未经处理就能被解释为程序指令,从而使得程序的逻辑发生变化以达到攻击者的目的。由此可以大致总结此漏洞的形成原因有两点:①程序员在对程序与数据库交互时的处理,是用字符串拼接的方式构造的SQL语句,采用此方法构造的SQL语句安全性不足;②没有对用户可以操控的可变更参数进行细致的筛选过滤,就将其纳入到SQL语句中,也就是安全防范意识不足。对付这种常见的漏洞的方法也是有很多的:①使用自带的设置好的预编译来处理输入的参数;②仔细检测用户所输入的sql关键词,并对这些关键词进行拦截、过滤或转义等操作;③限制用户的操作权限,使用户对于每种操作都只能使用仅能完成此操作的最低权限账号;④制定计划,周期地审计数据库的执行日志,检测其中是否有异常的SQL语句执行过;⑤删掉一些不必要的数据库功能,以防止被攻击者利用。3.2.2XSS漏洞:XSS漏洞即跨站脚本漏洞,这是一种利用浏览器的一些特性以程序的使用者为目标的攻击漏洞。因为web应用程序的服务器是用有限的和可控制的方式进行的,而且客户端的数据极其庞大,还可以应用多种浏览器,这就导致会有大量的攻击向量针对客户端。XSS漏洞的产生原因是web应用对于用户输入的管理不严格,导致攻击者利用这一点将恶意代码注入网页中,使其呈现给其他访问用户并被触发执行。当攻击成功,攻击者就可以获得更高的权限以进行各种非法操作。XSS跨站脚本攻击有三种类型:①反射式XSS,使用这种方式的攻击者会利用邮件、即时通信等途径将带有恶意攻击的url发送给被害者,一旦被害者点击触发,它就会立刻通过服务器漏洞为被害者传送带有攻击脚本的页面,并在其浏览器中运行,使被害者受到XSS攻击;②存储式XSS,使用这种方式的攻击者首先会将攻击脚本上传到web应用程序中的一个页面里,等待被害者访问。当被害者访问该页面后,攻击脚本就会立刻执行,使被害者受到攻击。如果攻击者上传的网页是需要用户认证登录的,会造成用户会话身份信息泄露的风险。由于此方式不需要攻击者主动参与过多,因此很难防范,威胁甚大;③DOM式XSS,这种攻击方式是攻击者使用JavaScript脚本动态创建并上传至网页中的,被害者访问后,会由用户本地的JavaScript脚本来触发攻击。此方法的隐蔽性很高,很难被发现,只能通过人工手动发现。关于XSS漏洞的防御手段:①利用转义函数,比如htmlentities()函数,可以用来转义页面的文本;②添加httponly,可以在cookie里添加httponly属性,这样能够对保护用户cookie起到作用,能够降低被XSS攻击的损失;③基于黑名单、白名单过滤,基于白名单的过滤效果会更好一些,可以直接忽略白名单以外的用户的输入,但是关键点是要如何在保证用户体验的同时建立白名单。3.3漏洞扫描技术介绍漏洞扫描技术是一种用于主动防御的重要网络安全技术,与防火墙和入侵检测系统配合,就能够达到一个很高的网络安全防护水平。漏洞扫描的工作过程是通过模仿黑客攻击,在正常http请求中植入攻击脚本,由此来通过各种技术检测,将测试结果与受到攻击的服务器返回结果对比来判断漏洞的类型。相比于防火墙和入侵检测系统,漏洞扫描能够更早更准确的找出问题所在,针对发现的安全漏洞,可以提前做好预防措施,降低网络安全风险。(1)漏洞扫描的检测技术可以大致分为四种:①基于主机的检测技术,这种技术是扫描器与应用程序处于同一宿主环境中,扫描器中已经设置了应用程序的安全规范,其通过扫描服务器的权限、配置以及运行状况等,与自身设置的安全规范进行对比,就可以检测出其中的问题所在。此种技术的缺点就是由于它与应用程序相关联,升级更新很繁琐、复杂。②基于应用的检测技术,这种技术采用的是一种被动的且不会使目标发生破坏的检测方式,它是通过对应用软件包的设置进行一系列检测,来检测出其中的漏洞。③基于目标的漏洞检测技术,它也是同样采用了被动的但不会对目标造成破坏的检测方式,它是通过检测数据库、注册账号等这一类系统属性和文件属性的来进行判断的。它是通过使用消息文摘算法对文件加密数进行检测的,就这样不停地检测文件和属性,将检测结果与原来的检测结果相对比,如果发生变化,就说明出现了漏洞。④基于网络的检测技术,这种方式采用的是一种积极的且不会对目标进行破坏的检测方式,扫描器与应用程序不处于同一宿主环境中,其通过网络来交流通信,扫描器会发送模拟攻击脚本,接受服务器返回的信息并进行检测,以此判断是否有漏洞产生。在这四种技术当中,最适用于web应用漏洞检测的技术是基于主机的检测技术和基于网络的检测技术。将两种技术进行比较,基于主机的检测技术的优点是它的检测范围更大、占用网络带宽小、系统集中化管理部署配置,不足的地方是第一次设置部署时间较长,可扩展性差,扫描工具自身的安全问题会影响检测结果等;再来看看基于网络的检测技术,他的优点是可扩展性好、易于维护,不会直接接触目标,安全性高。缺点就是占用带宽大,可能会影响目标的正常运行,而且检测范围小、扫描覆盖率低。(2)基于网络的web应用漏洞扫描器的工作流程:①首先要以域名或者IP的方式确定要扫描的目标;②编写合适的爬虫程序爬取网站的页面信息,然后建立起网站拓扑,用来提取用户与网站之间的动态交互点信息;③根据想要检测的漏洞的特征,创建模拟攻击脚本;④将爬虫发现的动态交互点信息全部提取出来,然后用http/https的请求方式向目标web应用程序发送攻击脚本;⑤接下来就可以等待web应用程序的响应,根据响应的内容可以判断出其中是否有该种漏洞,但是不论发现还是未发现漏洞,都会在本次动态交互点检测结束后回到第三步,继续对其他的动态交互点进行检测。如果发现了疑似该种漏洞的情况,则会根据响应信息的内容进行调整,调整好新的攻击脚本用来绕过目标的网络防护,然后回到第四步继续进行检测;⑥按照上述步骤不断重复检测各种类型的漏洞,一直到将整个web应用程序的动态交互点全部检测完,然后统计结果用来生成检测报告。3.4本章小结本章主要介绍了网络爬虫技术的原理以及爬虫技术的分类,介绍了各种类型web漏洞的产生原因和一些防范措施,并且对漏洞扫描技术进行了详细的分析讲解。
第4章详细设计4.1爬虫主体部分设计本设计的爬虫模块采用的是多线程的并行爬虫,采用了Python语言中的threading模块来进行搭建。多线程的优点在于能够快速地获取网页链接,还可以提前设置所启用的线程数量,使每一个线程都能单独运行。图4.1多线程代码4.1.1url管理器编写url管理器的任务是将已经爬取过的url存储在已爬取集合中,将未爬取过的url存储在未爬取集合中,将两种url区分开,以防止发生将爬取过的url再次进行爬取,造成资源浪费的状况。Url管理器代码编写如下:图4.2url管理器代码Url管理器的工作过程:将刚刚获取的url存放入等待爬取的集合中,然后判断正在等待添加入集合的url是否已在容器中,再获取等待爬取的url。最后一步是由url管理器来对等待爬取的url进行判断是否已爬取,若已爬取则将其存放到已爬取的集合里。4.1.2网页下载器网页下载器的作用是,通过网络请求的方式,将通过网络爬虫从互联网上爬取到的url所指向的网页下载到本地。图4.3网页下载器工作流程图4.4网页下载器代码Python有两种网页下载器,一种是Python官方提供的urllib基础模块,另一种是第三方提供的requests模块,而我所采用的是功能更强大的第三方requests模块。两中模块的区别:①首先是两种模块的构建参数方式不同,urllib要先用urlencode方法对编码进行预处理,将其中的字典型请求转换成URL编码,然后通过urlopen方式来访问处理后的url,对读取出的返回数据用read和decode方法进行解码来获得字符串;requests则直接用get方法,无需提前进行处理,读取的返回数据也无需解码,直接用text方法来获得字符串。也可使用json方法将返回数据处理转换为字典型。②两种模块的连接的方式也不相同,采用urllib模块,返回数据的头部信息connection会处于close状态,这表示在每次请求完成后都会将socket通道关闭;而采用requests模块,返回数据的头部信息connection则是处于keep-alive状态,这表示每次请求都是使用同一个socket通道,这样会减少资源的消耗。③两者对响应的处理方式不同,urllib模块在对消息的头部、响应状态码和响应正文进行处理时,是采用info()、getcode()和read()方法的;而requests模块在对这些进行处理时,是采用headers、status_code和text方法的,这样能够更直观、更便于理解和使用。图4.5get请求页面,返回页面文本图4.6post请求页面,返回页面文本4.1.3爬虫主函数部分爬虫程序首先通过craw()调用方法来进入目标网站,通过多线程方式对目标网站的源码进行爬取,并将其下载到本地,然后再采用_parse方法调用beautifulsoup来对刚刚下载下来的源码进行解析,随后再将其解析出的url导入url管理器中,让url管理器进行后续工作。如此循环,直到将网站的数据全部爬取完,爬虫程序才停止运行。图4.7爬虫主函数代码4.2漏洞扫描检测相关设计4.2.1插件系统插件系统的运行需要先进行几方面的操作:①首先要获取插件,要通过对目录中的一个.py文件进行扫描来获得;②然后就可以将插件目录加入到sys.path环境变量中;③爬虫程序将扫描处理好的url以及网页的源码一同发送给插件;④插件进行运转并工作,当工作完成后就会将主动权归还给扫描器。图4.8插件系统代码4.2.2插件系统的调用因为插件需要传输url和网页的源码这几个参数,所以要在爬虫主体部分开头添加importplugin,然后在结尾处添加图4.9中所示的这几条代码。disallow表示不允许的插件列表。图4.9插件系统调用代码4.2.3sql注入漏洞检测(1)首先用字典来存储数据库特征:图4.10sql注入漏洞数据库特征(2)编写正则语句,通过正则语句来判断是属于哪个数据库。图4.11正则(3)采用报错语句BOOLEAN_TESTS=("AND%d=%d","ORNOT(%d=%d)")对返回的正确内容与错误内容进行比较。4.2.4sql注入检测脚本融入插件系统只要在已完成的sql注入漏洞检测脚本中添加并实现classspider与defrun(self,url,html),就可以让扫描器运行了。图4.12sql注入漏洞检测插件代码4.2.5e-mail扫描插件e-mail扫描插件,用来扫描网页中的所有e-mail邮件。利用插件系统会传输网页源码的工作过程,采用([\w-]+@[\w-]+\.[\w-]+)+正则表达式来扫描出所有邮件。图4.13e-mail插件代码4.2.6XSS漏洞检测插件由于XSS的原理就是将代码作为html执行,所以首先要创建一个文本文档,在文档中编辑XSS漏洞的检测原理,也就是将XSS的payload添加到url参数中,再将url的源码与其进行对比,查找是否有这种参数存在于url中,若存在就说明该url有XSS漏洞。接下来要编写一个用来提取url参数的函数,这个函数的返回数据是一个元组,他会将每一个参数都用my_Payload来标记。最后还需要一段代码用来读取已经编辑好的XSS检测原理文件。图4.14url参数提取图4.15读取检测文件4.2.7web指纹识别扫描器web指纹识别,也就是CMS识别,中文全称是网站内容管理系统。CMS识别的原理是通过一些CMS的固有特性(应用程序所含有的特征代码,即指纹)来判断CMS的类型。指纹识别的作用,就是识别出CMS或web容器后,才能查找出相关漏洞。在本次设计中我所使用的识别方法是MD5识别和正则表达式识别,就是采用特殊的文件路径来访问网站,从而获取该文件的中用MD5或正则表达式方式匹配成功的关键词,也说明了该网站的指纹就是这个CMS。我将指纹保存为了json格式,此处拿出一部分指纹演示。{"url":"/install/","re":"aspcms","name":"AspCMS","md5":""},{"url":"/chs/images/favicon.ico","re":"","name":"VOS3000","md5":"ec48166d7be37e8d50b132b07fdd2af6"}由于指纹数量较多,要访问的网页也会很多,这样一来单步速度很慢,所以进行优化使用多线程。我采用了run方法来创建线程,代码如下,图4.16指纹多线程4.2.8端口扫描与系统指纹分析端口扫描是对攻击目标进行的信息搜集的重要步骤,通过端口扫描可以知晓目标开放的服务,并且根据其开放的服务来判断到其可能存在的漏洞。对于查找对应端口的指纹的方法,我采用了一个简单但容错率低的方式,就是每个端口都对应一个服务,这样若扫描到一个端口,其对应的服务也会是那个。为此收集的端口服务指纹:PORT={80:"web",8080:"web",3311:"kangle",3312:"kangle",3389:"mstsc",4440:"rundeck",5672:"rabbitMQ",5900:"vnc",6082:"varnish",7001:"weblogic",8161:"activeMQ",8649:"ganglia",9000:"fastcgi",9090:"ibm",9200:"elasticsearch",9300:"elasticsearch",9999:"amg",10050:"zabbix",11211:"memcache",27017:"mongodb",28017:"mondodb",3777:"dahuajiankong",50000:"sapnetweaver",50060:"hadoop",50070:"hadoop",21:"ftp",22:"ssh",23:"telnet",25:"smtp",53:"dns",123:"ntp",161:"snmp",8161:"snmp",162:"snmp",389:"ldap",443:"ssl",512:"rlogin",513:"rlogin",873:"rsync",1433:"mssql",1080:"socks",1521:"oracle",1900:"bes",2049:"nfs",2601:"zebra",2604:"zebra",2082:"cpanle",2083:"cpanle",3128:"squid",3312:"squid",3306:"mysql",4899:"radmin",8834:'nessus',4848:'glashfish'}接下来,先用队列编入要检测的端口,然后创建一个线程函数,让每个线程都调用这段函数(图4.17),此函数是用来读取队列端口的,并进行扫描。图4.17读取队列中的端口至此,程序还只能检测单独IP端口的开放状况,由于最后要得到的结果是域名,所以需要再编写一个能将域名对应的IP地址获取到的函数。这里我采用了urlparse模块来对目标url进行解析,通过解析能够获得netloc的值,最后再用socket.gethostbyname函数来获得域名的对应的IP地址。图4.18获取域名IP4.2.9敏感目录爆破敏感目录爆破,就是通过字典来爆破并获取网站的敏感目录结构。采用调用字典访问url的方式,来观察网页的回应状态,以此判断是否存在该敏感目录。首先创建一个文本文档,编入所要查找的url目录字典,再编写将字典读取到队列中并初始化数值的代码。图4.19装载字典文件然后关于检测网页状态部分,我采用了head方法访问网页头,同时也能够提升了检测网站的速度。再使用线程函数来调取队列的内容,并进行循环访问。图4.20从队列提取数据4.2.10CDN检测CDN即内容分发网络,英文全称ContentDeliveryNetwork。其工作原理就是在用户和服务器之间增加一层Cache层,这样用户在请求数据时,请求会被引导到Cache层上,然后CDN系统根据网络的负载状况、用户的与各个服务器之间的距离以及服务器响应的时间等综合信息,选取离用户最近的服务节点,向用户返回数据。这样做的目的是让用户能够以最短的距离和最短的时间取得信息,并且还能同时解决Internet网络拥挤的问题,以此降低网络访问时间。通过检测网站是否使用CDN来判断其是否为源站。先用url=urlparse.urlparse(url).netloc解析域名,然后对网页进行访问,这样就能够获取到token,再组合POST包所用的数据。图4.21组合数据然后再发送两个POST包,其中最后一个的返回信息就是所需要的数据了。这些数据可以用正则表达式匹配得出,我选择的是用json方式来解析。其中,ans=list(set(ips))是用来过滤重复的IP的。4.2.11自动生成网页报告由于信息是输出在控制台上,显示空间有限,这里需要一个将数据信息输出到文件中存储下来的方法,也就是网页报告,它可以将输出结果保存为一个html文件。所需的定义函数如下:classoutputerdefadd(self,key,data):#通过字典方式添加数据defadd_list(self,key,data):#通过列表方式添加数据defget(self,key):#获取某个数据defshow(self):#显示加入的数据defbuild_html(self,name):#生成网页name为保存的文件名4.3本章小结本章节中介绍了设计的具体设计内容,将其分为爬虫主体函数部分和其他的插件函数部分两部分来讲述。其中插件部分又详细的介绍了SQL注入
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省房屋买卖合同违约责任
- 自然人借款合同的风险防范
- 二手房屋买卖合同协议书
- 中小企业借款还款协议
- 生产分包合同版
- 专业木工分包劳务合同
- 五金附件采购合同
- 网站设计合同文本
- 三农创新创业服务手册
- 健康口腔护理的重要性
- 军队文职-政治理论-政治-马克思主义基本原理练习一
- 南京联合体2022-2023学年九年级上学期期中考试化学试题(含答案)
- 电子商务网络商务信息采集与处理考核试题及答案
- SA8000-2014社会责任绩效委员会SPT组织架构、职责和定期检讨及评审会议记录
- 搅拌釜式反应器搅拌釜式反应器课件
- 北京信息科技大学高等数学期末考试试卷(含答案)
- 化工设计练习题
- 招生动员课件
- 大学生职业生涯规划咨询案例分析
- 年处理吨玄参提取车间初步设计
- 年产2.03万吨高端精细化学品及5G新材料项目环评报告书
评论
0/150
提交评论