XSS跨站脚本攻击漏洞练习

server/2024/12/26 18:42:26/

一、XSS(跨站脚本攻击)漏洞介绍

1、漏洞原理

XSS 是跨站脚本攻击(Cross-Site Scripting)的缩写,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。XSS 漏洞主要是因为 Web 应用程序没有对用户输入的数据进行充分的验证和过滤,或者没有正确地对输出内容进行编码,从而导致攻击者可以将恶意脚本注入到网页中,这些恶意脚本能够在受害者的浏览器中执行。

2、XSS的几种类型

(1)反射型XSS

  • 用户输入的利用:攻击者精心构造一个包含恶意脚本的请求,通常是通过 URL 参数、表单数据等方式。
  • 服务器反射行为:服务器接收到这个请求后,没有对输入内容进行合适的处理,直接将其包含在响应页面中返回给用户。
  • 浏览器执行脚本:当用户的浏览器接收到这个包含恶意脚本的响应时,由于浏览器无法分辨这是恶意脚本,就会按照正常的 JavaScript 代码执行流程来执行这个脚本。攻击者可以利用这种方式窃取用户的登录信息等敏感数据,如通过将用户的登录凭证发送到攻击者控制的服务器。

(2)存储型XSS

  • 数据存储阶段:攻击者将恶意脚本作为用户输入的数据存储到目标 Web 应用程序的数据库、文件系统或其他存储介质中。
  • 数据读取与页面渲染阶段:当其他用户访问包含恶意脚本的页面时,Web 应用程序会从存储介质中读取数据(包括恶意脚本),将其渲染到网页中。
  • 脚本执行与危害产生:用户的浏览器在渲染页面过程中,会执行这个恶意脚本。比如用户的浏览器会将用户的 Cookie 信息发送到攻击者指定的网站,从而使攻击者能够获取用户的敏感信息。

(3)DOM型XSS

  • DOM 操作引入:现代 Web 应用程序大量使用 JavaScript 来动态地操作文档对象模型(DOM),以实现丰富的用户交互功能。
  • 恶意利用方式:攻击者通过构造特殊的 URL 或者其他用户输入的方式,将恶意脚本注入到 DOM 操作的过程中。
  • 脚本执行机制:当用户访问这个特殊构造的 URL 时,浏览器会解析 URL 中的哈希值(# 后面的部分),并将其作为数据传递给上述的 JavaScript 代码。由于没有对这个数据进行安全处理,代码会将恶意脚本插入到 DOM 中,浏览器就会执行这个脚本,从而产生与其他类型 XSS 类似的危害。

二、XSS漏洞练习

靶场环境:Pikachu靶场

因篇幅有限,所以本文只练习以下3个,后续会通过视频讲解的方式进行详细讲解。

1、反射型XSS(get)练习

(1)查看一下这个功能

(2)在输入框输入

发现输入框限制了输入字符长度,这个限制代码做在前端,可以用Burp绕过或者改前端代码

光标停在输入框,右键-检查查看代码

这里可以看到,长度限制在20以内,直接在代码里把这长度限制改掉

输入,弹窗成功,说明js代码被执行了

2、存储型XSS练习

(1)查看一下功能

发现会把留言内容展示在留言列表

(2)在留言框输入

发现弹窗了,不同于反射型XSS,多次打开页面都会弹窗

3、DOM型XSS练习

(1)在输入框输入

发现没有效果

(2)查看前端代码

发现了关键的JS代码

代码如下:

function domxss(){
var str = document.getElementById("text").value;
document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";}

(3)分析代码并构造语句

var str = document.getElementById(“text”).value;

获取输入的文本,赋值给str变量

"发现了一个语句拼接

可以构造一个如下的语句

’ οnclick=“alert(‘xss’)”>

这样的效果就是

'>

(4)输入’ οnclick=“alert(‘xss’)”>

点击click me,再点击蓝色字符what do you see

触发弹窗,当然构造的语句不只有这一个,其他的方法可以去自己尝试一下


http://www.ppmy.cn/server/153403.html

相关文章

解决 vue3 中 echarts图表在el-dialog中显示问题

原因&#xff1a; 第一次点开不显示图表&#xff0c;第二次点开虽然显示图表&#xff0c;但是图表挤在一起&#xff0c;页面检查发现宽高只有100px,但是明明已经设置样式宽高100% 这可能是由于 el-dialog 还没有完全渲染完成&#xff0c;而你的 echarts 组件已经开始尝试渲染图…

Elasticsearch-脚本查询

脚本查询 概念 Scripting是Elasticsearch支持的一种专门用于复杂场景下支持自定义编程的强大的脚本功能&#xff0c;ES支持多种脚本语言&#xff0c;如painless&#xff0c;其语法类似于Java,也有注释、关键字、类型、变量、函数等&#xff0c;其就要相对于其他脚本高出几倍的性…

未来网络技术的新征程:5G、物联网与边缘计算(10/10)

一、5G 网络&#xff1a;引领未来通信新潮流 &#xff08;一&#xff09;5G 网络的特点 高速率&#xff1a;5G 依托良好技术架构&#xff0c;提供更高的网络速度&#xff0c;峰值要求不低于 20Gb/s&#xff0c;下载速度最高达 10Gbps。相比 4G 网络&#xff0c;5G 的基站速度…

工厂常用软件系统大全中英文全称对照表及功能介绍应用场景ERP MES WMS SCADA IOT SAP等软件系统介绍

1. ERP&#xff08;Enterprise Resource Planning&#xff09;企业资源计划&#xff1a; ○ 功能&#xff1a;整合企业的各项资源和业务流程&#xff0c;涵盖从采购、生产到销售的各个环节。包括财务管理、生产计划、采购管理、库存管理、销售管理、人力资源管理等。 ○ 应用场…

vue3封装而成的APP ,在版本更新后,页面显示空白

一、问题展示 更新之后页面空白&#xff0c;打不开 &#xff0c;主要是由于缓存造成的 二、解决办法 1、随机数代码实现 使用随机数来动态的生成静态资源目录名可以避免浏览器缓存&#xff0c;但同时每次也会导致浏览器每次都下载最新的资源。如果静态资源过大&#xff0c;可…

springboot 3 websocket react 系统提示,选手实时数据更新监控

构建一个基于 Spring Boot 3 和 WebSocket 的实时数据监控系统&#xff0c;并在前端使用 React&#xff0c;可以实现选手实时数据的更新和展示功能。以下是该系统的核心设计和实现思路&#xff1a; 1. 系统架构 后端 (Spring Boot 3): 提供 WebSocket 服务端&#xff0c;处理…

数据结构基本认识与必要知识点准备工作

什么是数据结构? 在一些特定的、特殊的需求场景下,我们以往所学的数据类型,无法基于需求合理地组织数据,此时就需要我们直接设计一套新的数据组织形式来解决问题,也就是数据结构. 主要学习内容 1.数据结构的内容: 线性表 队列 数组 树与二叉树 图 2.算法的内容: 查找 排…

flutter轮播图控件根据图片高度动态调整图高度

1.图片链接资源需要带有宽高信息 例如&#xff1a;https://zmkx.oss-cn-hangzhou.aliyuncs.com/oss/folder/atui2024-12-231734938007236a30cb975297842d0b3d2b82e4ec7f72b7unhmlcaj4el.jpg?Size1080x2388 在链接中拼接?Size1080x2388携带。 2.获取到数据后切割出宽高 List…