XSS | XSS 漏洞介绍

news2024/11/18 14:48:10

关注这个漏洞的其他相关笔记:XSS 漏洞 - 学习手册-CSDN博客

0x01:XSS 漏洞简介

跨站脚本(Cross-Site Scripting,简称为 XSS)攻击,是一种针对网站应用程序的安全漏洞进行攻击的技术,是代码注入的一种。它允许恶意用户将代码注入网页,其他用户在浏览网页时就会受到影响。 这些恶意网页程序通常是 JavaScript,但实际上也可以包括 Java、VBScript、ActiveX、Flash 或者甚至是普通的 HTML。恶意用户利用 XSS 代码攻击后成功后,可能得到很高的权限(如执行一些操作)、私密网页内容、会话和 Cookie 等各种内容。

0x0101:XSS 漏洞演示

实验工具准备

  • PHP 运行环境:phpstudy_x64_8.1.1.3.zip(Apache2.4.39 + PHP 5.3.29nts)

  • 实验源码包(附配置流程):SessionLab01.zip

实验环境的搭建流程我一起放在了 SessionLab01.zip 中了,这里就不多说了,下面直接开始演示。

访问实验地址,可以看到我们当前是处于一个未登录的状态(页面显示 Password Login):

随便输入一个用户名和密码进行登录:

可以看到,页面显示 “HI,Blue17”,证明它认识我们了,OK,这是正常用户的正常操作,没问题。

我们不一样,我们喜欢搞骚操作,右击查看网页源码:

可以发现,“Blue17” 回显在了 HTML 标签中。我们是否可以推断,服务器会将我们的用户名回显回页面。

理解了这一点,我们是否可以尝试,使用 HTML 标签或者 JavaScript 代码块作为我们的用户名传递给后端,看看它是不是依旧会回显。

接下来,我们在 UserName 字段中输入下面的内容,并点击 LOGIN(如果你不认识下面的内容,可能得先去了解一下 JavaScript 这门编程语言了):

 <script> alert(/WhoAMI!!/) </script>

可以看到,页面弹窗了,证明我们传入的 JavaScript 脚本被浏览器解析并且执行了。至此,一次反射型 XSS 攻击结束。

点击 “确定” 按钮后,回归正常页面:

可以看到,本应该回显姓名的地方是空的,但是查看网页源码,可以发现,姓名的位置对应的是一个 JavaScript 脚本。至此,XSS 攻击,演示结束。

0x02:XSS 漏洞详解

0x0201:XSS 漏洞产生原因

XSS 漏洞产生的主要原因是因为程序员在开发 Web 站点时对用户输入的内容没有进行过滤或者过滤不严,导致恶意用户可以将恶意代码插入到网页中,当其他用户访问该页面时,恶意代码就会在他们的浏览器中运行,从而可能盗取这些用户的信息或者进行其他不当行为。

0x0202:XSS 漏洞分类

XSS 攻击可以分为三种类型,分别是反射型、存储型和 DOM 型。其中 DOM 型是一种特殊的反射型 XSS(具体怎么个特殊法后面会讲)。

该部分,主要是简单了解一下三种不同类型的 XSS 漏洞原理及其特点,后面我会针对每一种类型的漏洞都举一个实例来进行详解。

1. 反射型 XSS

反射型 XSS 又称非持久型 XSS,这种攻击方式往往具有一次性。

常见的攻击方式: 攻击者通过电子邮件等方式将包含 XSS 代码的恶意链接发送给目标用户。当目标用户访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有 XSS 代码的数据发送给目标用户的浏览器,浏览器解析这段带有 XSS 代码的恶意脚本后,就会触发 XSS 攻击。

其攻击流程如下图所示:

看完了攻击流程,很多人会抱有侥幸,说幸好我比较聪明,异常链接从不点。但是倘若攻击者,给你这样的链接呢:美女图片!(链接放这里了,点不点看你)。是的,挑逗的话语加上自定义的吸引性文字(链接的文字自己是可以定义的,不会还有人不知道吧),你说,会不会有人上当?

2. 存储型 XSS

存储型 XSS 又称持久型 XSS,攻击脚本将被永久的存放在目标服务器的数据库或文件中,具有很高的隐蔽性。

常见的攻击方式: 这种攻击多见于论坛、博客、留言板,攻击者在发帖过程中,将恶意脚本连同正常信息一起注入帖子的内容中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器的后端存储器中。当其他用户浏览这个被注入了恶意脚本的帖子时,恶意脚本会在他们的浏览器中得到执行。

其攻击流程如下图所示:

从上面的攻击流程中,我们可以看到,存储型 XSS 的攻击方式能将恶意代码永久的嵌入一个页面中,所有访问这个页面的用户都将成为受害者。如果我们能够谨慎对待不明链接,那么反射型 XSS 攻击将没有多大作为,而存储型 XSS 则不同,由于它注入在一些我们信任的页面,因此无论我们多么小心,都难免会受到攻击(谁会一直打开浏览器的源码模式抓包呀)。

3. DOM 型 XSS

DOM 全称 Document Object Model,使用 DOM 可以使程序和脚本能够动态访问和更新文档的内容、结构及样式。DOM 型 XSS 是一种特殊类型的反射型 XSS,它是基于 DOM 文档对象模型的一种漏洞。

常见的攻击方式: 用户请求一个经过专门设计的 URL,它由攻击者发布,而且其中包含 XSS 代码。服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM 对象就会处理 XSS 代码,导致存在 XSS 漏洞。

其攻击流程如下图所示:

其整体攻击流程与反射型 XSS 很相似,只不过是因为 DOM 型 XSS 形成的原因比较特别,发现它的安全专家专门提出了这种类型的 XSS。处于历史原因,就把它单独作为一个分类了。

0x03:参考文献

  • 《白帽子讲 Web 安全》 ISBN 978-7-121-16072-1

  • 《Web 安全攻防:渗透测试实战指南》 ISBN 978-7-121-34283-7

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

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

相关文章

【在Linux世界中追寻伟大的One Piece】IP分片和组装的具体过程

目录 1 -> IP分片和组装的具体过程 2 -> 分片与组装的过程 2.1 -> 分片 2.2 -> 组装 3 -> 分片与组装的示意图 3.1 -> 分片组装场景 1 -> IP分片和组装的具体过程 16位标识(id)&#xff1a;唯一的标识主机发送的报文。如果IP报文在数据链路层被分片…

linux入门到实操-11 Linux用户权限管理:添加和查看用户、获取root权限和删除用户、用户组管理

教程来源&#xff1a;B站视频BV1WY4y1H7d3 3天搞定Linux&#xff0c;1天搞定Shell&#xff0c;清华学神带你通关_哔哩哔哩_bilibili 整理汇总的课程内容笔记和课程资料&#xff08;包含课程同版本linux系统文件等内容&#xff09;&#xff0c;供大家学习交流下载&#xff1a;…

Verba - Weaviate RAG 私人助理

文章目录 一、关于 Verba什么是Verba&#xff1f;功能列表 二、Verba入门安装部署 三、API密钥1、Weaviate2、Ollama3、UNSTRUCTURED4、AssemblyAI5、OpenAI6、HuggingFace 四、如何使用pip进行部署五、如何从源代码构建六、如何使用Docker安装VerbaVerba Walkthrough选择您的部…

进来看看吧,产品经理做APP从头到尾的所有工作流程详解!

一、项目启动前 从事产品的工作一年多&#xff0c;但自己一直苦于这样或者那样的困惑&#xff0c;很多人想要从事产品&#xff0c;或者老板自己创业要亲自承担产品一职&#xff0c;但他们对产品这个岗位的认识却不明晰&#xff0c;有的以为是纯粹的画原型&#xff0c;有的是以…

BACnet MS/TP协议解析(3)

1、MS/TP帧格式 例如数据&#xff08;hex&#xff09;&#xff1a;55 FF 01 03 02 00 00 D7 0x550xff0x010x030x020x000x000xD7BACnet数据BACnet数据CRC帧头帧类型目的地址源地址BACnet数据长度&#xff0c;大端CRC 2、帧类型 帧类型目前定义为 0-7&#xff0c;8-127 为 AS…

vue3 vite模式配置测试,开发、生产环境以及代理配置

1、首先在根目录下创建三个文本文件&#xff1a;.env.development&#xff0c;.env.production&#xff0c;.env.test .env.development中的内容为&#xff1a; // 开发环境 .env.development NODE_ENV development VITE_APP_MODE development VITE_OUTPUTDIR dist_dev /…

基于Java的宠物之家小程序 宠物服务小程序【源码+调试】

精彩专栏推荐订阅&#xff1a;在下方主页&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、宠物之家小程…

FPGA第 11 篇,Verilog 系统函数( Verilog 中的系统函数)

前言 Verilog 作为一种强大的硬件描述语言&#xff0c;不仅提供了用于设计和仿真数字电路的基础语法&#xff0c;还包含了丰富的系统函数&#xff0c;帮助我们高效地完成复杂的硬件操作。系统函数是 Verilog 语言中预定义的特殊函数&#xff0c;通常以 $ 开头&#xff0c;它们…

【深度学习】(7)--神经网络之保存最优模型

文章目录 保存最优模型一、两种保存方法1. 保存模型参数2. 保存完整模型 二、迭代模型 总结 保存最优模型 我们在迭代模型训练时&#xff0c;随着次数初始的增多&#xff0c;模型的准确率会逐渐的上升&#xff0c;但是同时也随着迭代次数越来越多&#xff0c;由于模型会开始学…

今日不错的讲企业架构的好图

今日不错的讲企业架构的好图&#xff0c;来源B站不错的UP主&#xff1a;企业架构知识体系-业务技术管理的知识框架_哔哩哔哩_bilibili

grafana频繁DataSourceError问题

背景 随着 Grafana 数据量的不断增加&#xff0c;逐渐暴露出以下问题&#xff1a; Grafana 页面加载缓慢&#xff1b;Grafana 告警频繁出现 DatasourceError 错误。 对于第一个问题&#xff0c;大家可以参考这篇文章&#xff1a;Grafana 加载缓慢的解决方案。 不过&#xf…

【Unity踩坑】Textmesh Pro是否需要加入Version Control?

问题&#xff1a;如果Unity 项目中用到了Textmesh pro&#xff0c;相关的文件是否也需要签入呢&#xff1f; 回答&#xff1a; 在使用 Unity 的 Version Control&#xff08;例如 Plastic SCM 或 Git&#xff09;时&#xff0c;如果你的项目中使用了 TextMesh Pro&#xff0c…

条件字段有索引,为什么查询也这么慢?

如果我们想在某一本书中找到特定的主题&#xff0c;一般最快的方法是先看索引&#xff0c;找到对应的主题在哪个页码。 而对于 MySQL 而言&#xff0c;如果需要查找某一行的值&#xff0c;可以先通过索引找到对应的值&#xff0c;然后根据索引匹配的记录找到需要查询的数据行。…

家政服务预约系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;客户管理&#xff0c;员工管理&#xff0c;家政服务管理&#xff0c;服务预约管理&#xff0c;员工风采管理&#xff0c;客户需求管理&#xff0c;接单信息管理 微信端账号功能包括&#xff1a;系统首…

Java | Leetcode Java题解之第430题扁平化多级双向链表

题目&#xff1a; 题解&#xff1a; class Solution {public Node flatten(Node head) {dfs(head);return head;}public Node dfs(Node node) {Node cur node;// 记录链表的最后一个节点Node last null;while (cur ! null) {Node next cur.next;// 如果有子节点&#xff0…

后端(实例)08

设计一个前端在数据库调取数据的表格&#xff0c;并完成基础点击增删改查的功能&#xff1a; 1.首先写一个前端样式&#xff08;空壳&#xff09; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Insert title here&l…

VUE条件树查询

看如下图所示的功能&#xff0c;是不是可高级了&#xff1f;什么&#xff0c;你没看懂&#xff1f;拜托双击放大看&#xff01; 是的&#xff0c;我最近消失了一段时间就是在研究这个玩意的实现&#xff0c;通过不懈努力与钻研并参考其他人员实现并加以改造&#xff0c;很好&am…

人工智能时代的网络空间战略稳定及其挑战

文章目录 前言一、人工智能时代的网络空间战略稳定及其挑战(一)国内政治与官僚主义二、大国竞争与溯源政治三、国际法规与治理限制总结前言 人工智能的武器化应用在短期内将同时强化网络空间中进攻方和防御方的能力,但从长期看将有利于防御方。这种态势将令传统威慑逻辑重新…

[数据库实验三]安全性

目录 一、实验目的与要求&#xff1a; 二、实验内容&#xff1a; 三、实验小结 一、实验目的与要求&#xff1a; 1、设计用户子模式 2、根据实际需要创建用户角色及用户&#xff0c;并授权 3、针对不同级别的用户定义不同的视图&#xff0c;以保证系统的安全性 二、实验内…

Springboot jPA+thymeleaf实现增删改查

项目结构 pom文件 配置相关依赖&#xff1a; 2.thymeleaf有点类似于jstlel th:href"{url}表示这是一个链接 th:each"user : ${users}"相当于foreach&#xff0c;对user进行循环遍历 th:if进行if条件判断 {变量} 与 ${变量}的区别: 4.配置好application.ym…