基于模糊测试的漏洞发现 跨站脚本模糊测试毕业设计论文 精品.docx 您所在的位置:网站首页 网址是一串数字怎么登陆 基于模糊测试的漏洞发现 跨站脚本模糊测试毕业设计论文 精品.docx

基于模糊测试的漏洞发现 跨站脚本模糊测试毕业设计论文 精品.docx

2023-02-24 22:05| 来源: 网络整理| 查看: 265

基于模糊测试的漏洞发现 跨站脚本模糊测试毕业设计论文 精品.docx

基于模糊测试的漏洞发现 跨站脚本模糊测试毕业设计论文 精品.docx

上传人:t*** 文档编号:13190948 上传时间:2022-08-20 格式:DOCX 页数:48 大小:1.01MB

基于模糊测试的漏洞发现跨站脚本模糊测试毕业设计论文精品

 

毕业设计(论文)

 

题目名称:

基于模糊测试的漏洞发现

——跨站脚本模糊测试

院系名称:

计算机学院

班级:

网络072班

学号:

200700824214

学生姓名:

李宗辉

指导教师:

李向东

2011年06月

 

基于模糊测试的漏洞发现

——跨站脚本模糊测试

VulnerabilityDiscoverybasedonfuzztesting

——XSSfuzztesting

 

院系名称:

计算机学院

班级:

网络072班

学号:

200700824214

学生姓名:

李宗辉

指导教师:

李向东

2011年06月

中文摘要

跨站脚本漏洞是Web应用程序中最常见的一种漏洞,广泛存在于Web应用程序和服务器中,很多计算机病毒、蠕虫等都是利用了跨站脚本,其危害性甚大。

怎样发掘Web应用程序中跨站脚本漏洞,成了Web应用程序开发人员关注的重要问题。

本文以Web应用程序跨站脚本为研究对象,研究Web应用程序跨站脚本漏洞模糊测试技术。

论文包括以下研究工作。

首先,分析跨站脚本漏洞成因,重点研究了HTML,JavaScript。

触发跨站脚本的原因分为以下两种:

通过闭合标签触发跨站脚本,通过标签属性传递值触发跨站脚本。

跨站脚本分为两种类型:

反射型跨站脚本和持久型跨站脚本。

然后,使用源代码分析方法发掘跨站脚本。

在分析跨站脚本成因时,提出了利用源代码挖掘跨站脚本的方法。

用这种方法挖掘跨站脚本是最基础的一种挖掘方法,用分析源代码的方法寻找到若干跨站脚本漏洞。

再者,重点分析了模糊测试原理,提出了模糊测试功能需求分析和框架设计,研究了实现模糊测试技术的核心算法。

研究了模糊测试技术挖掘跨站脚本漏洞的方法技巧,总结了关键步骤,使用模糊器挖掘若干未知漏洞。

最后应用模糊测试技术,发掘未知跨站脚本漏洞,并做收集记录添加在附录C中。

本文研究意义为:

能迅速挖掘跨站脚本漏洞,能有效测试Web应用程序中的跨站脚本。

这为继续研究模糊测试Web应用程序提供了基础,为构建Web应用程序模糊测试系统探索了思路。

关键词:

Web应用程序;跨站脚本;模糊测试技术;模糊器;WebFuzz

Abstract

Cross-sitescriptingvulnerabilityisthemostcommonwebapplicationsandserversvulnerability,whichwidelyexistsintheinternet.Manycomputervirusesandwormsarebasedoncross-sitescripts.Andthecross-sitescripts’harmisveryserious.Sohowtoexplorecross-sitescriptingvulnerabilitieshasbeenthewebapplicationdevelopers’importantconcern.ThemainworkwhatIhavedoneinthispaperisthefollowingresearch:

First,whatIhavedoneisanalyzingthecausesofcross-sitescriptingvulnerability.Forthis,ImainlyfocusontheHTML,JavaScriptknowledge.Andasaresult,Idividethereasonsintothefollowingtwosituations:

triggeredbyclosingtags,ortriggeredbypassingtags’propertyvalue.AndalsoIfindthatcross-sitescriptingvulnerabilitycanbedividedintotwotypes:

ReflectedXSSandStoredXSS.Second,whatIhavedoneisusingthesourcecodeanalysismethodtoexplorecross-sitescriptingvulnerabilities.WhenIanalyzethecausesofcross-sitescriptingvulnerability,Iproposehowtousesourcecodemethodtoexplorecross-sitescripting.ItisthemostbasicmethodtoexploreXSSbythisway.Ihavefoundanumberofcross-sitescriptingvulnerabilitieswithanalyzingthesourcecodemethod.Third,whatIhavedoneisstudyingwebfuzztestingtechnique.Iintroducedthefuzztestingtechnology,whichisthefocusofthispaper.Ialsoanalyzedthetheoryofthefuzztesting,thenIsuggestedtherequirementanalysisandtheframeworkofdesigning.Istudiedthecorealgorithmsagain.AtlastIsummarizedthestepofexploringcross-sitescriptingwithfuzztestingtechnology.Fourth,Iusethefuzztestingtechnologytoexploretheunknowncross-sitescripting,anddocollectintheappendixC.AttheendofthispaperIhavefoundsomeunknownXSSwiththefuzzer.

Thesignificanceofthisresearchisthatwecanexplorecross-sitescriptingandtestwebapplicationfastandefficiently.Itprovidesafoundationforbuildingwebapplications,forconstantlyresearchingfuzztestingtechnology.

Keywords:

webapplication;cross-sitescriptingvulnerability;Fuzzingtestingtechnology;Fuzzer;WebFuzz

第1章前言

随着计算机通信技术的飞速发展,Web应用程序得到了越来越多的应用。

Web应用程序的安全性成为了一个复杂性的课题。

怎么进行Web应用程序安全测试,怎么进行Web应用程序漏洞挖掘,已经成为Web应用程序开发者和Web应用程序安全维护者关心的重要议题。

本篇论文将用最新的Web应用程序漏洞发掘技术——模糊测试技术,对Web应用程序中跨站脚本漏洞进行挖掘。

1.1研究背景

2010年8月中国互联网络中心CNNIC发布中国互联网发展现状报告。

报告显示,中国网民规模持续增长,互联网应用深度不断提升,商务类应用成为新的增长点。

其中网上支付、网络购物、网上银行增长最为强劲。

企业借助互联网进行商务活动的价值日益凸显,企业利用互联网的积极性不断提高,企业在互联网上的投入也不断提高,包括建站、交易平台入驻、网络营销等。

由此可见,网络已经成为发布信息,获得信息,资源下载,网络应用,电子消费,电子政务等等的重要平台,而建立在庞大、集成的网络基础上的多平台、网络化、充分集成的Web应用程序已成为上述业务最流行的处理模式。

但与此同时,承载着重要而丰富功能与用途的Web应用和服务器也成为恶意用户与黑客等攻击者的主要目标。

因此,如何确保Web应用程序的安全已成为企业,政府,特别是金融系统、电子政务和电子购物系统所面临的主要挑战。

为了防止政府系统、企业用户、广大个人用户成为Web应用程序安全性问题的受害者,应该关注Web应用程序和服务器的安全性问题。

作为普通用户不应该利用Web应用程序和服务器的安全性问题危害公众利益,作为技术人员应该维护Web应用程序和服务器的安全性,作为开发人员应该将Web应用程序和服务器的安全性放到重要位置。

这对计算机通信技术的发展来说是很重要的。

对Web应用程序和服务器的安全性的关注,其中最重要的一个方面是对其进行安全性测试,发掘其中存在的安全漏洞。

可以采取很多不同的方法进行安全性测试,从大的方面来说可以分为白盒测试和黑盒测试两个方面,Web应用程序模糊测试技术是黑盒测试的一种,是自动化的黑盒测试技术。

它是通过提供非预期的输入并监视异常结果来发现Web应用程序故障的方法。

1.2研究内容

本小节将讲述Web应用程序和Web应用程序漏洞的有关知识,然后介绍什么是Web应用程序和服务器模糊测试技术,并介绍Web应用程序和服务器模糊测试技术的研究现状、存在的问题和应用领域。

1.2.1Web应用程序漏洞

Web应用程序(WebApplication)是指用户界面驻留在Web浏览器中的任何应用程序,包括内容管理系统(CMS)、wiki百科、门户网站、电子公告板、论坛等。

它基于Web运行,是浏览器-服务器架构的典型产物。

Web应用程序漏洞特指由于开发者编码不慎、没有对用户的输入进行充分验证和过滤而引入的漏洞,它主要包括跨站脚本(XSS)、SQL注入、远程文件包含(RFI)、跨站请求伪造(CSRF)、目录遍历等。

致力于提高Web应用程序安全性的开放社群OWASP(OpenWebApplicationSecurityProject,开放Web应用程序安全项目)在2010年4月19日公布的OWASP十大互联网应用程序风险(OWASPTop10for2010)依次是:

A1:

Injection注入攻击

A2:

Cross-SiteScripting(XSS)跨站脚本

A3:

BrokenAuthenticationandSessionManagement失效的身份认证和会话管理

A4:

InsecureDirectObjectReferences不安全的直接对象引用

A5:

Cross-SiteRequestForgery(CSRF)跨站请求伪造

A6:

SecurityMisconfiguration安全配置错误

A7:

InsecureCryptographicStorage不安全的加密存储

A8:

FailuretoRestrictURLAccess没有限制URL访问

A9:

InsufficientTransportLayerProtection传输层保护不足

A10:

UnvalidatedRedirectsandForwards未验证的重定向和转发

十大风险的名称有的来自于攻击的类型,有的来自于漏洞,而有的来自于所造成的影响。

攻击者可以通过应用程序中许多不同的路径方法去危害你的业务或者企业组织。

每种路径方法都代表了一种风险。

不同的路径方法,所利用的Web应用程序安全漏洞就有可能不同。

如下图1-1就是利用不同Web应用程序安全漏洞产生风险的过程图:

图1-1利用不同Web应用程序安全漏洞产生风险过程图

1.2.2模糊测试技术

模糊测试技术,又被称为Fuzzing,它是通过提供非预期的输入并监视异常结果来发现Web应用程序故障的方法。

是一种广为使用的自动化的漏洞挖掘技术,它是一种特殊的动态测试方法。

模糊测试技术可以被定义为通过提供非预期的输入并监视异常结果来发现软件故障的方法。

模糊测试技术是近几年兴起的漏洞挖掘技术。

最初用来测试操作系统及其上应用软件的健壮性,后来被应用于漏洞挖掘中。

Fuzzing技术是一种高度自动化的,高效的漏洞挖掘技术。

Web应用程序自动化的模糊测试是模糊测试技术的延伸,是一种特殊形式的网络协议模糊测试,特别关注于遵循HTTP规范的包。

是一种黑盒测试,在很大程度上是一种强制性的技术,把能够想到的所有的东西都抛给被测目标,然后监视结果。

结合Web应用程序安全性测试的特点以及自动化的模糊测试的特点,会看到自动化的模糊测试技术在发掘Web应用程序上的方便性和有效性。

事实证明自动化的模糊测试技术能够发掘Web应用程序中隐藏的用其他方法难以发掘的漏洞。

1.2.3研究现状、存在问题及应用领域

研究现状:

到目前为止,Web应用程序的模糊测试技术取得了一定的进展,但是这项技术仍然在初级阶段,大部分工具仍然是相对较小的项目,由几个人组成的小组甚至一名程序员来维护,未来的模糊测试将会有许多革新和发展,模糊测试还会发展到新的阶段。

这些年,模糊测试已经开始从学术研究向商业应用方向发展,有越来越多的开发人员开始接受模糊测试技术。

使用模糊测试技术,研究人员已经开发了不少的应用于Web应用程序漏洞的挖掘的模糊器,例如有SPIKE代理,WebScarab,SPI模糊器,CodenomiconHTTP测试工具,beSTORMOLU等等,这些都是优秀的基于模糊测试技术的具有发掘Web应用程序和服务器漏洞功能的模糊器。

存在的问题:

但是这些工具大多是商业应用的测试工具,而本课文题在研究使用模糊测试技术发掘Web应用程序和服务器漏洞时,所涉及的模糊器WebFuzz是一款免费开源的专门针对Web应用程序和服务器漏洞挖掘的工具。

这款工具具有良好的可扩展性,它提供了一个可以而且应当被进一步创建的架构。

其相关资料和源代码可以在网站www.fuzzing.org中获得。

应用领域:

Web应用程序和服务器的模糊测试器WebFuzz可应用于网站开发的安全测试和Web应用程序和服务器开发的安全测试。

它用于发掘Web应用程序和服务器中的目录遍历漏洞,缓冲区溢出漏洞,SQL注入漏洞,XSS脚本漏洞等。

1.3研究任务

本文的研究任务主要包括:

Web应用程序跨站脚本分析、Web应用程序漏洞挖掘模糊测试技术研究、跨站脚本重现研究、跨站脚本探索挖掘研究四个部分。

研究任务表如下表1-1所示:

表1-1研究任务表

脚本漏洞分析

WebFuzz技术研究

脚本漏洞重现

脚本漏洞探索

脚本漏洞介绍

WebFuzz介绍

熟悉WebFuzz

探索未知漏洞

脚本漏洞触发原理

WebFuzz原理

重现漏洞

对比不同的技术

研究的技术路线如下图1-2:

图1-2拟采用的研究技术路线

跨站脚本分析:

首先学习跨站脚本定义,明确跨站脚本分类,分析跨站脚本触发原理。

进而研究跨站脚本攻击向量的构造方法,以及变换形式。

并在此基础上进一步理解和总结跨站脚本成因。

Web模糊测试技术分析:

首先学习模糊测试技术的基本原理知识,在此基础上研究本文提出的Web应用程序模糊器——WebFuzzer。

分析本模糊器的工作原理,掌握本模糊器的使用方法。

跨站脚本重现研究:

不断总结发掘跨站脚本的方法,更深理解其触发原理。

不断掌握模糊器WebFuzzer的使用,构建发掘Web应用程序跨站脚本的发掘环境,并会利用WebFuzzer重现已知的漏洞。

跨站脚本探索研究:

不断总结Web应用程序跨站脚本的形成原理,掌握Web应用程序模糊器WebFuzzer发掘跨站脚洞的工作原理,总结和其他发掘工具相比时的优势。

利用WebFuzzer探索发掘未知的跨站脚本。

总结探索发现跨站脚本的过程,用合理的方法收集已发现的跨站脚本。

1.4论文结构

本次论文的文章架构如下:

第1章,前言部分,总体上介绍研究任务,说明项目内容,介绍相关背景等;第2章,跨站脚本分析部分,本章深入分析跨站脚本成因及其他与跨站脚本有关的知识;第3章,Web模糊测试技术,本章深入探讨Web模糊测试技术的原理,提出功能需求分析、和框架设计,深入分析模糊器设计的核心函数算法;第4章,利用学到的知识对跨站脚本挖掘,这里用了源代码分析的方法和模糊测试的方法;第5章对全文进行总结。

 

第2章跨站脚本分析

来自OWASP的2010年Web应用程序面临的十大安全风险报告显示:

跨站脚排名第二。

而在以往的报告中,跨站脚本则一直稳居第一。

由此可见跨站脚本在Web应用程序中是很常见而且是危害很大的一类漏洞,本章重点介绍这一类Web应用程序漏洞。

从跨站脚本概述到成因,全面介绍跨站脚本。

2.1跨站脚本概述

XSS的全称是CrossSiteScripting,意思是跨站脚本.这第一个单词是Cross,但因为CSS是层叠样式表的缩写(CascadingStyleSheets)的缩写,同时Cross发音和X相似,所以为了避免混淆用X来代替缩写成XSS。

跨站点脚本(XSS)是一个典型的Web应用程序计算机安全漏洞。

允许攻击者绕过客户端的安全机制,可以使恶意攻击者将客户端脚本注入到其他用户浏览的网页里。

截止到2007年,赛门铁克公司所记录的安全记录中有80%为跨站脚本,它的影响范围可以从一个小小的滋扰到一个重大的安全风险。

OWASP公布的2004年和2007年十大网络安全漏洞中,跨站脚本都高居首位,最新公布的2010年十大安全风险也为第二位,跨站脚本一直以来都是最常见的安全漏洞。

2.2跨站脚本成因

2.2.1超文本标记语言

a.超文本标记语言概述

要了解XSS的触发原理就先得从HTML(超文本标记语言)开始。

HTML(超文本标记语言)是描述网页的一种语言。

不是一种编程语言,而是一种标记语言,是由一套标记标签组成的,HTML使用标记标签来描述网页。

HTML文档包含HTML标签和纯文本,是网页的文字形式。

HTML文档由HTML元素定义,HTML元素是指从开始标签到结束标签的所有代码。

HTML元素以开始标签开始以结束标签终止,元素内容是开始标签和结束标签之间的内容。

b.超文本标记语言标签

HTML标签标记HTML文档和HTML元素,浏览器通过这些标签来识别文档和元素的显示格式。

由开始标签和结束标签组成,开始标签是被尖括号包围的元素名,结束标签是被尖括号包围的斜杠和元素名。

某写HTML元素没有结束标签。

下面简单介绍一下常用的HTML标签。

HTML文档标签:

HTML文档是从标签开始的,结束标签为。

与之间的文本描述网页。

HTML文档头标签:

HTML文档头标签

用于定义文档的头部。

文档的头部描述了文档的各种属性和信息,包括文档的标题、在Web中的位置以及和其他文档的关系等。

绝大多数文档头部包含的数据都不会真正作为内容显示给读者。

HTML标题标签:

HTML标题标签

元素可定义文档的标题。

浏览器会以特殊的方式来使用标题,并且通常把它放置在浏览器窗口的标题栏或状态栏上。

同样,当把文档加入用户的链接列表或者收藏夹或书签列表时,标题将成为该文档链接的默认名称。

HTML的主体标签:

HTML文档的主体是由

标签进行定义的,和结束标签分别为。

与之间的文本是可见的页面内容。

网页中文章标题标签:

网页中文章的标题是用标签

-定义的。

定义最大的标题。

定义最小的标题。

c.超文本标记语言属性

同时,HTML标签可以拥有属性。

属性提供了有关HTML元素的更多的信息。

属性总是以名称/值对的形式出现。

比如name="value"属性总是在HTML元素的开始标签中定义。

下面三个是标签属性举例。

链接标签的属性href指定链接地址:

Thisisalink

标题标签中的属性align指定标题的对齐方式。

主体标签中的属性bgcolor指定文档的背景颜色。

定义属性时要注意:

始终为属性值加引号,属性值应该始终被包括在引号内。

双引号是最常用的,不过使用单引号也没有问题。

在某些个别的情况下,比如属性值本身就含有双引号,那么您必须使用单引号。

d.超文本标记语言事件

HTML事件可以触发浏览器中的行为,比方说当用户点击某个HTML元素时启动一段JavaScript。

在现代浏览器中都内置有大量的事件处理器。

这些处理器会监视特定的条件或用户行为,例如鼠标单击或浏览器窗口中完成加载某个图像。

通过使用客户端的JavaScript,可以将某些特定的事件处理器作为属性添加给特定的标签,并可以在事件发生时执行一个或多个JavaScript命令或函数。

事件处理器的值是一个或一系列以分号隔开的Javascript表达式、方法和函数调用,并用引号引起来。

当事件发生时,浏览器会执行这些代码。

例如,当您把鼠标移动到一个超链接时,会启动一个JavaScript函数。

支持JavaScript的浏览器支持标签中的一个特殊的"mouseover"事件处理器-被称为onmouseover来完成这项工作:

2.2.2JavaScript

a.JavaScript概述

JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。

同时也是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作。

JavaScript由数行可执行计算机代码组成。

JavaScript通常被直接嵌入HTML页面。

JavaScript是一种解释性语言,这就是说,代码执行不进行预编译。

b.JavaScript功能

JavaScript为HTML设计师提供了一种编程工具。

JavaScript是一种只拥有极其简单的语法的脚本语言,可以将短小的代码片断放入HTML页面当中。

JavaScript可以将动态的文本放入HTML页面,可以将JavaScript设置为当某事件发生时才会被执行,例如页面载入完成或者当用户点击某个HTML元素时。

JavaScript可以读写HTML元素。

JavaScript可以读取及改变HTML元素的内容。

JavaScript可被用来验证数据,在数据被提交到服务器之前,JavaScript可被用来验证这些数据。

JavaScript可被用来检测访问者的浏览器,JavaScript可被用来检测访问者的浏览器,并根据所检测到的浏览器,为这个浏览器载入相应的页面。

JavaScript可被用来创建cookies,JavaScript可被用来存储和取回位于访问者的计算机中的信息。

c.JavaScript标签

HTML的就可以告诉浏览器JavaScript从何处开始,到何处结束。

d.JavaScript放置位置

JavaScript放置的位置。

你可以在文档中放置任何数量的脚本,因此你既可以把脚本放置到body,又可以放置到head部分。

当页面载入时,会执行位于body部分的JavaScript;当被调用时,位于head部分的JavaScript才会被执行,也就是将脚本内容或者成为函数写到head部分,在载入页面的时候会先将脚本内容载入,然后再在后面的执行过程中调用脚本内容,Body部分的脚本内容会在载入页面的时候就执行;还有一种是访问外部脚本,可以把.js文件放到网站目录中通常存放脚本的子目录中,这样更容易管理和维护。

e.JavaScript语句

JavaScript语句。

JavaScript语句是发给浏览器的命令。

这些命令的作用是告诉浏览器要做的事情。

下面主要列举几种常用语句:

声明(创建)JavaScript变量:

在JavaScript中创建变量经常被称为“声明”变量。

可以通过var语句来声明JavaScript变量。

JavaScript消息框:

可以在JavaScript中创建三种消息框:

警告框、确认框、提示框。

警告框:

警告框经常用于确保用户可以得到某些信息。

当警告框出现后,用户需要点击确定按钮才能继续进行操作。

语法格式为:

alert("文本")。

确认框:

确认框用于使用户可以验证或者接受某些信息。

当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。

如果用户点击确认,那么返回值为true。

如果用户点击取消,那么返回值为false。

语法格式为:

confirm("文本")。

提示框:

提示框经常用于提示用户在进入页面前输入某个值。

当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。

如果用户点击确认,那么返回值为输入的值。

如果用户点击取消,那么返回值为null。

语法格式为:

prompt("文本","默认值")。

f.JavaScript事件

JavaScript中的事件。

JavaScript使有能力创建动态页面。

事件是可以被JavaScript侦测到的行为。

网页中的每个元素都可以产生某些可以触发JavaScript函数的事件。

比方说,可以在用户点击某按钮时产生一个onClick事件来触发某个函数。

事件在HTML页面中定义。

列举一些JavaScript事件如下:

鼠标点击;页面或图像载入;鼠标悬浮于页面的某个热点之上;在表单中选取输入框;确认表单;键盘按键等。

2.2.3跨站脚本产生的原因

跨站脚本产生的原因,是Web应用程序过度信赖用户的输入,CGI程序没有对用户提交的变量中的HTML代码进行过滤和转换。

CGI输入有两种形式,显示输入和隐式输入。

其中显示输入明确要求用户输入数据,而隐式输入则本来并不要求用户输入数据,但是用户却可以通过输入数据来进行干涉。

显示输入又可以分为两种,输入完成立刻输出结果;输入完成先存储在文本文件或数据库中,然后再输出结果,后者可能会让网站面目全非。

从引起跨站脚本的触发原因分为以下两种。

a.闭合标签

浏览的网页全部都是基于超文本标记语言HTML创建的HTML文档。

XSS的原理也就是往HTML文档中注入脚本,HTML指定了脚本标记。

在没有过滤字符的情况下,只需要保持完整无错的脚本标记即可触发XSS,假如在某个资料表单提交内容,表单提交内容就是某个标记属性所赋的值,可以构造闭合标记来构造完整无错的脚本标记。

例如HTML文档中的一个超链接:

IT168安全频道

就可以构造闭合标记:

">

结果形成了。

这样就产生了跨站脚本。

综上所述,测试闭和表单赋值所在的标记,形成完整无错的脚本标记可触发XSS。

b.标签属性赋值

有些时候是没有脚本标记的,这时可以利用其他标记,假如要在网页里显示一张图片,那么就要使用一个标记,示例如下:

//www.***.com/xss.gif">

img标记并不是真正地把图片给加入到Html文档把两者合二为一,而是通过src属性赋值。

那么浏览器的任务就是解释这个img标记,访问src属性所赋的值中的URL地址并输出图片。

浏览器不会检测src属性所赋的值,这时可以利用JavaScript脚本语言的一个URL伪协议,触发跨站脚本。

URL伪协议说明符为”javascript:

”,这种协议说明符加上任意的javascript代码,当浏览器装载这样的URL时,便会执行其中的代码。

于是就得出了一个经典的XSS示例:

alert('XSS');">

构造过程如下:

首先寻找到没有验证和过滤客户端输入的输入图片处,然后用记事本写下如下代码:

alert('XSS');">,然后修改创建的文件的格式为可以上传的图片的格式,这样便有可能触发跨站脚本,如下图2-1:

图2-1跨站脚本触发图

当然并不是所有标记的属性都能用,标记的属性在访问文件才触发的XSS,离开标记的属性还有事件能帮助触发XSS。

只有达到某个条件才会引发事件,正巧img标记有一个可以利用的onerror()事件,当img标记内含有一个onerror()事件而正好图片没有正常输出便会触发这个事件,而事件中可以加入任意的脚本代码,其中的代码也会执行.现在又得到了另外一个经典的XSS示例:

//xss.jpg"onerror=alert('XSS')>

这种情况下触发漏洞的过程如下:

首先在记事本文本中输入上面的代码

//xss.jpg"onerror=alert('XSS')>,然后将文件名修改为可以上传的图片格式,这是在加载图片的时候,不能找到正确的图片URL,于是触发事件onerror,从而触发的弹框XSS漏洞。

c.跨站脚本成因总结

由此可见,触发一个XSS漏洞就是利用Web应用程序中程序员的失误,通过客户端影响Web服务器的输出,即修改Web服务器传送给客户端的HTML,而要达到触发一个XSS跨站脚本的目的,就必须从用户的输入入手,将输入值插入到服务器返回给的HTML文档中,这个输入值是包含HTML语言或者JavaScript语言或者其他脚本语言的合法的值,这个输入值没有被GUI程序检验和过滤。

构造出完整无错的脚本标记。

构造的过程可能是:

直接构造出完整无错的脚本标记,或者通过访问文件的标记属性和触发事件来构造。

需要补充一点的是,Web应用程序在开发过程中,是应该采用一定的安全策略的。

那就是当JavaScript的使用者同时开启多个浏览器视窗时,在有些时候,网页里面的片段程式码被允许从另一个网页取出,所以某些恶意网站可以用这个方法来尝试窃取机密信息。

这应当是被禁止的,为了解决这个问题,浏览器采用了允许来自相同网域名称系统和使用相同协定的网页之间进行互动,而不允许不相同网域域名系统和使用不相同协定的网页之间进行互动,这样就使得恶意网站无法借由Javascript在另一个浏览器窃取机密资料。

这就是使用“同源策略”保护受害者免受恶意的危害。

然而有些网站不能正确实现同源策略或者说同源策略本身也存在弱点,攻击者就可以利用这些去发现可以巧妙的注入恶意指令码到其他网页的方法,从而可以得到更高的特权,窃取机密的网页内容、会谈的cookie、以及许多其他的物件。

2.3跨站脚本的分类

上面一小节已经详细阐述了跨站脚本的成因,下面将阐述一下跨站脚本的分类。

跨站脚本的实质是注入的问题,现在并没有一个单一的,标准的分类方法。

但是许多专家将跨站脚本分为至少两大类:

Non-persistent(非持久型)和Persistent(持久型)。

2.3.1Non-persistent(非持久型)

这种跨站脚本又被称为反射型跨站脚本。

如果Web客户端提供的数据立即被服务器端脚本所使用,生成并返回给用客户端结果页面,而服务器端脚本在使用这些数据之前没有正确的审查这些数据。

就有可能导致客户端代码注入到返回的结果页面中。

如Web客户端提供的HTTP查询参数或者提供的HTML表单未被正确的审核却被立即使用时。

一个典型的例子是一个网站的搜索引擎:

搜索一个字符串,搜索的字符串又被原封不动地重新显示在结果页中逐字说明是什么搜索。

如果搜索引擎没有对搜索的字符串进行正确的审核,就有可能导致一个非持久型的跨站脚本。

本文将重点研究此种类型的漏洞。

针对此类漏洞,攻击者可以构造具威胁性的攻击代码,并骗取受害用户点击

生成的链接,从而危害到用户的安全。

2.3.2Persistent(持久型)

持久型跨站脚本又被称为存储型跨站脚本,它是一个跨站脚本更具破坏力的变体:

攻击者提供的数据被保存在服务器中,然后在其他用户常规的浏览过程中,持久地显示在返回给用户的正常的网页结果中。

这种类型的跨站脚本的执行过程和非持久型的执行过程类似,但是它的危害更加严重,因为攻击者的脚本自动提交,而不需要引诱目标受害人点击攻击者的第三方网站。

而且,攻击者利用持久型跨站脚本时,只需要进行一次脚本注入就能引发多次攻击事件。

跨站脚本蠕虫便是利用这类漏洞编写的。

尤其是在社交网站的情况下,代码将进一步设计并自行在账户上宣传,营造出一个客户端的蠕虫病毒类型。

2.4跨站攻击与跨站脚本的危害

2.4.1跨站攻击

跨站攻击,即CrossSiteScriptExecution(通常简写为XSS)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。

利用跨站脚本进行跨站攻击,一般会有以下几种危害:

a.获取其他用户Cookie中的敏感数据

b.屏蔽页面特定信息

c.伪造页面信息

d.拒绝服务攻击

e.突破外网内网不同安全设置

f.和其他漏洞结合,修改系统设置,查看文件系统,执行系统命令等

g.其他

2.4.2跨站脚本的利用模式

针对每一类漏洞不同的特点,攻击者利用上述几类跨站点脚本漏洞时会有特定的利用模式。

下面将分别叙述。

非持久型跨站脚本的典型利用模式如下:

a.Alice经常浏览Bob所有的某个网站。

Alice使用自己的用户名和口令进行登录,并储存了敏感信息(如:

银行账户信息);

b.Mallory发现Bob的站点中存在反射型跨站脚本;

c.Mallory构造一个利用

f.此漏洞的恶意URL,并将其冒充为来自Bob的邮件发送给Alice;

g.Alice在登录到Bob的站点后,打开了Mallory提供的URL;

h.嵌入到URL中的恶意脚本会在Alice的浏览器中执行;而对Alice而言,

这段脚本就像直接来自Bob的服务器一样。

此脚本会窃取Alice的敏感信

息,然后在Alice完全不知情的情况下将这些信息发送到Mallory的站

点或信箱中。

持久型跨站脚本的典型利用模式如下:

a.Bob拥有一个Web站点,这站点允许用户发布信息,同时浏览已发布的信

息;

b.Mallory注意到Bob的站点中存在存储型跨站脚本;

c.M



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有