XSS跨站脚本初探
一、XSS初探
1、什么是xss
XSS原称CSS(cross site script),跨站脚本攻击。是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入,提供给其他用户使用的页面中。
由于web应用程序对用户的输入过滤不足而产生的
攻击者利用网站漏洞吧恶意的脚本代码(HTML代码/JavaScript脚本)
当用户浏览这些网页是,就会执行其中的恶意代码
主要库乐队用户cookie资料窃取、会话劫持、钓鱼欺骗等这种攻击
2.攻击流程
(一、)JavaScript实例
1、web前端源代码编写
2、访问我们编写的文件是讲JS代码直接写至前端代码中,这个是肯定可以执行的,一般情况下我们都是通过注入的方式给他注入
注:我们这里是将xss
(二)XSS脚本实例
1.源代码编写
(1)网页前端代码
(2)网页后端代码
函数解释:request函数既可以接收get请求也可以接收post请求
2.正常访问网站,在页面中随机输入一个值,观察结果
点击提交后,观察页面变化(这里我们正常输出了前端页面的输入的值)
3.再次访问前端界面,这里我们给它输入一个script脚本(XSS脚本)
如图,点击提交后,我们输入的Script语句进行了执行,这里就是一个XSS漏洞
注:此处我们是通过POST请求方式将语句带入并执行
4.访问后端源代码,这里我们通过GET方式给他输入一个script脚本(XSS脚本)
- ?name= 弹出带有确定,取消的对话框
二、跨站脚本的分类
XSS根据其特性和利用手法的不同,主要分为三大类:
- 反射型跨站脚本
- 持久型(存储型)跨站脚本
- DOM型
、反射型XSS
反射型跨站脚本(reflected cross-site scripting)也称非持久型,参数型跨站脚本
主要用于将恶意脚本附加到URL地址的参数中
例如:http://192.168.1.121:86/3.xss/05/XSS4.php?name=
1.1反射型XSS攻击原理 - 攻击者将恶意链接通过各种方式发送给受害者,诱使受害者点击链接,受害者一旦点击链接,机会携带者我们的恶意脚本发送给服务器,服务器执行完后,给受害者反馈的数据包中依然带着我们的恶意脚本,这样,受害者就收到了XSS攻击
1.2编码转换
前面我们提到攻击者是讲恶意链接发送给受害者,受害者如果能够识别这个恶意链接,不去点击他,那么我们的攻击就不会生效,这里我们就需要对我们的恶意链接进行包装,也就是编码转换。(进行URL编码后将会大大正价迷惑性,增大攻击成功率)
2.持久性XSS
持久性跨站脚本(Persistent Cross-site Scripting)==存储型跨站脚本(Stored Cross-site Scripting)
此类XSS不需要用户点击特定的URL就能执行跨站脚本
攻击者事先将恶意JavaScript代码上传或存储到漏洞服务器中。
当受害者浏览包含此恶意Javascript代码的页面机会执行恶意代码。
2.1、持久型XSS攻击原理
存储型XSS攻击者不需要与受害者进行任意交互。当攻击者将恶意diamante传到服务器后,受害者只要访问带有我们恶意代码的信息,存储型XSS就会生效,机会打到我们恶意攻击的目的。
3、DOM型XSS
3.1什么是DOM
DOM就是把我们的html抽象成树,便于我们去获取里面的数据信息
3.2搭建网站源代码
访问页面
如图:是一个非常简单的购物清单,显示的内容是一份购物清单
DOM树
DOM会将HTML文件的节点构造成树状结构,以此反映HTML文件本身的阶层结构
3.3DOM型XSS原理
客户端的脚本程序可以通过DOM动态地检查和修改页面内容。
程序执行不依赖于服务器端的数据,从客户端获得DOM中的数据并在本地执行。(特点:前端html界面)
浏览器用户可以曹忠DOM中的一些对象,如URL、location等。
用户在客户端输入的数据如果包含了恶意JavaScript脚本,而这些脚本没有经过适当的过滤和消毒,应用程序可能受到基于DOM的XSS攻击。