对XSS攻击进行的一些总结

news2024/11/16 11:41:22

简介

在这里插入图片描述

XSS漏洞最早被发现是在1996年,由于JavaScript的出现,导致在Web应用程序中存在了一些安全问题。在1997年,高智文(Gareth Owen)也就是“XSS之父”,在他的博客中描述了一种称为“脚本注入”(script injection)的攻击技术,这就是XSS漏洞的前身。从那时起,XSS漏洞便成为了Web应用程序中的一种常见安全漏洞

xss攻击分为:

反射型,存储型,dom型
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>XSS漏洞示例</title>
</head>
<body>
    <h1>欢迎来到我的网站!</h1>
    <p>您输入的内容是:<strong><?php echo $_GET['content']; ?></strong></p>
</body>
</html>

上面的代码是一个简单的HTML页面,它包含一个

标签和一个

标签。页面的

标签包含一个PHP代码片段,它将从URL参数中获取名为content的值,并将其输出到页面上。如果攻击者能够通过某种方式将恶意脚本注入到content参数中,那么它将会被执行并在用户的浏览器中运行。

例如,攻击者可以构造如下URL,将恶意脚本注入到content参数中:

http://example.com/xss.php?content=<script>alert('XSS攻击!');</script>

当用户访问上面的URL时,页面将显示一个弹窗,其中包含了攻击者注入的恶意JavaScript代码。这就是一个简单的反射型XSS攻击。

反射型xss攻击

反射型 XSS 攻击是指将恶意脚本注入到 URL 中,通过诱导用户点击恶意链接或提交恶意表单等方式触发漏洞,将注入的脚本反射到响应页面中,从而实现攻击的一种方式。

与存储型 XSS 攻击不同的是,反射型 XSS 攻击不需要将恶意脚本持久化到服务器上,攻击者只需要通过某种方式将恶意脚本注入到 URL 中,就可以通过用户的访问来触发漏洞。这种攻击方式的危害性相对较小,因为攻击者无法在目标网站上持久化存储恶意脚本,也无法将攻击面扩大到更多的用户。

反射型 XSS 攻击常常利用社交工程学手段,将恶意链接伪装成正常链接,诱导用户点击,从而触发漏洞。攻击者还可以利用其他的渠道,如邮件、即时通讯软件等,将恶意链接传播给更多的用户

假设一个网站上有一个搜索框,用户可以在里面输入搜索关键词。搜索结果会以HTML格式显示在页面上。现在我们可以通过在搜索框中输入恶意脚本来发起XSS反射攻击。

比如,我们可以在搜索框中输入以下内容:

<script>alert('XSS');</script>

然后,当我们点击搜索按钮时,这段恶意脚本就会被注入到页面的HTML代码中,并弹出一个警告框,显示“XSS”

存储型xss攻击

存储型 XSS(Cross-site scripting)攻击是一种常见的 Web 漏洞,攻击者将恶意脚本或代码存储在 Web 应用程序中,当其他用户访问该页面时,恶意代码将被执行,从而导致攻击者可以获取用户敏感信息或在受害者计算机上执行恶意操作。

与反射型 XSS 不同,存储型 XSS 攻击是在服务器端存储恶意代码,并将其保存在 Web 应用程序中,通常是在数据库或文件系统中。存储型 XSS 攻击可以通过提交包含恶意脚本的表单或评论等方式实现

假设有一个留言板的功能,用户可以在里面输入留言内容,然后将其存储到数据库中,管理员可以在后台查看留言内容。

以下是一个简单的存储型XSS攻击的例子:

前端页面:

<form action="submit_message.php" method="post">
    <label for="message">留言内容:</label>
    <textarea id="message" name="message"></textarea>
    <input type="submit" value="提交">
</form>

submit_message.php:

<?php
// 连接数据库
$db = new mysqli('localhost', 'username', 'password', 'database');
if ($db->connect_errno) {
    die('连接数据库失败:' . $db->connect_error);
}

// 接收留言内容
$message = $_POST['message'];

// 将留言内容存入数据库
$sql = "INSERT INTO messages (content) VALUES ('$message')";
$result = $db->query($sql);
if ($result) {
    echo '留言提交成功!';
} else {
    echo '留言提交失败!';
}

// 关闭数据库连接
$db->close();
?>

攻击者可以在留言板中输入以下内容:

<script>alert('你的网站被攻击了!')</script>

当管理员在后台查看留言时,将会执行这段JavaScript代码,弹出一个警告框。

如果管理员使用的是特权账户登录系统,攻击者还可以通过类似的方法窃取管理员的Cookie,获取管理员的权限,进一步危害网站的安全

DOM型xss攻击

DOM型 XSS(Cross-Site Scripting)攻击是指攻击者利用 JavaScript、Flash 等客户端脚本语言修改页面的 DOM 结构,从而在用户浏览网页时执行恶意脚本。它不同于存储型和反射型 XSS 攻击,因为 DOM 型 XSS 攻击不会向服务器提交恶意代码,而是直接在客户端执行恶意脚本。

以下是一个简单的 DOM 型 XSS 攻击代码示例:

<!DOCTYPE html>
<html>
<head>
	<title>DOM XSS Example</title>
</head>
<body>
	<h1>Search Page</h1>
	<form>
		<input type="text" name="q" id="search-input">
		<button type="submit">Search</button>
	</form>
	<script>
		// 获取 URL 参数
		function getUrlParam(name) {
			const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`, 'i');
			const r = window.location.search.substr(1).match(reg);
			if (r !== null) {
				return unescape(r[2]);
			}
			return null;
		}
		// 在页面中显示搜索关键字
		const keyword = getUrlParam('q');
		document.write(`<p>Your search keyword is: ${keyword}</p>`);
	</script>
</body>
</html>

上面的代码展示了一个简单的搜索页面,它可以从 URL 参数中获取搜索关键字,并在页面中显示出来。攻击者可以通过在 URL 中注入恶意脚本来实现 DOM 型 XSS 攻击。例如,攻击者可以构造以下恶意 URL:

http://example.com/search?q=<script>alert('XSS')</script>

当用户打开这个 URL 时,搜索关键字就会被注入到页面中,并执行恶意脚本,弹出一个警告框。

这个例子中的 XSS 攻击漏洞在于没有对搜索关键字进行任何过滤或转义,导致用户输入的恶意脚本可以直接嵌入到页面中

绕过waf

1.HTML编码绕过:
可以使用一些HTML编码技术,如JavaScript编码、Unicode编码、HTML实体编码等,来绕过WAF的检测。例如,可以使用JavaScript编码来绕过WAF的脚本检测,使用Unicode编码来绕过WAF的字符检测,使用HTML实体编码来绕过WAF的特殊字符检测等。

2.混淆绕过:
可以使用一些混淆技术,如字符串拆分、大小写混合、随机空格、注释、反斜杠转义等,来混淆恶意代码,从而绕过WAF的检测。例如,可以将恶意代码拆分成多个小字符串,使用大小写混合和随机空格来隐藏代码的真实含义,使用注释和反斜杠转义来绕过WAF的注释和转义检测。

3.绕过过滤器:
可以使用一些过滤器绕过技术,如绕过JavaScript过滤器、特殊字符过滤器、协议过滤器等,来绕过WAF的检测。例如,可以使用一些特殊字符和协议来绕过WAF的过滤器,如data:、javascript:、vbscript:、about:blank等。

4.滥用DOM:
可以使用一些DOM滥用技术,如document.write()、innerHTML、setAttribute()等,来绕过WAF的检测。例如,可以使用document.write()来动态生成恶意代码,使用innerHTML来注入恶意代码,使用setAttribute()来设置恶意属性等。

5.绕过过滤器:
可以使用一些特殊的绕过过滤器技术,如JavaScript闭合、多个引号、拼接字符串、拼接数组等,来绕过WAF的检测。例如,可以使用JavaScript闭合来绕过WAF的字符串过滤器,使用多个引号来绕过WAF的字符串过滤器,使用拼接字符串和拼接数组来绕过WAF的特殊字符过滤器等。

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

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

相关文章

分享一个RecyclerView嵌套webview 滑动不流畅的解决方法

因RecyclerView 和webview 或者X5的webview 都具有滑动的功能 所以在做嵌套的时候 会出现滑动不流畅 等问题 解决思路 就是判断滑动的时候 是否自身消耗 或者父布局的RecycleView消耗 开发中还遇到个问题 就是 更换成x5的时候 getScrolly() 返回的一直是0 改成getWebScrollY(…

2022国赛16:神州路由器交换机BGP配置实例1

实验拓扑图 一、基本配置: R1配置: Router>ena Router#conf Router_config#host R1 R1_config#int g0/0 R1_config_g0/0#ip add 202.11.1.1 255.255.255.252 R1_config_g0/0#int l0 R1_config_l0#ip add 1.1.1.1 255.255.255.255 R1_confi

【iOS】iOS语音通话回音消除(AEC)技术实现

一、前言 在语音通话、互动直播、语音转文字类应用或者游戏中&#xff0c;需要采集用户的麦克风音频数据&#xff0c;然后将音频数据发送给其它终端或者语音识别服务。如果直接使用采集的麦克风数据&#xff0c;就会存在回音问题。所谓回音就是在语音通话过程中&#xff0c;如…

Minikube安装、运行

1.Minikube是什么 本地的k8s集群&#xff0c;方便开发者学习k8s。 2.安装的前提条件 2个CPU货以上。2G内存或以上。20G磁盘或以上。可以链接互联网。安装docker&#xff08;官网说或者一个虚拟环境&#xff0c;这个不考虑&#xff09;。 3.官网地址 minikube start | minik…

docker部署mysql5.7

1、拉取镜像 docker pull mysql:5.72、运行容器 docker run -p 3306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORDqazWSX123 -d mysql:5.7-v $PWD/conf:/etc/mysql指令是挂载mysql的配置文件到宿主机 -v $PWD/data:/var…

基于Java+SpringBoot+vue的口腔管家平台设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】

博主介绍&#xff1a;专注于Java技术领域和毕业项目实战 &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案例&#xff08;300套&#xff09; 目录 一、效果演示 二、…

DJ3-4 实时调度

目录 3.4.1 实现实时调度的基本条件 1. 提供必要的信息 2. 系统的处理能力强 3. 采用抢占式调度机制 4. 具有快速切换机制 3.4.2 实时调度算法的分类 1. 非抢占式调度算法 2. 抢占式调度算法 3.4.3 常用的几种实时调度算法 1. 最早截止时间优先 EDF&#xff08;Ea…

拼多多按关键字搜索商品 API

一、拼多多平台优势&#xff1a; 1、独创拼团模式 拼团拼单是拼多多独创的营销模式&#xff0c;其特点是基于人脉社交的裂变传播&#xff0c;非常具有传播性。 由于本身走低价路线&#xff0c;加上拼单折扣&#xff0c;商品的分享和人群裂变效果非常明显&#xff0c;电商前期…

单向链表和双向链表的实现 (LinkedList)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

Markdown发布静态网页

解析markdown_利用 markdown 生成页面实践_灰色派的博客-CSDN博客 业务需求 1.为什么要用 markdown 来生成页面&#xff1f; 对于展示型网站&#xff0c;例如官网这种场景&#xff0c;会有很多小的页面&#xff0c;运营会根据市场时刻有增删修改类似页面的需求&#xff0c;如…

MapReduce笔记

总计&#xff1a;切片就是对一个文件按逻辑进行切片&#xff0c;默认每128m为一个切片&#xff0c;不是物理切片&#xff0c;每个切片对应着一个mapTask进行处理。而且切片是针对每一个文件进行切片的&#xff0c;即一个文件一个文件切片&#xff0c;不是把所以待处理的文件总量…

游戏运营是什么?运营专员需要具备什么能力?

游戏运营主要是负责公司游戏的运营计划制定&#xff0c;包含通过用户对游戏的反馈和数据分析找出产品所存在的问题&#xff0c;并进行优化。通过各种促销活动、节假日实行游戏付费内容来刺激消费&#xff0c;实现游戏和品牌双赢的打造过程。 游戏运营分很多种&#xff1a;用户…

python获取数据类型

之前将字面量时就将到过 数据是有类型的 python的数据类型还挺多的 而现阶段 我们主要接触了 字符串 浮点数 正整数 对应的类型 都有自己的名称 字符串 string 浮点数 float 正整数 int python提供了一个type语句 用于验证数据类型 我们打开编辑工具 编写代码如下 print(typ…

每日一问-ChapGPT-20230416-中医基础-经络

文章目录每日一问-ChapGPT系列起因每日一问-ChapGPT-20230416-中医基础-经络人体的经络有哪些&#xff0c;有什么规律&#xff0c;怎么记忆问诊的具体细节当日总结每日一问-ChapGPT系列起因 近来看了新闻&#xff0c;看了各种媒体&#xff0c;抖音&#xff0c;官媒&#xff0c…

FPGA与ASIC的区别

先来看张图&#xff0c;本图体现出了集成电路产业链&#xff1a;设计业、制造业、封测业。 关于制造、封装测试我们看两张图稍作了解即可&#xff1a; 数字IC ASIC设计流程及EDA工具&#xff1a; &#xff08;1&#xff09;了解数字IC设计&#xff1a;在VLSI时代&#xff…

MySQL数据库之表的增删改查(基础)

目录1 新增&#xff08;Create&#xff09;1.1 单行数据 全列插入1.2 多行数据 全列插入2 查询&#xff08;Retrieve&#xff09;2.1 全列查询2.2 指定列查询2.3 查询字段为表达式2.4 别名2.5 去重: DISTINCT2.6 排序: ORDER BY2.7 条件查询: WHERE2.8 分页查询: LIMIT3 修改…

基于html+css的图片展示10

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

10个有趣python模块

一、说明 Python 是一种高级、解释型和通用动态编程语言&#xff0c;侧重于代码的可读性。它在许多组织中使用&#xff0c;因为它支持多种编程范例。它还执行自动内存管理。它是世界上最受欢迎的编程语言之一。这是有很多原因的&#xff1a; 这很容易学习。 它超级多才多艺。 …

腾讯云轻量应用服务器性能如何?测评来了

腾讯云轻量应用服务器性能如何&#xff1f;CPU型号主频、内存、公网带宽和系统盘存储多维对比&#xff0c;轻量应用服务器会不会比云服务器CVM性能差&#xff1f;相对于CVM云服务器轻量服务器更适合轻量级的应用&#xff0c;轻量服务适合中小企或个人开发者用于搭建We网站b应用…

svn 安装 和配置idea

SVN客户端安装 一、SVN客户端安装 1、下载安装包地址&#xff1a;svn下载地址 此安装包是英文版的&#xff0c;还可以下载一个语言包&#xff0c;在同界面的下方 这里可以下载 一个汉化的 语言包&#xff08;在下载界面向下翻即可&#xff09; 下载完成之后&#xff0c;就会…