WEB漏洞——XSS

跨站脚本( Cross-site Scripting,简称为XSS或跨站脚本或跨站脚本攻击)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。

XSS攻击可以分为三种:反射型、存储型和DOM型

反射型XSS

 

反射型XSS又称非持久型XSS,这种攻击方式往往具有一次性

攻击方式:攻击者通过电子邮件等方式将包含XSS代码的恶意链接发送给目标用户。当目标用户访可该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有XSS代码的数据发送给目标用户的测览器,浏览器解析这段帯有XSS代码的恶意脚本后,就会触发XSS漏洞,一般用于获取对方cookies值

 

利用xss需要判断语句输出到页面的HTML位置,然后构造JavaScript闭合,下面以BUUCTF的xss靶场举例

可以看到username是可以变化的,检查页面代码也发现了username,可以进行xss攻击

直接在username写入代码

<script>alert (1);</script>

真实情况下,如果判断了存在xss漏洞,那么可以去在线的xss平台,生成攻击代码,例如获取cookies值,然后注入到存在xss漏洞的地方进行攻击。  

 

存储型XSS

存储型XSS又称持久型XSS,攻击脚本将被永久地存放在目标服务器的数据库或文件中,具有很高的隐蔽性。

攻击方式:这种攻击多见于论坛、博客和留言板,攻击者在发帖的讨程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器的后端存储器中。当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行

例如,恶意攻击者在留言板中加入以下代码

<script> alert (1);</script>

当其他用户访问留言板时,就会看到一个弹窗。可以看到,存储型XSS的攻击方式能够将恶意代码永久地嵌入一个页面中,所有访问这个页面的用户都将成为受害者。如果我们能够谨慎对待不明链接,那么反射型XSS攻击将没有多大作为,而存储型XSS则不同,由于它注入在一些我们信任的页面,因此无论我们多么小心,都难免会受到攻击。

 

DOM型XSS

DOM全称 Document Object Model,使用DOM可以使程序和脚本能够动态访问和更新文档的内容、结构及样式

DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞,但DOM型和反射型最大的区别是DOM型是不经过后台交互的,在前端的输入直接被DOM获取到

攻击方式:用户请求一个经过专门设计的URL,它由攻击者提交,而目其中包含XSS代码。服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

 

首先DOM型xss和别的xss最大的区别就是它不经过服务器,仅仅是通过网页本身的JavaScript进行渲染触发的

下面我们来看看典型的DOM型xss例子,将下面这句话复制到有道词典进行翻译,相信大家很快就能理解

This is a test <script>alert('1_Ry')</script>about xss

在线翻译_有道 (youdao.com)

看看这句话在html中的位置

这个例子中的xss语句<script>alert('1_Ry')</script>只是单纯的在前端解析,没有经过后端,属于前端自身的安全漏洞,

XSS漏洞防御

因为XSS漏洞涉及输入和输出两部分,所以其修复也分为两种

  • 过滅输入的数据,包括  ‘ 、“、<、>、on* 等非法字符
  • 对输出到页面的数据进行相应的编码转换,包括HTML实体编码
posted @ 2021-09-10 10:46  1_Ry  阅读(266)  评论(0编辑  收藏  举报