




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
相关技术介绍2.1Web常见漏洞Web漏洞是指在Web应用程序中(包括数据库,中间件等)存在的未被发现或未被修复的缺陷,这些漏洞可能是由于设计上的缺陷、不安全编程、配置错误或未及时修补的已知问题而导致的。图2-1展示了由开放式Web应用程序安全项目(OWASP)2021年发布的十大最严重的Web应用程序安全风险REF_Ref5382\r\h[18](OWASPTOP10),其中的SQL注入漏洞相比于2017年降低了三位,XSS跨站脚本攻击在2017年在第七位,2021年中,XSS跨站脚本攻击和SQL注入漏洞都是属于注入类漏洞,这两个漏洞依然可以对Web应用程序造成严重的影响。图2-12021年OWASP发布的OWASPTOP10本文的主要研究是针对注入类型的漏洞。注入漏洞是指用户输入的数据被Web应用程序解析成了代码,即,用户输入的数据就是代码,改变了原本执行代码的意思。注入攻击可能会导致数据泄露、蠕虫攻击和拒绝服务攻击等。注入漏洞的主要原因是对用户输入的数据太过于信任,没有进行过滤用户的恶意请求。本文主要以XSS跨站脚本攻击和SQL注入来进行研究。2.1.1SQL注入攻击漏洞SQL注入是网站向数据库查询信息时,其中的URL参数被后端获取,并对这些参数拼接到SQL语句中;然后,SQL语句对数据库进行查询。如果这些参数用户可控并且没有对这些参数进行过滤,用户可能会将恶意SQL语句输入到参数中,后端在进行解析并且查询。其中常见的SQL注入危害有:获取数据库中的敏感信息、伪造用户登录和获取计算机权限等。如果服务器的数据库用户权限是DBA,将具有破坏性比如进行删除整个数据库等。以下用PHP代码举例来介绍SQL注入的形成原理:$query="selectid,emailfrommemberwhereusername='$_GET[name]'";假设用户请求http://xxx.xxx.xxx/sql.php?name=1,上面的PHP代码会接收name这个参数的值并拼接在SQL语句里,然后向数据库进行查询。如果后端没有进行对用户传入的值进行过滤,用户传入的数据可能会变成代码进行数据库查询。例如用户输入http://xxx.xxx.xxx/sql.php?name=1’or1=1--数据库将会查询所有的用户信息,这样子就造成了敏感信息泄露。用户输入’号来分割username的值,后面的or1=1代表永真,--注释了多余的‘号。这样这个SQL语句代表着永真查询。同理如果是在登录框用’or1=1--这个万能语句即可造成伪造用户登录。常见的SQL注入类型分为字符型注入和数字型注入。这两个的区别是字符型注入要闭合符号,数字型注入不用闭合。从常见的注入方式来看又分为两大类,分别是报错注入和无显盲注。下面进行详细说明:报错注入是指用户故意输入错误的信息让数据库解析,数据库返回错误的信息到前端,即可证明存在报错注入。通过指定函数来运行SQL语句,数据库就会报错并返回需要的数据到前端。无显注入又分为布尔盲注和时间盲注,这两个适用于在没有回显的情况下使用。具体来说,布尔盲注主要是构造永真语句和永假语句,然后观察前端这两个页面是否一样,如果不一样则存在漏洞。时间盲注主要通过使用sleep函数来判断响应的时间差别,如果正常请求在几毫秒就响应了,使用了时间盲注语句后明显发现页面响应时间变长,则存在时间盲注。在2021年的OWASPTOP10中,SQL注入攻击排名第三,但是目前有免费的SQL注入工具和简单的使用教程,SQL注入还有极大的破坏性,这对于企业来说仍然是一个巨大的威胁。2.1.2XSS跨站脚本攻击漏洞XSS跨站脚本攻击漏洞和SQL注入攻击很像,同样都是用户输入的数据被当作代码解析并运行,用户通常输入恶意的JS代码,服务器解析后返回前端,然后用户的JS代码就会被注入到HTML里然后被执行。同样是服务器没有对用户输入的数据进行过滤从而造成的注入。用户在访问被植入XSS恶意代码的网页时,可能会被劫持账号、盗取个人信息、进行XSS蠕虫攻击等操作,同样也可以把当前的页面覆盖掉换成非法信息或者广告让用户访问。XSS根据攻击可以分为三种类型:反射型XSS、存储型XSS和DOM型XSS。下面进行详细说明:反射型XSS是指攻击者构造一个包含恶意JS脚本的URL,当用户点击恶意URL时,恶意JS脚本会被浏览器执行。这类攻击需要与用户的交互,攻击者通过诱导用户点击恶意URL来实现攻击。存储型XSS是指攻击者将恶意JS脚本存储到目标网站的数据库中。当其他用户访问包含恶意JS脚本的网页时,浏览器会解析执行这些脚本。这类攻击危害比较大,因为恶意脚本是存储在网站数据库中的,所以持久性强,隐蔽性强,容易造成蠕虫攻击和账号劫持。DOM型XSS是指攻击者通过修改页面的DOM(文档对象模型)结构,将恶意JS脚本注入到HTML页面中。这类攻击和其它两类的区别最主要是不经过服务器。在本地执行代码并由浏览器解析。在2021年的OWASPTOP10中,XSS跨站脚本攻击和SQL注入排名第三,都是属于注入类型的漏洞。这两种攻击的危害和隐蔽性对于一个Web应用程序来说都是一个很大的威胁。2.2网络爬虫网络爬虫是一种按照指定的规则去采集互联网上公开信息的程序,通常用于收集网页、文档、文字等信息。其基本工作原理是通过自动化程序模拟浏览器行为,从互联网上搜集和提取信息,爬虫的工作流程如下:确定爬取的目标网站。模拟浏览器发送HTTP请求。获得响应内容。解析内容。2.2.1爬虫类型爬虫主要分为两种类型分别是动态爬虫和静态爬虫。静态爬虫主要是对网页的响应体来进行正则表达式、BeautifulSoup和XPath选择器等技术匹配URL,然后把这些URL加入待爬取队列,然后对这些队列进行重复的爬取,直到爬取到指定的深度。动态爬虫主要是爬取动态网页,因为现在越来越多的网站使用AJAX(AsynchronouseJavaScriptAndXML)技术这导致了静态爬虫无法全面的爬取网站的信息,因此我们本文使用Selenium框架进行动态爬虫。2.2.2爬取策略爬取策略是网络爬虫在执行网页爬取时所遵循的规则或策略。主要分为以下两种策略,分别是深度优先和广度优先策略。深度优先策略(DFS)是一种尽可能深地搜索树的策略。对初始目标页面进行爬取,爬取到新的链接后继续对新的链接进行爬取,一直爬取到指定的深度或规则后,返回到上一个链接进行新链接的爬取,以此类推。广度优先策略(BFS)是一种逐层遍历树的策略。对初始目标页面进行爬取,先爬取该页面的所有链接,然后再爬行这些链接所指向的页面的所有链接,爬取到指定的深度或规则停止。以此类推,因此也被成为层序遍历,一层接着一层进行爬取。本论文采取广度优先策略,因为这个策略可以爬取更多的网页URL。2.3本章小结本章主要说明了本文中基于网络爬虫的漏洞扫描工具所涉及到的相关技术的介绍。介绍了Web常见的漏洞,如XSS跨站脚本攻击漏洞和SQL注入漏洞的形成原理和危害,还有网络爬虫的基本流程、爬取类型和爬取策略3基于网络爬虫的漏洞扫描工具的设计3.1工具需求分析随着互联网技术的发展和普及,在我国使用互联网的人日益增多。根据第52次《中国互联网络发展状况统计报告》显示,截至2023年6月,我国网民规模达10.79亿人,较2022年12月增长1109万人,互联网普及率达76.4%[1]。Web网站应用的范围已经覆盖到了我们生活的方方面面比如:日常交流、游戏娱乐、上网购物、办公、学习、出行等等。但是web安全意识的普及没有像web那样快速的被覆盖,黑客攻击、病毒、木马等安全威胁不断增多。而漏洞扫描器可以扫描自身的网站来减少网站被其他人拿到敏感数据和被种下木马和植入病毒的可能性,帮助减少网站被侵入和被其它网站漏洞利用的风险。3.1.1设计目标根据需求分析,本研究旨在探究基于网络爬虫的漏洞扫描技术,漏洞扫描技术可以帮助个人和企业发现网站的安全漏洞和缺陷、提高安全性和可靠性、评估自身网站的安全风险。通过这种方式可以帮助减少网络攻击的风险,保护重要的数据和资源。该研究项目提供了一套的漏洞评估解决方案,包括用户交互、任务管理、爬取、PoC管理和模糊测试等功能。通过这些功能,用户可以扫描出网站的XSS跨站脚本攻击漏洞、SQL注入漏洞和JS文件中泄露的AccessKey和AccessSecret。3.1.2功能需求分析根据设计目标,基于网络爬虫的漏洞扫描工具的主要功能包括用户交互、任务管理、爬取、PoC管理和模糊测试这五个功能点,如图3-1所示。图3-1漏洞扫描工具的功能结构图(1)用户交互功能:用户输入要进行安全评估站点的网址,同时可以设置线程数、Http请求的头字段、服务器超时时间等。(2)任务管理功能:在进行多个网址的安全评估时,任务管理功能发挥着至关重要的作用。用户可以清晰地查看每个网址的评估进度和状态,同时拥有新建、删除、查询、开始和停止任务等便捷操作。这种全面的任务管理使得用户能够轻松管理多个检测任务,提高工作效率。(3)爬取功能:爬取功能允许用户根据设定的爬取深度,通过网页源代码进行匹配正则和自动化点击表单自动收集目标网址下的URL,对这些URL进行过滤,收集出带有参数的URL在进行GET、POST类型划分。通过有效地收集这些信息,工具能够扩大攻击面,为后续的漏洞检测提供更为全面的数据支持。这一功能是模糊测试功能的重要支撑,因为它不仅提高了检测效率,还能够发现更多潜在的安全风险。(4)PoC(ProofofConcept)管理功能:PoC管理功能使得用户可以方便地收集、新增、修改和删除已知漏洞的PoC。这些PoC是验证漏洞存在性的关键证据,对于安全评估工作至关重要。通过有效的PoC管理,用户可以更加准确地识别漏洞类型。(5)模糊测试功能:模糊测试功能是本工具的核心功能。它根据不同类型的攻击选取相应的攻击载荷,比如进行扫描XSS跨站脚本攻击漏洞和SQL注入攻击漏洞。这种智能化的模糊测试能够模拟各种潜在的攻击场景,有效发现目标站点的安全漏洞。通过模糊测试,用户可以全面了解站点的安全状况,及时发现并修复潜在的安全风险。3.2扫描工具模块的分析与设计根据以上漏洞扫描工具的功能结构图可知,可以将扫描工具分为5个功能模块,用户交互模块、任务管理模块、爬取功能模块、PoC管理模块、模糊测试模块。以下具体介绍爬取功能模块和模糊测试模块。3.2.1爬取模块爬取模块是整个扫描器里面最重要的一个部分,它是模糊测试模块的数据源。爬取模块主要功能是对目标网站的爬取、JavaScript代码解析执行、页面URL提取以及页面表单触发。爬取模块流程图如图3-2所示。图3-2爬取模块流程图对目标站点进行页面请求爬取数据:从输入的URL开始,采用广度优先遍历的方式,一层一层的抓取目标网站上的URL,直到到达指定的最大深度。解析页面获得URL:对于目前的互联网,大部分都是采用AJAX动态技术,所以我们采用Selenium框架,模拟用户的操作,尽可能的把网页的URL全部爬取。URL提取:使用BeautifulSoup库获取网页中a标签的href属性,然后用urllib.parse函数里面的urljoin函数进行拼接获取完整的URL。如果集合里面不存在拼接后的URL,将进入集合中等待爬取。并且使用Selenium进行网页的表单点击,获取发往服务器的URL,并对这些URL进行判断,如果不是静态文件并且包含着参数传递,这些URL将会保存到集合里等待爬虫完毕后进行XSS跨站脚本攻击漏洞扫描和SQL注入漏洞扫描。URL去重:为了避免模糊测试模块对同一个URL发送大量的测试请求,我们必须要对相同的URL去重,比如如果爬取到了以下这两个URL:(1)http://xxx.xxx.xxx/count.php?id=1(2)http://xxx.xxx.xxx/count.php?id=2可以看到这两个URL虽然不同,但是后端的count.php对id的处理逻辑是一样的。如果没有对这两个相似的URL进行去重,那么模糊测试模块将大量地发送Payload进行测试,这会目标服务器造成很大的负担,也会影响扫描器的效率。所以对这样相似的URL,我们只保存一个进行测试。3.2.2XSS跨站脚本攻击漏洞检测模块模糊测试模块包括了XSS跨站脚本攻击漏洞扫描和SQL注入漏洞扫描,这个模块同样也是扫描器重要的一部分,它能够有效发现目标站点的XSS跨站脚本攻击反射型漏洞扫描。XSS跨站脚本攻击漏洞检测用例XSS跨站脚本攻击是一种危害比较大,而且比较常见的一种漏洞。漏洞的原理是用户输入的内容被注入到了HTML中,所以也叫HTML注入。它可以隐蔽地执行JS代码,对用户造成严重的危害和影响。现如今,网站开发人员大多数都对用户输入的内容进行了过滤,例如使用对关键字进行过滤,以及对特殊字符的处理。对于以上的问题,我们在生成payload的时候使用对关键字随机大小写和采用不常见的字符代替空格以及使用罕见的函数来执行JS代码,用来混淆防止匹配到我们的payload。例如以下payload:<IFRAme+SRc%0c=%0ajavascript:confirm``%0d><VIDeO%09onmOuSelEaVE%09=%0ajavascript:confirm()+-=+-><linSN%2foNMOuseeNTeR%09=%09prompt()%0a>XSS跨站脚本攻击漏洞检测方法XSS跨站脚本攻击漏洞检测方法需要爬取到有参数的URL,然后传递给XSS检测模块进行扫描。首先先分别对URL的参数进行探子试探,把URL的参数分别输入正常的数据,这些正常数据可以是字母、数字、特殊字符等,但不应包含任何恶意JS脚本或代码。之后请求服务器查看返回包,如果返回包中出现了正常的数据,这通常说明该参数点可能存在XSS跨站脚本攻击的风险。这是因为,如果服务器能够原封不动地将我们的输入返回给我们,那么也可能能够注入恶意JS脚本。XSS跨站脚本攻击漏洞检测流程如果探子试探的内容有出现在返回包,那么将对探子试探的参数进行带有恶意JS代码的攻击,XSS跨站脚本攻击漏洞检测流程图如图3-3所示:先对探子试探的内容进行返回包的查询,查看是出现在标签属性值里还是在标签内容里。如果是在标签属性值则需要对属性值进行闭合然后才能对恶意代码执行,如果是在标签内容则不需要进行闭合。然后根据闭合符生成对应的Payload,先对标签的内容进行大小写变换,然后使用罕见的填充字符进行填充用于代替空格混淆对关键字的匹配规则,在对事件进行大小写变换,在随机填充字符然后最后挑选函数闭合当前恶意代码。构造HTTP请求包,发送到服务器,对服务器的响应包进行恶意代码的查找,如果恶意代码出现在返回包中,则存在XSS跨站脚本攻击漏洞。图3-3XSS跨站脚本攻击漏洞检测流程图3.2.3SQL注入漏洞检测模块SQL注入模块在也是在模糊测试功能中,它能够有效发现目标站点的报错型和时间盲注型和宽字节型的SQL注入漏洞扫描。SQL注入漏洞检测用例SQL注入漏洞是一个对企业和用户威胁极大的漏洞;它对企业可以删除掉所有数据库,在一定条件下甚至可以拿到计算机权限;它对用户可以拿到用户的账号密码甚至个人信息。漏洞的原理是和XSS漏洞很像,都是注入类型的漏洞,它主要的原因是开发人员没有对用户输入的数据进行过滤,从而直接拼接到要查询数据库的SQL语句当中。所以它被称作为SQL注入。对于安全意识比较差的开发人员,我们使用报错型和时间盲注型和宽字节型的SQL注入对目标服务器进行SQL注入漏洞扫描。以下给出三种类型的部分检测用例:'符号用于闭合SQL语句,可能会引起前端页面的报错。orBENCHMARK(20000000,SHA1(11111111111111))--用于对11111111111111进行SHA1加密运算20000000次,这个操作通过返回包所用的时间可以用于判断是否存在时间盲注。%df'orBENCHMARK(20000000,SHA1(11111111111111))--判断方法和时间盲注一样,区别是在前面加了个%df用于合并字符,如果用户对'号进行了\在前面加上的操作,\和%df就会进行合并成一个字符,从而'就会逃逸出来闭合sql语句。这是由于编码转换问题导致的漏洞。SQL注入漏洞检测方法SQL注入漏洞检测方法和XSS漏洞类似,都是通过爬虫获取带有参数的URL,然后依次替换参数内容成Payload发往目标服务器进行检测,通过响应包有没有出现关键字或者查看响应时间是否明显变长。本文针对SQL注入采用了三种检测方法,以下分别介绍这三种方法。假设http://xxx.xxx.xxx/sql.php?id=1'存在注入点。基于报错型注入的检测假如使用http://xxx.xxx.xxx/sql.php?id=1'对目标服务器进行发送假设服务器那边的SQL语句是这样子如下:$query="selectusername,passwordfromuserswhereid='$_GET[id]'";那么要对数据库查询的数据将会变成如下:selectusername,passwordwhereid='1'';那这样子就会报错,因为是按最近原则来闭合的,那么这个语句会多了一个'号没有闭合,导致语法错误报错,如果前端有类似于“checkthemanualthat(correspondsto|fits)yourMySQLserverversion”或者“Unclosedquotationmarkafterthecharacterstring”等报错信息,那么就可以判断存在报错型注入,因为可能会导致攻击者会使用特定的函数进行SQL语句报错执行后的回显,如图3-4所示。图3-4报错型注入回显基于时间盲注型注入的检测当基于报错型注入的payload都使用后,前端页面仍然没有显示报错。那么当前页面可能无注入点或者语句报错了不回显。此时,就要考虑使用基于时间盲注型注入的payload。它的原理主要通过使用对数据库产生时间延迟的函数来判断页面的响应时间。如果使用了payload后页面的响应时间明显变长了,那么该网站可能存在时间盲注型SQL注入漏洞。在进行时间盲注检测之前会发送一次正常的请求,该正常请求的页面响应时间将会作为我们的基准时间。在本地经过测试BENCHMARK(20000000,SHA1(11111111111111))的运行时间起码需要三秒。那么,通过使用payload请求页面的响应时间如果大于3秒加上基准时间,就可以判断该页面存在时间盲注型SQL注入漏洞。基于宽字节型注入的检测宽字节的注入检测其实和报错型注入、时间盲注型的检测类似,但是也有所区别。宽字节注入是SQL注入攻击中的一种特殊形式,它利用了某些字符编码(如GBK)的特性。在GBK编码中,一个汉字可能由两个字节组成,且前一个字节的ASCII码要大于128。这种特性在某些情况下可以被攻击者利用来绕过应用程序的安全措施。如果目标服务器使用的是GBK编码,但由于使用了不正确的函数进行对单引号进行转义变成了\',那么,我们传入参数%df'。当单引号经过转移后,%df和\会变成一个中文汉字,从而单引号就会逃逸出来进行注入。SQL注入漏洞检测流程这个模块依赖爬取模块的URL,等待爬取模块结束后在进行SQL注入检测。和XSS的检测很像都是通过修改参数的内容成payload然后发往服务器进行测试,SQL注入漏洞检测流程图如图3-5所示,具体流程如下:拿到爬取模块返回的结果后,一个个顺序执行报错型注入、时间盲注型注入以及宽字节型注入检测。根据不同的类型选择不同的payload,将payload依次替换参数的值,然后发送到服务器。根据返回的响应包和响应时间判断该页面是否存在SQL注入漏洞;若存在,则继续进行下一个类型的检测,直到把三种类型检测完毕后进行对下一个URL测试;若不存在,则直接进行下一个URL测试。图3-5SQL注入漏洞检测流程图3.3本章小结本章对工具的实现做出了大概的框架,说明了工具实现的基本概念,并给出了爬取模块、XSS跨站脚本攻击模块以及SQL注入模块的流程图。同时,还说明了XSS跨站脚本攻击模块以及SQL注入模块的检测用例和方法。4基于网络爬虫的漏洞扫描工具的实现本章基于对第三章的模块的设计进行爬取模块、XSS跨站脚本攻击模块以及SQL注入模块进行代码实现。4.1爬取模块的实现该模块主要是对目标站点的URL进行爬取,用URL过滤规则获取有效的URL,并通过标签定位点击页面下的input和button标签,通过selenium点击这些交互点,我们可以得到发往服务器的请求,对这些URL进行去重。保存这些请求然后交给模糊测试模块进行漏洞扫描。4.1.1爬取模块初始化爬虫模块初始化代码如图4-1所示,该模块主要定义了用于存储post和get型URL的列表,使用visited集合存储已经爬取过的URL,定义了默认的爬取深度5,使用webdriver启动浏览器,如果命令行有接受到URL这个参数将进入dfs_crawl()这个方法进行爬虫。图4-1爬虫模块初始化代码4.1.2广度优先爬虫实现广度优先核心代码如图4-2所示,使用了全局变量tag_sum和visited。tag_sum的作用是记录已经打开的标签页数量,如果达到了10个那么就关闭之前打开的标签页。visited是记录已经爬取过的URL,以免重复爬取。接下来开始判断深度,判断是否爬取过,判断是不是相同的域名。如果其中一个为False就跳出当前爬取,因为这不符合爬取策略。Find_Event()方法用于点击页面上的表单。之后得到a标签里面的href链接和当前页面的URL拼接到一起,如果这个页面没有被爬取那么将会被进行爬取。图4-2广度优先核心代码4.1.3事件点击实现事件点击核心代码如图4-3所示。这些函数用于解析HTML响应中的表单元素,并模拟用户与表单的交互。具体流程是,找到返回包的form标签,对form标签里面的input标签、button标签、textarea标签进行查找,之后加入event列表进入Event函数进行判断所属类型,通过这些类型进入到对于的函数进行点击或者输入内容。图4-3事件点击核心代码4.2XSS跨站脚本攻击漏洞检测模块实现该模块主要是对XSS跨站脚本攻击漏洞进行检测。本小结介绍了XSS跨站脚本攻击漏洞检测的实现代码。4.2.1注入点检测实现注入点检测核心代码如图4-4所示。这个模块主要是进行参数提取,然后将参数依次替换成探子字符linshuning,构造请求包对目标服务器进行请求。对请求的响应包进行搜索,如果探子字符不存在响应包中说明没有XSS跨站脚本攻击漏洞;如果探子字符存在于响应包中,说明可能疑似XSS跨站脚本攻击漏洞。之后用html_parser()方法进行判断探子字符出现的具体位置以判断类型;FindClose()方法用于查找闭合符号来闭合标签。然后,生成对应的payloads对目标服务器进行请求。图4-4注入点检测核心代码4.2.2反射类型和闭合符判断实现反射类型和闭合符判断核心代码如图4-5所示。这段代码定义了两个函数,html_parser()用于解析HTML响应以找到探子字符出现的位置用来检测反射型漏洞的类型。FindClose()用于找到探子字符前一个位置的字符,用来闭合标签执行JS代码。图4-5反射类型和闭合符判断核心代码4.2.3payload生成实现payload生成核心代码如图4-6所示。这段代码定义了一个名为Gen的函数,用于生成反射型XSS攻击的payload。函数中使用了一些预定义的变量和列表,包括random_string和random.choice函数用于随机字符大小写和随机挑选列表中的元素,以及多个列表,用于构建不同类型的payload。整个过程中,通过随机选择填充字符、随机大小写标签和事件,增加了payload的多样性和随机性,以提高测试的成功率。图4-6payload生成核心代码4.2.4判断是否存在XSS漏洞实现判断是否存在XSS漏洞核心代码如图4-7所示。这段代码使用了requests库来发送HTTP请求到目标服务器,并使用了response.text来获取响应内容,然后检查是否包含了当前payload。如果存在将漏洞信息记录到vlun_point列表中,不存在将进行下一个payload。图4-7判断是否存在XSS漏洞核心代码4.3SQL注入漏洞检测模块实现该模块主要是对SQL注入漏洞进行检测。本小结介绍了SQL注入漏洞检测的实现代码。4.3.1初始化代码实现初始化代码核心代码如图4-8所示,定义了报错注入和时间盲注型payloads,以及闭合符和注释符,通过从文件中获取了SQL报错的信息,来判断是否存在报错型注入。图4-8初始化代码核心代码4.3.2报错型注入检测实现报错型注入检测核心代码如图4-9所示,这个函数用于检测网站是否存在报错型SQL注入漏洞。它用error_payloads里面存储好的内容依次替换参数的值然后构造HTTP请求发往目标服务器,如果响应内容里面包括存储在sql_errors的错误信息,那么就判断存在报错型注入。图4-9报错型注入检测核心代码4.3.3时间盲注型注入检测实现时间盲注型注入检测核心代码如图4-10所示,这个函数用于检测网站是否存在时间盲注型SQL注入漏洞。这个函数主要也是用内置好的payloads依次替换参数的内容构造HTTP请求目标服务器,但是它的检测原理和报错型注入不一样,它主要是通过响应包中的时间延时来进行判断是否存在漏洞。在每次请求之后,它计算请求的响应时间,并与基准时间相比较。如果响应时间大于基准时间加上一个阈值(这里设定为3秒),则认为存在时间盲注SQL注入漏洞。图4-10时间盲注型注入检测核心代码4.3.4宽字节型注入检测实现宽字节型注入检测核心代码如图4-11所示,这个函数用于检测网站是否存在宽字节型SQL注入漏洞。它的检测原理和时间盲注型类似,都是通过页面的响应时间来判断的。区别在于它使用%df作为payload的前缀,目的是为了假如目标服务器使用的编码或者函数不正确导致的注入。图4-11宽字节型注入检测核心代码4.4本章小结本章根据第三章的设计,对爬取模块、XSS跨站脚本攻击漏洞检测模块以及SQL注入漏洞检测模块实现,通过给出核心的代码和具体实现细节做出了详细的说明。5工具测试结果5.1功能测试功能测试主要对基于网络爬虫的漏洞扫描工具的各个模块进行测试,主要测试模块爬取模块和模糊测试模块(模糊测试模块包括XSS跨站脚本漏洞功能和SQL注入漏洞功能)。经过第三章的设计思路和第四章的代码实现,我们编写出crawler工具,这款工具基于python进行编写,其中的-u参数表示对后面的URL进行爬虫,-xss参数代表对URL进行XSS跨站脚本漏洞测试,-sql参数代表对URL进行SQL注入漏洞测试。在接下来中我们使用本地环境PHP+Apache+MySQL搭建的Pikachu靶场对工具的有效性进行测试,对网站进行爬虫有效性测试,爬虫功能对目标URL无害,只是进行页面URL采集。5.1.1爬取模块测试执行爬虫脚本pythoncrawler.py-u"",以为初始URL。爬取了13806个URL,经过过滤和去重,没有发现POST型URL,但是发现了8个get型URL。如图5-1所示,可以证明该爬取模块的有效性。图5-1爬取模块测试图5.1.2XSS跨站脚本攻击漏洞检测模块测试模糊测试里面包含了XSS跨站脚本攻击漏洞检测。使用本地的靶场pikachu进行XSS跨站脚本攻击漏洞,执行执行爬虫脚本pythoncrawler.py-u"/pikachu-master/index.php"-xss,意思是对这个网站进行爬虫和xss测试。用爬虫到的结果进入XSS模块进行扫描。XSS漏洞测试结果如图5-2所示,XSS漏洞证明结果如图5-3所示。可以证明XSS跨站脚本攻击漏洞检测的有效性。图5-2XSS漏洞测试结果图5-3XSS漏洞证明结果5.1.3SQL注入漏洞检测模块测试模糊测试里面包含了SQL注入漏洞检测。使用本地的靶场pikachu进行SQL注入漏洞,执行执行爬虫脚本pythoncrawler.py-u"/pikachu-master/index.php"-sql,意思是对这个网站进行爬虫和SQL注入测试。用爬虫到的结果进入SQL注入模块进行扫描。SQL注入测试结果如图5-4所示,使用正常的数据发送到目标服务器,看到响应时间只有333毫秒,如图5-5所示。但是用了带有时间盲注的payload后响应时间变成了4.62秒,如图5-6所示。说明该URL存在SQL注入漏洞。图5-4SQL注入测试结果图5-5正常数据输入图5-6时间盲注payload数据输入5.2本章小结为了验证本工具的可用性,我们使用了/进行爬虫测试,还有本地的靶场pikachu进行XSS跨站脚本漏洞测试和SQL注入漏洞测试,全程自动化无需人工参与。经过测试我们爬取到了URL,也成功的在靶场测试出了漏洞。6总结与展望6.1论文总结本论文主要研究了基于网络爬虫的漏洞扫描工具的设计与实现。通过对国内外研究现状的分析,我们发现随着网络的日益普及,Web应用的安全性成为了重要的关注点。SQL注入和XSS跨站脚本攻击是常见的Web安全漏洞,针对这些漏洞进行扫描对于提高系统的安全性具有重要意义。在相关技术介绍部分,论文对Web常见漏洞进行了介绍,包括SQL注入攻击漏洞和XSS跨站脚本攻击漏洞。这些漏洞是网络安全领域的重要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 邵阳市新邵县2025届四下数学期末检测模拟试题含解析
- 房产最高额担保合同
- 宽城满族自治县2025年数学五年级第二学期期末综合测试模拟试题含答案
- 2025年度企业单位借款合同范例
- 山东省枣庄市滕州市2024-2025学年高二下学期第一次检测历史试卷(含答案)
- 餐饮服务外包合同范本多条款
- 科研仪器设备采购合同
- 物资供应合同
- 傣族民间舞的风格特点
- 三年级上册4、水生植物教案
- YC/T 322-2018片烟气调贮存养护技术规范
- 绿化工程施工合同(5篇)
- 迈瑞麻醉机介绍精品课件
- GB/T 20441.4-2006测量传声器第4部分:工作标准传声器规范
- GB 25535-2010食品安全国家标准食品添加剂结冷胶
- GA/T 966-2011物证的封装要求
- 全套课件公共部门人力资源管理
- 双心治疗课件
- 广东省肇庆市各县区乡镇行政村村庄村名明细及行政区划代码
- 缓和医疗精品课件
- 儿童功能性独立评定量表(WeeFIM)
评论
0/150
提交评论