网络攻防技术- XSS漏洞检测及防范_第1页
网络攻防技术- XSS漏洞检测及防范_第2页
网络攻防技术- XSS漏洞检测及防范_第3页
网络攻防技术- XSS漏洞检测及防范_第4页
网络攻防技术- XSS漏洞检测及防范_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目六Web网站攻击与防范【项目概述】某安全运维公司接到一个任务,要求对客户公司的Web网站进行渗透测试,已知服务器IP地址为00/24。请找出该Web网站存在的安全漏洞并给出防范攻击的措施。【项目分析】Web是万维网(WorldWideWeb,WWW)的简称,它利用HTTP(HyperTextTransferProtocol,超文本传输协议)来建立用户与服务器之间的标准交互方式。常用的Web应用都是基于网页形式开展的。Web网站由多个网页组成,提供各种类型的网络服务。早期的Web网站只有浏览功能。随着IT技术的发展,现在的Web网站逐渐发展到能支持用户进行自定义查询、支持用户登录并互动、在线交易等复杂业务。在这个过程中,需要添加额外的组件来实现上述功能,因此,目前的Web站点都会附带数据库及其他服务,从而实现对当前站点及用户信息的存储及复杂功能的支持。基于HTTP协议的Web网站执行一次典型信息查询任务的工作流程如图6-1所示。图6-1Web网站执行一次信息查询的工作流程图中所示的流程与真实的大型网站应用流程并不完全一致,只用于说明基本原理。因为大型网站要同时为数以千万的用户请求提供服务,仅通过一台服务器根本无法支持海量的用户访问请求,所以会利用负载均衡、CDN、云技术、分布式数据库等技术来应对大量用户的并发访问。然而,所涉及的所有环节均可能存在安全隐患,其中一项服务产生问题都可能影响用户的正常使用或者危害Web服务器的安全。因此,要把Web系统中的所有组件都纳入安全防护体系之中。目前,大多数企业都会拥有自己的Web网站,网站成为了企业对外宣传和业务开展的重要渠道。黑客也常常盯住企业的网站,希望通过利用企业网站的漏洞控制企业网站,进而控制企业的服务器,从中获得企业内部信息的控制权。常见的Web安全漏洞包括:SQL注入漏洞、XSS漏洞、命令执行漏洞、CSRF漏洞、文件上传漏洞、文件包含漏洞等,还有一些业务层面的逻辑漏洞。渗透测试人员需要利用技术发现这些漏洞,并给出防御措施,才能保证Web网站的安全运行。

项目主要内容:

任务一Web漏洞检测任务二SQL注入漏洞检测与防范任务三XSS漏洞检测及防范任务四

文件上传漏洞检测及防范任务三XSS漏洞检测及防范任务描述根据任务一中对目标网站漏洞的扫描结果,我们发现该网站的某些页面存在被XSS攻击的风险。请使用渗透测试技术进一步检测该页面XSS漏洞的情况并给出防范措施。任务分析1.XSS攻击的原理。跨站脚本攻击(XSS攻击),其英文全称为CrossSiteScripting,原本缩写应当是CSS,但为了和层叠样式表(CascadingStyleSheet,CSS)有所区分,安全专家们通常将其缩写成XSS。XSS攻击是指攻击者利用网站程序对用户输入过滤不足的缺陷,输入可以显示在页面上对其他用户造成影响的JavaScript、HTML代码,从而盗取用户资料、利用用户身份进行某种动作或对访问者进行病毒侵害的一种攻击方式。当前主流的网站一般具有用户输入参数的功能,如网站留言板、评论区等。攻击者利用其用户身份在输入参数时附带了恶意脚本,在提交服务器之后,服务器并没有对用户端传入的参数做任何安全过滤。之后服务器会根据业务流程,将恶意脚本存储在数据库中或直接回显给用户。在用户浏览含有恶意脚本的页面时,恶意脚本会在用户浏览器上成功执行。恶意脚本有很多种表现形式,如常见的弹窗、窃取用户Cookie、弹出广告等,这也是跨站脚本攻击的直接效果。如图6-35所示的页面,正常的业务流程为当用户在文本框中输入自己的名字后,页面会显示“HelloXXX(用户名字)”的信息。图6-35网页正常的业务流程而如果别有用心的用户在文本框中输入了一条JavaScript的语句:<script>alert(“haha”)</script>网页将不再显示正常的结果,而是弹出了一个窗口,显示“haha”,也正是我们输入的那条JavaScript语句的执行结果,如图6-36所示。图6-36网页被XSS攻击这是因为网页未对用户输入内容作安全性检查,导致用户输入的非正常内容被网页当作正常内容去执行。这种弹出窗口的效果仅是进行XSS测试的一种方法。在真实的场景中,XSS攻击所带来的后果会更加严重,轻者会弹出广告,重者会导致用户账户失窃,数据信息被读取、篡改,非法转账,强制发送电子邮件,受控向其他网站发起攻击等。2.XSS攻击的分类。XSS攻击通常在用户访问目标网站时或者之后进行某项动作时触发并执行。根据攻击代码的存在地点及是否被服务器存储,并且根据XSS攻击存在的形式及产生的效果,可以将其分为三种类型。(1)反射型XSS。页面将用户输入的数据通过URL的形式直接或未经完善的安全过滤就在浏览器中进行输出。由于此类型的跨站代码存在于URL中,因此,黑客通常需要通过诈骗或加密变形等方式,将存在恶意代码的链接发给用户,只有用户点击以后才能使攻击成功实施。前面那个别有用心的用户输入的JavaScript语句即是发起的反射型XSS攻击。(2)存储型XSS。Web应用程序将用户输入的数据信息保存在服务端的数据库或其他文件形式中,网页进行数据查询展示时,会从数据库中获取数据内容,并将数据内容在网页中进行输出展示。只要用户访问具有XSS攻击脚本的网页时,就会触发攻击效果,因此存储型XSS具有较强的稳定性。常见的场景就是博客或新闻发布系统中的评论区,黑客将包含恶意代码的数据信息直接写入文章或文章评论中,所有浏览文章或评论的用户就会被黑客在他们的客户端浏览器中执行插入的恶意代码。(3)基于DOM的XSS。严格意义上来讲,基于DOM的XSS攻击并非按照“数据是否保存在服务器端”来划分,其从效果上来说也算是反射型XSS。但是这种XSS实现方法比较特殊,是由JavaScript的DOM节点编程可以改变HTML代码这个特性而形成的攻击。不同于反射型XSS和存储型XSS,基于DOM的XSS攻击往往需要针对具体的JavaScriptDOM代码进行分析,并根据实际情况进行XSS攻击的利用。3.XSS漏洞测试流程。XSS漏洞的发现是一个困难的过程,尤其是对于存储型XSS漏洞。这主要取决于可能含有XSS漏洞的业务流程针对用户参数的过滤程度或者当前的防护手段。由于XSS漏洞最终仍需要业务使用者浏览后方可触发执行,导致某些后台场景需要管理员触发后方可发现。因此,漏洞是否存在且可被利用,很多时候需要较长时间才会得到结果。目前市场上常见的Web漏洞扫描器均可扫描反射型XSS漏洞,并且部分基于浏览器的XSS漏洞测试插件可测试存储型XSS漏洞。但以上工具均会存在一定程度的误报,因此需要安全人员花费大量时间及精力对检测结果进行分析测试。所以,使用XSS扫描工具配合手工测试才是发现XSS漏洞的最佳方法。手工测试XSS漏洞的一般流程包括以下几个步骤。(1)漏洞挖掘,寻找输入点。一般情况下,XSS攻击是通过“HTML注入”方式来实现的。也就是说,攻击者通过提交参数,意图修改当前页面的HTML结构。XSS攻击成功时,提交的参数格式可在当前页面拼接成可执行的脚本。可见,XSS漏洞存在的要求是:当前页面存在参数显示点,且参数显示点可被用户控制输入。因此,寻找用户端可控的输入点是XSS攻击成功的第一步。在一个常规的网站中,反射型XSS攻击一般存在于网站的搜索页面、登录页面等用户的简单交互页面,或者GET型请求的URL里。存储型XSS一般发生在留言板、在线信箱、评论栏等处,表现特征是用户可自行输入数据,并且数据会提交给服务器。(2)寻找输出点。XSS攻击的受害者是访问过包含XSS恶意代码页面的用户,输入内容需要在用户页面上进行展示才能展开XSS攻击。针对一般的留言板、评论栏系统,渗透测试人员能根据经验轻松判断出输出点的位置;对于一些不常见的系统,可以通过将输入内容在回显页面中进行搜索来确定输出的位置。测试主要基于两个目的:①确定网站对输入内容是否进行了输出,判断是否可以展开XSS攻击。②根据输出的位置的HTML环境来编写有效的XSS代码。有点输出点无法直接回显,例如一些网站的“站长信箱”模块。用户输入的内容可能不会在前台展示,或者需要一定的时间通过人工审核后才能展示,因此也就无法直接观察测试结果,这给测试输出点带来了很大的难度。这种情况下,一般通过经验判断是否会输出,或者直接尝试XSS攻击窃取Cookie。由于后台审核的一般是管理账户,若测试成功可能直接获得管理权限,这也就是俗称的“XSS盲打后台”。(3)测试基本跨站代码。通过上面两个步骤,可发现具体的输入点及输出位置,那么存在XSS漏洞的基本条件已经具备了。但XSS攻击在这个测试点是否能顺利进行,就需要通过一些基本的跨站代码来测试了。如果其中环节被过滤,则攻击依然无效。测试XSS漏洞的经典方式就是“弹窗测试”,即在输入中插入一段可以产生弹窗效果的JavaScript脚本,如果刷新页面产生了弹窗,表明XSS测试成功。一般的弹窗测试脚本如下:<script>alert(/xss/)</script>这段代码的意义是:通过JavaScript执行弹窗命令,弹窗命令为alert,窗口显示内容为/xss/(当然也可以自定义弹窗显示的内容)。任务实施本次任务实施的拓扑示意图如图6-37所示。图6-37XSS漏洞检测及防范拓扑示意图1.对目标网页进行XSS漏洞测试。步骤1访问目标网页,寻找其输入点和输出点,如图6-38所示。该网页是一个类似论坛的页面。当用户输入了自己的名字和所要发送的消息,点击“SignGuestbook”按钮,该用户的名字和消息就会显示在下方的消息输出区域。图6-38XSS漏洞测试第一步步骤2编写测试代码。在Message文本框中输入经典XSS攻击测试脚本<script>alert(“haha”)</script>点击“SignGuestbook”按钮后发现出现了弹窗效果,如图6-39所示,说明该网页存在XSS漏洞。图6-39XSS漏洞测试第二步步骤3刷新该页面,发现即使没用任何输入,仍旧会有弹窗。说明该XSS漏洞是一个存储型XSS。之前写的测试脚本已经被写入数据库中存储下来,每次刷新页面,都要读取数据库,都会执行该测试脚本。步骤4利用XSS漏洞获取网页的Cookie。在Message文本框中输入漏洞利用的语句:<script>alert(document.cookie)</script>点击“SignGuestbook”按钮后发现弹窗中包含的是当前页面的Cookie,如图6-40所示。该语句的基本功能也是弹窗,但是其弹出的内容是document.cookie,也即是获取当前页面的Cookie。图6-40XSS漏洞利用——获取Cookie知识链接:Web漏洞靶机——DVWADVWA(DamnVulnerableWebApp)是一个基于PHP/MySQL的充满漏洞的Web应用程序。它的主要目标是帮助安全专业人员在一个合法的环境中测试他们的技能和工具,帮助web开发人员更好地理解保护web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习web应用程序安全。官方网站为:https://www.dvwa.co.ukDVWA共有十二个模块,分别是BruteForce(暴力破解)、CommandInjection(命令行注入)、CSRF(跨站请求伪造)、FileInclusion(文件包含)、FileUpload(文件上传)、InsecureCAPTCHA(不安全的验证码)、SQLInjection(SQL注入)、SQLInjection(Blind)(SQL盲注)、WeakSessionIDs(弱会话ID)、XSS(DOM)(DOM型跨站脚本)、XSS(Reflected)(反射型跨站脚本)、XSS(Stored)(存储型跨站脚本)。每个模块的代码都有4种安全等级:Low、Medium、High、Impossible。通过从低难度到高难度的测试并参考代码变化可帮助学习者更快的理解漏洞的原理。DVWA是安全专业初学者进行Web漏洞学习的非常好的工具。本次任务的目标网站即是使用的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论