Web的基本漏洞--XSS漏洞

news2024/11/19 0:40:18

目录

一、XSS漏洞介绍

1.XSS漏洞原理

2.XSS漏洞的类型

反射型

存储型

DOM型

三者区别

3.漏洞识别

4.攻击方式

5.XSS漏洞危害

6.漏洞防御

二、XSS漏洞的攻击方式--注入脚本代码

1.反射型

2.存储型

3.DOM型

4.XSS盲打

5.XSS漏洞的绕过技术

双写绕过

编码绕过

伪协议绕过 

空格绕过

大小写转换绕过

利用IE特性绕过

利用 css特性绕过

注释绕过关键字过滤

+16进制绕过对"<>"的过滤

+unicode绕过对"<>"的过滤

IMG源绕过

6.XSS 的防范措施


 

一、XSS漏洞介绍

XSS 漏洞(跨站脚本漏洞 (Cross Site Scripting)

XSS是一种发生在Web前端的漏洞,所以其危害的对象也主要是前端用户。是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强调的是,XSS不仅仅限于JavaScript脚本语言,还包括flash等其它脚本语言。

1.XSS漏洞原理

服务器对用户提交的数据过滤不严,导致浏览器把用户的输入当成了脚本代码(js) 并直接返回给客户端执行,从而实现对客户端的攻击目的

2.XSS漏洞的类型

  1. 反射型
  2. 存储型
  3. dom型

反射型

反射型XSS是临时性的,指注入的代码不在后端存储,但会在服务器端进行处理然后进行回显

存储型

存储型XSS会将恶意代码存储在数据库中,从而 达到一个长期危害的作用。

DOM型

DOM型XSS利用的是html dom,不经过后端,只在浏览器处理并执行,也是临时性的。 

三者区别

  1. 存储型xssdomxss是一次性的攻击,而存储型xss是持久型的
  2. 相对于反射和存储型xssDOMxss的攻击数据不经过服务器,难以被流量监控设备 检测出来。

3.漏洞识别

存在输入框且输入框未进行特殊字符过滤

4.攻击方式

在系统中寻找存在输入框的地方,输入payload测试,然后选择类型注入想要的脚本代码

特殊情况:

如果有过滤,可通过<a herf="#" οnclick="alert(document.cookie)">等绕过script过滤,可通过javascript:alert(document.cookie)等绕过但双引号过滤。 

XSS payload大全:https://github.com/payloadbox/x

5.XSS漏洞危害

  1. 窃取用户Cookie
  2. 后台增删改查文章
  3. XSS钓鱼攻击
  4. 利用XSS漏洞进行传播和修改网页代码
  5. XSS蠕虫攻击
  6. 网站重定向
  7. 获取键盘记录
  8. 获取用户信息等
  9. 结合其他漏洞(结合cstf漏洞进行getshell:例如前段时间爆出的小皮面板rce漏洞

危害程度:存储型>反射型> DOM型

6.漏洞防御

总的原则:输入做过滤,输出做转义
1、对输入内容进行转义or过滤。

2、对输出内容进行转义or编码

3、设置cookie为httponly,使客户端无法通过脚本获得cookie

 

二、XSS漏洞的攻击方式--注入脚本代码

通过对输入框写入脚本代码来实现XSS漏洞攻击

 

温馨提示:与post方式的xss漏洞相比,Get类型的更加容易被利用,只需要将带有xss漏洞的URL发送给目标即可

1.反射型

在输入框中输入一些特殊的符号如:;"’<>9999
查看这些特殊字符是否会被过滤,有没有被输出
查看返回页面的源码,CTRL+F在页面内查找我们输入的字符串,查看我们的输入是否会被原封不动的输出
如果在输入较长的字符串后,发现不能输入了,这是在前端进行的安全设置。只需要在该页面打开web开发者工具,找到限制输入长度的语句修改即可。
输入代码<script>alert('xss')</script>,可以发现输入的代码被执行
因为是一次性的,并没有存储到后台的数据库当中所以当我们刷新页面后弹窗消失

2.存储型

和反射性xss形成的原因一样,区别就在于后台会将我们的输入保存到数据库当中,造成长时间的伤害。一般出现在像留言板这样的地方。

和之前的思路一样,在输入框中输入一些特殊字符,点击提交。打开页面源码,看是否对我们的输入进行了处理
和上面一样构造一个出现弹窗的jsp语句,提交后出现了弹窗。进行刷新页面发现弹窗还在,说明我们的输入被存储起来了

3.DOM型

你可以把DOM理解为一个一个访问HTML的标准编程接口。Dom就是纯前端的操作

pikachu关于Dom型关卡,查看页面的源码:
<a href='"+str+"'>what do you see?</a>
还是构造一个弹窗:#' οnclick="alert(666)”>
然后此处就变成了:
<a href='#' οnclick="alert(666)">'>what do you see?</a>

由于Dom型xss为纯前端操作,都是客户端的事,所以无法通过WAF进行防御

4.XSS盲打

xss盲打指的是一种攻击场景。

意思就是说我们的输入并不会在前端进行输出,也就是在后台才会进行输出,换句话说,只有管理员才会看到我们的输入。
例如提交:<script>alert('xni')</script>设置一个弹窗
这就是xss盲打,对攻击者来说只是尝试的输入,并不知道后台是否被输出,只是尝试的输入跨站脚本。管理员被x到,攻击者成功。这种危害比较大,如果在前端输入一段盗取cookie的脚本,管理员一登陆,管理员的cookie就会被获取。攻击者就可以伪装管理员登陆后台,后台的权限就大了。

5.XSS漏洞的绕过技术

绕过技术是指,绕过xss漏洞的防御,完成xss漏洞攻击

双写绕过

代码:<scscriptript>alert("xss")</scscriptript>

编码绕过

编码:<script>eval(atob(base64))</script>

伪协议绕过 

代码:<a hrrf="javascript:alert(document.cookie)">xss</a>

空格绕过

代码: <sc   ript>alert("xss")</s   cript>

大小写转换绕过

 代码: <Script>alert("xss")</Script>

利用IE特性绕过

IE中 两个反引号``可以闭合左边双引号 `` οnmοuseοver=alert("xss")

利用 css特性绕过

background-color:#f00;backbround:url("javascript:alert("xss");");

注释绕过关键字过滤

expres/**/sion(if(!window.x){alert(document.domain);window.x=1})

+16进制绕过对"<>"的过滤

代码: \\x3cscript\\x3ealert("xss")\\x3c\script\\x3e

+unicode绕过对"<>"的过滤

代码:\\u3cscript\\u3ealert("xss")\\u3c\script\\u3e

IMG源绕过

源的含义
源由协议,主机名,端口名组成

范例:协议://主机名:端口号/

同源策略
在计算机中,同源策略用于阻止一个非同源的页面恶意代码去访问另外一个非同源页面

只有两个页面属于同一个源才能互相访问。不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源,所以a.com下的js脚本采用ajax读取b.com里面的文件数据会报错

IE源特殊处理
1.位于可信域的互信的域名间,不受同源策略限制
2.ie判断同源时不会考虑端口
可是通过document.domain读取或修改源。但是有限制。修改之后的源不能通过其他脚本再次修改

domain属性可以解决因安全策略带来的不同文档的属性共享问题。降域 document.domain同源策略认为域和子域属于不同的域,比如:child1.a.com 域 a.com 是不同源

可以通过设置document.domain='a.com' ,浏览器就会认为它们都是同一源。想要实现以上两个任意页面之间的通信,两个页面必须都设置document.domain='a.com'
 

6.XSS 的防范措施

对用户的输入进行过滤
比如说添加黑名单或者白名单规则,比如说对& " ' / expression javascript import 等敏感字符进
行转义
使用 HttpOnly Cookie
如果 cookie 中设置了 HttpOnly 属性,那么通过 js 脚本将无法读取到 cookie 信息,这样能有效的防止 XSS
攻击,窃取 cookie 内容,这样可以有效的防止 XSS 攻击窃取 cookie。
response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");
设置 X-XSS-Protection 属性
该属性被所有的主流浏览器默认开启。X-XSS-Protection,即 XSS 保护属性,是设置在响应头中目的是用
来防范 XSS 攻击的。在检查到 XSS 攻击时,停止渲染页面。
header("X-XSS-Protection: 1");
开启 CSP 网页安全策略
CSP 是网页安全策略(Content Security Policy)的缩写。开启策略后 可以起到以下作用
禁止加载外域代码,防止复杂的攻击逻辑。
禁止外域提交,网站被攻击后,用户的数据不会泄露到外域。
禁止内联脚本执行(规则较严格,目前发现 GitHub 使用)。
禁止未授权的脚本执行(新特性,Google Map 移动版在使用)。
合理使用上报可以及时发现 XSS,利于尽快修复问题。
避免内联事件
尽量不要使用 onLoad=“onload(’{{data}}’)”、onClick=“go(’{{action}}’)” 这种拼接内联事件的写法。在
JavaScript 中通过 .addEventlistener() 事件绑定会更安全。
使用模板引擎
开启模板引擎自带的 HTML 转义功能。例如: 在 ejs 中,尽量使用 而不是 ; 在 doT.js 中,尽量使用
{{! data } 而不是 {{= data }; 在 FreeMarker 中,确保引擎版本高于 2.3.24。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/591986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ARIMA-WOA-LSTM】差分自回归移动平均方法-鲸鱼优化算法-LSTM预测研究(python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Spring Security的账号密码登录+Azure AD的授权登录集成Demo

一、项目准备&#xff1a; 1.创建一个Springboot项目。 2.注册一个微软的Azure AD服务&#xff0c;并且注册应用&#xff0c;创建用户。 springboot项目pom文件如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"…

广播风暴的成因以及如何判断、解决

广播风暴&#xff08;broadcast storm&#xff09;简单的讲是指当广播数据充斥网络无法处理&#xff0c;并占用大量网络带宽&#xff0c;导致正常业务不能运行&#xff0c;甚至彻底瘫痪&#xff0c;这就发生了“广播风暴”。一个数据帧或包被传输到本地网段 &#xff08;由广播…

ObjectARX如何判断点和多段线的关系

目录 1 基本思路2 相关知识点2.1 ECS坐标系概述2.2 其他点坐标转换接口2.3 如何获取多段线的顶点ECS坐标 3 实现例程3.1 接口实现3.2 测试代码 4 实现效果 在CAD的二次开发中&#xff0c;点和多段线的关系是一个非常重要且常见的问题&#xff0c;本文实现例程以张帆所著《Objec…

Vue事件大小写驼峰命名导致无法执行问题解决

文章目录 问题解决方案问题大致原因 问题 驼峰命名事件名不会正常执行 <!DOCTYPE html> <html lang""> <head><title>Vue Emit Example</title><script src"../js/vue.js"></script> </head> <body…

港科夜闻|香港科技大学与浪潮集团签署战略合作协议,共同推动技术研发和成果转化...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科技大学与浪潮集团签署战略合作协议&#xff0c;共同推动技术研发和成果转化。根据协议&#xff0c;双方将聚焦云计算、大数据、新一代通信等领域&#xff0c;围绕联合研发、人才培养、研发中心建设和超高清显示等方…

基于车站约束的地铁系统协调客流控制模型与算法

1 文章信息 《Model and algorithm of coordinated flow controlling with station-based constraints in a metro system》是2021年发表在Transportation Research Part E上的一篇文章。 2 摘要 随着城市人口的增长和交通需求的快速增长&#xff0c;世界上许多大城市的地铁系统…

Python3数据分析与挖掘建模(7)使用matplotlib和seaborn画图

1. 可视化分析 1.1 概述 可视化分析是数据分析中重要的一环&#xff0c;它可以帮助我们更直观地理解数据的特征、趋势和关系。在Python中&#xff0c;有多个库可以用于数据可视化&#xff0c;包括matplotlib、seaborn和plotly等。 1.2 常用的可视化方法和对应的库&#xff1…

4.3. 缓冲流

缓冲流是Java I/O中的一个重要概念&#xff0c;它可以提高文件读写的性能。在本节中&#xff0c;我们将详细讨论缓冲流的概念、使用方法以及实例。 缓冲流有两种类型&#xff1a;缓冲字节流和缓冲字符流。缓冲字节流包括BufferedInputStream和BufferedOutputStream&#xff0c…

vue中this.$set的用法

this.$set( target, key, value ) target&#xff1a;要更改的数据源(可以是对象或者数组) key&#xff1a;要更改的具体数据 value &#xff1a;重新赋的值 当我们给对象加了一个属性&#xff0c;在控制台能打印出来&#xff0c;但是却没有更新到视图上时&#xff0c;这个时…

【靶场】双重内网渗透测试场景

文章目录 前言一、开始渗透二、横向移动提交flag总结 前言 使用vulfocus搭建一个内网场景靶场拓扑如下&#xff1a; 入口有两个&#xff0c;一个是think PHP2.x命令执行和5x的命令执行漏洞&#xff0c;后续需要搭建二层隧道进行渗透测试。 一、开始渗透 目标&#xff1a; …

Vue为什么组件销毁后定时器会继续

原因 在 Vue 中&#xff0c;组件销毁后定时器可能会继续运行&#xff0c;这是因为这个框架使用了虚拟 DOM 技术。虚拟 DOM 可以提高渲染效率和性能&#xff0c;但也带来了一些问题。 当我们在 Vue 组件中创建定时器时&#xff0c;实际上是在组件的生命周期方法&#xff08;例如…

OJ练习第124题——叶值的最小代价生成树

叶值的最小代价生成树 力扣链接&#xff1a;1130. 叶值的最小代价生成树 题目描述 给你一个正整数数组 arr&#xff0c;考虑所有满足以下条件的二叉树&#xff1a; 每个节点都有 0 个或是 2 个子节点。 数组 arr 中的值与树的中序遍历中每个叶节点的值一一对应。 每个非叶节…

Arcgis for javascript 应用开发相关网站推荐(SDK,github社区等)

一、什么是arcgis for javascript ArcGIS for JavaScript是一种用于构建基于Web的GIS应用程序的开发框架。它允许开发人员使用Esri的地图和地理空间数据来构建具有交互性和可视化效果的应用程序。ArcGIS for JavaScript提供了丰富的API和组件&#xff0c;使开发人员可以将地理…

BLCY-6-5-90、、BLCY-6-25-90比例螺纹插装式溢流阀控制器

BLCY-6-5-90、BLCY-6-8-90、BLCY-6-16-90、BLCY-6-25-90比例螺纹插装式溢流阀是螺纹插装式的先导式溢流阀&#xff0c;可以作中小流量液压系统的压力控制阀&#xff0c;配置比例放大器输出电流&#xff0c;根据输入到线圈电流的大小比例控制系统压力。

【Rust 日报】2023-05-28 一个构建在TCP上的聊天工具

tcp-chat&#xff1a;构建在TCP上的简单快速轻量的聊天工具 tcp-chat通过TCP进行通信&#xff0c;该项目的目的是了解并行性和底层网络通信。 前端工具&#xff1a;Solid、Tauri、Vite 后端工具&#xff1a;Rust、Tokio、Serde GitHub: https://github.com/gatomod/tcp-chat ez…

信号链基础

信号链&#xff08;SIGNAL CHAIN&#xff09;&#xff1a;一个系统中信号从输入到输出的路径。 从信号的采集&#xff0c;放大&#xff0c;传输&#xff0c;处理一直到对相应功率器件产生执行的一整套信号流程叫信号链。具体来说&#xff0c;信号链是对从信号采集&#xff08;传…

WebGPU:下一代 Web 图形和计算 API

WebGPU 是一种新兴的 Web 标准&#xff0c;旨在为现代图形和计算应用提供高性能、低功耗的 API。本文将介绍 WebGPU 的背景、特点、用途以及和 WebGL 的对比。 一、背景 随着 Web 技术的不断发展&#xff0c;越来越多的高性能图形和计算应用开始出现在浏览器中。WebGL 是迄今为…

陈丹琦团队提出低内存高效零阶优化器MeZO,单卡A100可训练300亿参数模型

深度学习自然语言处理 原创作者&#xff1a;辰宜 今天下午突然发现了一篇陈丹琦大佬的巨作~ 大家一起来简单瞅瞅。 本文旨在介绍一种用于fine-tuning语言模型&#xff08;LM&#xff09;的低内存优化器——MeZO&#xff0c;内存减少多达12倍。使用单个A100 800G GPU&#xff0c…

中文完整版FL Studio21永久免费升级

集合最新FL基础操作、编曲技巧、混音技巧、乐理基础、声乐演奏等各类内容&#xff0c;比如更高端版本才有的必备原厂插件Pitcher和Sakura&#xff0c;还有智能编曲插件ORB&#xff0c;编曲软件FL Studio21版本更新现已发布&#xff0c;在这次更新中优化了很多功能&#xff0c;但…