XSS漏洞是危害比较大的一个漏洞了,主要危害的是前端用户。XSS漏洞可以用来进行钓鱼攻击,前端JS挖矿,用户cookie获取。甚至可以结合浏览器自身的漏洞对用户主机进行远程控制。
这是我从B站学习视频上截取到的攻击过程的图片觉得比较生动形象。
我们需要了解XSS的三种基本类型
- 反射型XSS:<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一次性,所见即所得,一般容易出现在搜索页面。
- 存储型XSS:<持久化> 代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。
- DOM型XSS:基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。
XSS漏洞形成的基本原因
程序对输入和输出的控制不够严格,导致精心构造的脚本输入后,在输入到浏览器前端被当作有效代码解析执行从而造成危害。
测试流程
1.在目标站点找到输入点,比如查询接口,留言板等。
2.输入一组“特殊字符+唯一识别字符”,点击提交后,查看返回的源码,是否有做对应的处理。
3.通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合)。
4.提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果执行成功则说明存在XSS漏洞。
技巧
1.查询接口一般容易出现反射型XSS,留言板容易出现存储型XSS。
2.由于后台可能存在过滤措施,构造的script可能会被过滤掉,而无法生效,或者是环境限制了执行(浏览器)。
3.尝试变化不同的script,尝试绕过后台的过滤机制。
反射型XSS(get)
我们首先来看一下pikachu平台上的反射型XSS漏洞.
1.手续爱你我们根据测试流程先输入一组特殊字符。返回提示并不知道。
2.我们来查看一下网络的源代码。按住Ctrl+F找到刚才输入的字符。
3.我们尝试在输入框中输入一段script的代码,首先我们使用火狐浏览器的插件将输入框中可输入的字符串长度改长。然后在其中输入一个script的代码添加一个警告框alert。提交可以看到警告框。
4.其实我们仔细观察一下网络源码就可以知道,他是将我们提交的信息重新发送给我们,后台没有对我们提交的信息做任何的漏洞。GET型的XSS更容易被利用,一般的利用方式是利用跨站脚本的URL进行伪装之后发送给目标。
反射型XSS(POST型)
POST型的漏洞一般是使用表单方式进行提交,无法直接使用URL进行攻击。POST型XSS基本原理。
1.我们首先需要自己写一个恶意的表单页面来用作攻击。先在火狐浏览器上登陆一下。然后随便输入一个数据进行提交一下。我们可以看到并没有在URL中进行提交,说明我们并不能将我们的恶意代码嵌入到URL中发送。
2.当我们点击了这个恶意站点以后,我们也就是帮助恶意黑客提交了一个POST请求,就能获取我们的一些相关信息了。
原文地址:https://www.cnblogs.com/fairyting/p/12619091.html