跨站脚本漏洞(XSS)浅析

一、跨站脚本漏洞概述

1、漏洞概述

  • XSS漏洞一直是web漏洞中危害比较大的漏洞,在OWASP TOP10中一直是排在前三的。
  • XSS是一种发生在Web前端的漏洞,所以其危害的对象也主要是前端用户。
  • XSS通常可以用于带钓鱼、前端JS挖矿、获取用户cookie等。甚至结合浏览器自身漏洞可以对用户主机进行控制。

2、攻击流程(窃取cookie)

  1. 用户访问XSS页面,触发XSS脚本,服务器返回“带恶意JS的”页面
  2. 客户端执行脚本,发送窃取到的cookie
  3. 攻击者使用窃取到的cookie伪造用户登录,造成破坏

3、漏洞形成原因

形成XSS漏洞的主要原因是程序对输入与输出的控制不够严格,导致精心构造的脚本输入后,在输出到前端时被浏览器当作有效代码进行解析从而产生危害。

二、跨站脚本漏洞类型及其测试流程

1、基本分类

反射型: 交互的数据一般不存放于数据库中,一次性的,所见即所得,一般出现在信息查询、显示页面等。
存储型: 与数据库之间存在数据交互,永久性存储,一般出现在留言板、注册等界面。
DOM型: 类似于反射型,也可以说是反射型的一种,主要特点是不与服务器进行交互,通过DOM操作前端代码输出的时候产生的问题。

2、一般测试流程

  1. 在目标站点上找到输入点,比如查询接口,登录注册界面等
  2. 输入一组“特殊字符+唯一标识符”,提交后,检查返回的源码是否有做对应的处理。
  3. 通过搜索定位到唯一标识符,结合唯一标识符前后的语法确认是否可以构造JS代码
  4. 提交构造的JS脚本(以及各种绕过姿势),看是否可以执行成功,如果能,则说民存在XSS漏洞。

注:

  • 一查询接口容易出现反射型XSS,留言板,注册界面等容易出现存储型XSS
  • 由于后台一般存在过滤措施,所以构造的script可能会被过滤掉,从而无法生效。
  • 通过变换不同的script,可以尝试绕过后台过滤机制。

三、反射型XSS的实验演示

实验平台环境: Windows10 ,Firefox浏览器,pikachu漏洞练习平台
第一步:
输入一个特殊字符+自定义的标识符(<>666),输入内容被直接返回。
在这里插入图片描述
第二步:
检查html源码,发现输入内容是直接通过一个p标签显示出来的。
在这里插入图片描述
第三步:
使用script标签构造JS语句,进行测试,尝试弹出一个提示框,发现输入内容长度具有限制,检查HTNL源码,发现是前端设置的限制,手动修改后继续输入。
在这里插入图片描述
通过输入语句<script> alert("hello!") </script>后提交表单,发现执行成功,说明存在XSS漏洞!
在这里插入图片描述
并且发现该XSS漏洞页面使用的是get提交方法,所以可以确定的是这是一个基于get的反射型XSS漏洞。

四、存储型XSS的实验演示

实验环境:Windows10 ,Firefox,DVWA漏洞练习平台
第一步:
随便输入一个特殊字符+自定义标识符,发现所有内容都被显示到留言板中,检查HTML源码,发现输入的内容是通过一个列表的<br>标签显示,并没有做任何的过滤。
在这里插入图片描述
第二步:
输入构造的JS代码(<script>alert(23164834563276)</script>),进行测试后发现留言板内容为空,但相应的JS代码会被执行,切换到其他页面后再切换回来发现依然会显示JS代码的执行效果,说明这是一个存储型的XSS漏洞。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45590334/article/details/112263958