跨站脚本攻击漏洞概述-XSS

什么是跨站脚本攻击

跨站脚本( Cross-site Scripting ) 攻击,攻击者通过网站注入点注入客户端可执行解析的payload(脚本代码),当用户访问网页时,恶意payload自动加载并执行,以达到攻击者目的(窃取cookie、恶意传播、钓鱼欺骗等)。为了避免与HTML语言中的CSS相混滑,通常称它为“XSS”

危害

获取用户信息:(如浏览器信息、ip地址、cookie信息等 )
钓鱼:(利用xss漏洞构造出一个登录框,骗取用户账户密码,提示登录过期,模拟一个网站的登录框,将用户名、密码发送到攻击者服务器
注入木马或广告链接:有些在主站注入非法网站的链接,对公司的声誉有一定的影响后台增删改网站数据等操作:配合CSRF漏洞,骗取用户点击,利用s模拟浏览器发包
xss蠕虫:
微博蠕虫:只要看过某人的微博就是自动关注某人
贴吧蠕虫:看过某个帖子就是自动回复这个帖子

漏洞类型及利用场景

1.反射性XSS 可用于钓鱼、引流、配合其他漏洞如CSRF等
2.存储型XSS 攻击范围广,流量传播大。可配合其他漏洞
3.DOM型XSS 配合、长度大小不受限制。

反射性XSS

特点:仅执行一次,非持久型;参数型跨站脚本
主要存在于攻击者将恶意脚本附加到ur的参数中,发送给受害者,服务端未经严格过滤处理
而输出在用户浏览器中,导致浏览器执行代码数据。

反射性XSS利用场景

见框就插,改url参数
在这里插入图片描述
我们测试一下DVWA的low等级
我们输入hello 他返回hello
我们测试h1 hello 是否会变成一级标签 可以成功
我们就可以利用script 的alert 警示框 也可以成功
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
array_key_exists判断这个数值里面有没有这个name的值和这个name值是否不为空 他会输出这个name的值 他没有进行这个进行过滤 过滤一般分替换大小写和替换特殊符

在这里插入图片描述
设置为Medium等级
我们通过看源代码发现他只是把script替换成空白 没有进行大小写区分
我们可以通过写SCRIPT全部大写来绕过
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们等级设置为high
当我们输入hello 正常运行
当我们输入h1 一级标签他变大了
当我们输入script 他直接变成了alert(1)
我们通过看源代码发现他做了一个script替换成空白
那我们第一种写在sciprt标签中不可用 第二种写在scr指定的文件也不可用 那我们可以用某个事件处理器img src=1 οnerrοr=alert(1) 发现可以成功 说明我们的思路是对的
这个思路就是 我们让他去找一个为1的文件 这个事件有个是路径不存在他会报一个错叫onerror 我们可以写script的代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们设置为impossible
我们看源代码发现他使用了htmlspecialchars 这个函数的意思是吧预定义的字符< 、> & 这些转换为HTML实体 防止浏览器将其作为HTML的元素
在这里插入图片描述

反射性XSS利用场景

首先没有对onclick进行过滤 %20是空格
我们分析到mann后面的“闭合前面的value 后面的”闭合后面的“ 使得onlick单独出来
在这里插入图片描述
在搜索框加/" 闭合前面标签 这个123是不存在的 他会执行onerror这个后面代码 eval是把后面的执行代码进行执行
在这里插入图片描述

存储型XSS

特点: 持久型
主要存在于攻击者将恶意脚本存储到服务器数据库中,当用户访问包含恶意相关数据的页面
时,服务端未经严格过滤处理而输出在用户浏览器中,导致浏览器执行代码数据。
在这里插入图片描述

存储型XSS利用场景

在这里插入图片描述
我们设置low等级
可以看到没有做任何的过滤
我们输入正常的值、h1的值和script的值
在这里插入图片描述
在这里插入图片描述
我们设置为Medium
srtip_tag(string,allow)函数去除字符串中HTML、XML以及PHP的标签
addslashes(string)返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串
这个htmlspecialchars函数我之前说过了 他会把特殊字符变成实体
下面还有一个替换将script替换成空 这个str_replace是不区别大小写的
但是我们可以看到又两个输入框一个是name一个是Message
我们对name的长度进行修改然后把script写进去
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
设置为high
srtip_tag(string,allow)函数去除字符串中HTML、XML以及PHP的标签
htmlspecialchars函数把特殊字符变成实体
preg_replace替换空白不区分大小写
那我们第一种写在sciprt标签中不可用 第二种写在scr指定的文件也不可用 那我们可以用某个事件处理器img src=1 οnerrοr=alert(1) 发现可以成功 说明我们的思路是对的
这个思路就是 我们让他去找一个为1的文件 这个事件有个是路径不存在他会报一个错叫onerror 我们可以写script的代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们看看impossible
查看源代码,发现使用内置的PHP函数来转义任何改变输入行为的值,并且使用token验证来防止CSRF攻击。
最下面的date->的部分是对SQL注入的防范,采用了预编译语句。这个到SQL注入通关的时候再分析。
在这里插入图片描述

DOM型XSS

特点:通过JavaScript操作document,实现dom树的重构
主要存在于用户能修改页面的dom,造成客户端payload在浏览器中执行
ducument.URL获取该网页地址
在这里插入图片描述

DOM型XSS利用场景

我们看到源代码是没有任何防护的 我们可以查看html的源代码
我们看到这个值是default我们直接=script即可

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
查看Medium
stripos(string,find,start) 函数查找字符串在另一字符串中第一次出现的位置(不区分大小写)。
header() 函数向客户端发送原始的 HTTP 报头。
当匹配到<script 字符串的时候就会将URL后面的参数修正为 ?default=English
我们看到网页前面有option和select我们给他结束掉 然后写我们的img src

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们设置high
通过看源代码我们可以知道用了switch这个选择结构如果不等于这几个的时候则是默认english
可以加入注释符 “#”,注释后边的内容不会发送到服务端,但是会被前端代码所执行。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
impossible
我们看到源代码没有任何防护 我们查看html的源代码
并没有对我们输入的内容进行URL解码,所以我们输入的任何内容都是经过URL编码,然后直接赋值。因此不存在XSS漏洞。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

十大排序算法之非线性时间比较类排序

前言 接下来就开始我们的算法学习之路了&#xff0c;代码会分别使用Java与Python来实现&#xff0c;数据处理的算法很多&#xff0c;排序是最基础且最重要的一类&#xff0c;大多数人都是通过学习排序算法入门的。接下来让我们一起学习闻名遐迩的十大排序算法&#xff0c;它们…

非官方 Bevy 作弊书07-09

源自 网页 Working with 2D - Unofficial Bevy Cheat Book 个人用 有道 翻译&#xff0c;希望能够帮助像我一样的 英语不好 的 bevy 初学者 非官方 Bevy 作弊书 7 使用 bevy 2D 本章涵盖与使用 Bevy 制作 2D 游戏相关的主题。 2D Camera Setup - Unofficial Bevy Cheat Book 非…

【LeetCode: Z 字形变换 + 模拟】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Redis学习——高级篇②

Redis学习——高级篇② Redis7高级之BigKey&#xff08;二&#xff09; 1.MoreKey案例2.BigKey案例2.1 多大算 BigKey以及它的危害2.2 如何产生、发现、删除 3. bigKey生产调优 Redis7高级之BigKey&#xff08;二&#xff09; 1.MoreKe…

【高效开发工具系列】Java读取Html

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Linux系统安装Nginx

一、Nginx的简介 Nginx是一个高性能的HTTP和反向代理web服务器&#xff0c;是由伊戈尔赛索耶夫为俄罗斯访问量第二站点开发的&#xff0c;因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名&#xff0c;第一个公开版本0.1.0发布于2004年10月4日。 Nginx是一…

C# RichTextBox常用属性、方法学习1

1 字体 Font font1 new Font("宋体", 18); richTextBox1.Font font1; Font font2 new Font("宋体", 10, FontStyle.Underline); richTextBox1.SelectionFont font2; 定义字体&#xff0c;可以带2个参数&#…

LeetCode---122双周赛

题目列表 3010. 将数组分成最小总代价的子数组 I 3011. 判断一个数组是否可以变为有序 3012. 通过操作使数组长度最小 3013. 将数组分成最小总代价的子数组 II 一、将数组分成最小总代价的子数组I 这道题纯纯阅读理解题&#xff0c;关键在于理解题意。注意&#xff1a;第一…

总体方差与样本方差的区别是什么?

总体方差和样本方差是统计学中两个重要概念&#xff0c;它们在定义和计算上有所不同&#xff0c;主要区别体现在数据集的性质和计算公式的分母上&#xff1a; 1. 总体方差&#xff08;Population Variance&#xff09;&#xff1a; 定义&#xff1a; 总体方差是指将一个完整数…

嵌入式——窗口看门狗(WWDG)补充

目录 一、独立看门狗与窗口看门狗 1.功能描述 2.两者区别 二、WWDG功能描述 1.窗口看门狗时钟 2.计数器时钟 3. 计数器 4.窗口值 三、WWDG超时时间 一、独立看门狗与窗口看门狗 1.功能描述 STM32有两个看门狗&#xff1a;一个是独立看门狗&#xff08;IWDG&#xff0…

数据结构三:线性表之单链表(带头结点单向)的设计与实现

线性表的链式存储结构正是所谓的单链表&#xff0c;何谓单链表&#xff1f;通过地址将每一个数据元素串起来&#xff0c;进行使用&#xff0c;这可以弥补顺序表在进行任意位置的插入和删除需要进行大量的数据元素移动的缺点&#xff0c;只需要修改指针的指向即可&#xff1b;单…

网络编程套接字(2)

UDP数据报套接字编程 API介绍 DatagramSocket DatagramSocket是UDP的Socket,用于发送和接收数据报. 操作系统中有一类文件,就叫做socket文件(普通文件/目录文件:在硬盘上的) socket文件:抽象的表示了网卡这样的硬件设备 DatagramSocket就是对socket文件进行读写,也就是借助网…

对于gzip的了解

gzip基本操作原理&#xff1a;通过消除文件中的冗余信息&#xff0c;使用哈夫曼编码等算法&#xff0c;将文件体积压缩到最小。这种数据压缩方式在网络传输中发挥了巨大作用&#xff0c;减小了传输数据的大小&#xff0c;从而提高了网页加载速度。 静态资源 Vue Vue CLl修改v…

WordPress如何使用SQL实现一键关闭/开启评论功能(已有评论)

WordPress本人就自带评论功能&#xff0c;不过由于种种原因&#xff0c;有些站长不想开启评论功能&#xff0c;那么应该怎么实现一键关闭评论功能或开启评论功能呢&#xff1f;或者针对已有评论功能的文章进行一键关闭或开启评论功能应该怎么操作&#xff1f; 如果你使用的Wor…

【.NET Core】深入理解C#中的特殊字符

【.NET Core】深入理解C#中的特殊字符 文章目录 【.NET Core】深入理解C#中的特殊字符一、概述二、$-- 字符串内插2.1 内插字符串的结构2.2 内插原始字符串字面量2.3 特殊字符2.4 内插字符串编译 三、-- 逐字字符串标识符四、“”“--原始字符串文本 一、概述 特殊字符是预定义…

OpenGL/C++_学习笔记(四)空间概念与摄像头

汇总页 上一篇: OpenGL/C_学习笔记&#xff08;三&#xff09; 绘制第一个图形 OpenGL/C_学习笔记&#xff08;四&#xff09;空间概念与摄像头 空间概念与摄像头前置科技树: 线性代数空间概念流程简述各空间相关概念详述 空间概念与摄像头 前置科技树: 线性代数 矩阵/向量定…

RPC教程 5.支持HTTP协议

1.HTTP的CONNECT方法 Web 开发中&#xff0c;我们经常使用 HTTP 协议中的 HEAD、GET、POST 等方式发送请求&#xff0c;等待响应。但 RPC 的消息格式与标准的 HTTP 协议并不兼容&#xff0c;在这种情况下&#xff0c;就需要一个协议的转换过程。HTTP 协议的 CONNECT 方法提供了…

MybatisPlus二级映射和关联对象ResultMap

文章目录 一、业务背景1. 数据库表结构2. 需求 二、使用映射直接得到指定结构三、其他文件1. Mapper2. Service3. Controller 四、概念理解一级映射二级映射聚合 五、标签使用1. \<collection\> 标签2. \<association\> 标签 在我们的教程中&#xff0c;我们设计了…

flask框架制作前端网页作为GUI

一、语法和原理 &#xff08;一&#xff09;、文件目录结构 需要注意的问题&#xff1a;启动文件命名必须是app.py。 一个典型的Flask应用通常包含以下几个基本文件和文件夹&#xff1a; app.py&#xff1a;应用的入口文件&#xff0c;包含了应用的初始化和配置。 requirem…

【DeepLearning-8】MobileViT模块配置

完整代码&#xff1a; import torch import torch.nn as nn from einops import rearrange def conv_1x1_bn(inp, oup):return nn.Sequential(nn.Conv2d(inp, oup, 1, 1, 0, biasFalse),nn.BatchNorm2d(oup),nn.SiLU()) def conv_nxn_bn(inp, oup, kernal_size3, stride1):re…