XSS攻击(2), XSS分类, 测试方法, 防御方法, 绕过方法

XSS攻击, XSS分类, 测试方法, 防御方法

对于所有类型的XSS渗透测试,确保您有适当的权限进行测试,以避免非法或不受欢迎的行为。
此外,渗透测试工具和框架,如Burp SuiteOWASP ZAP,可以帮助自动化一些测试任务并识别潜在的漏洞点。

一, XSS分类

1. 反射型XSS:

恶意脚本不会被存储在目标网站上,而是通过URL或其他方式传递。
受害者通常会点击一个恶意链接,该链接会引导他们到目标网站,并在URL中传递恶意脚本。
由于目标网站不正确地处理输入,恶意脚本会被执行。

2. 存储型XSS:

恶意脚本被存储在目标服务器上(例如,数据库中),当其他用户访问某些页面时,脚本会被加载并执行。
例如,如果一个论坛的帖子内容没有经过适当的过滤和转义,攻击者可以发布一个带有恶意脚本的帖子,当其他用户查看该帖子时,恶意脚本会在他们的浏览器中执行。

3. DOM型XSS:

这是一种更加高级的XSS攻击,涉及到网页的DOM操作。
攻击者利用网页脚本未正确处理用户输入的事实,通过DOM操作来注入并执行脚本。

二, 测试方法

对于XSS的不同类型,使用的渗透测试方法可能会有所不同。以下是针对反射型、存储型和DOM型XSS的基本渗透测试方法:

  1. 反射型XSS

    • 找寻目标:首先,您需要找到应用程序中所有接受用户输入并在响应中反映这些输入的地方。这通常包括URL参数、POST数据和其他输入向量。

    • 测试注入:尝试插入各种恶意脚本载荷,看看它们是否在响应中原样反映出来。例如,尝试插入<script>alert(1)</script>或简单的HTML标签,如<b>test</b>来查看它们是否有效。

    • 绕过过滤器:如果应用程序具有某种输入过滤或转义机制,尝试使用不同的编码、大小写或其他技巧来绕过它们。

  2. 存储型XSS

    • 找寻目标:查找应用程序中的所有地方,可以提交数据并在其他地方再次显示这些数据,例如评论、论坛帖子、用户资料等。

    • 测试注入:与反射型XSS相似,尝试插入恶意载荷,但在这里,您希望这些载荷能够被存储并在后续的请求中再次呈现给用户。

    • 检查后端:存储型XSS通常涉及到后端数据库或其他存储机制。了解后端如何处理和存储数据可以帮助您更好地定制攻击。

  3. DOM型XSS

    • 分析JavaScript:此类型的XSS与前端JavaScript代码直接相关。检查代码中如何处理用户输入和如何将数据动态地插入到DOM中。

    • 测试注入:找到应用程序接受但不发送到服务器的输入向量,例如URL的hash部分、localStorage或其他客户端存储。尝试修改这些值并观察应用程序如何响应。

    假设一个网页有以下JavaScript:

    var input = document.getElementById('userInput').value;
    document.getElementById('outputDiv').innerHTML = input;
    

    上面的代码简单地获取一个输入框的值,并将其作为HTML插入到一个div中。这就创建了一个DOM型XSS的机会。
    如果攻击者可以诱使用户在输入框中输入恶意内容,例如:

    <img src=x onerror=alert('XSS')>
    

    当该输入被赋值给outputDivinnerHTML属性时,会触发onerror事件,执行alert(‘XSS’)。

    • 使用开发者工具:浏览器的开发者工具,特别是JavaScript控制台,对于测试和识别DOM型XSS非常有用。

三, 防御方法

1. 适当地转义输出:

当将数据插入HTML、JavaScript、CSS或其他Web上下文时,确保数据被适当地转义。
对于HTML内容,使用HTML实体转义特殊字符,如 < > & "等.

当你从用户那里接收到输入,并且打算在HTML中显示该输入时,使用 htmlspecialchars() 可以帮助确保内容安全地显示,而不会触发XSS攻击。

对于JavaScript内容,确保所有动态数据在插入脚本之前都被适当地转义或编码。
使用开发框架或库提供的安全方法来插入动态内容。

以下是htmlspecialchars()如何转换一些特殊字符的示例:

< 转换为 &lt;
> 转换为 &gt;
" 转换为 &quot;
& 转换为 &amp;
$user_input = $_GET['input'];
safe_output = htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
echo "<div>" . $safe_output . "</div>";
2. 验证和过滤输入:

所有从用户、第三方API或其他不受信任的来源接收的数据都应该进行严格的验证。
使用白名单方法验证输入,而不是黑名单方法。这意味着只允许预期的输入,而拒绝所有其他输入。

3. 采用开发框架和库的安全功能:

许多现代的Web开发框架和库,如React Vue.js Angular,都提供了内置的XSS防护机制。
确保您了解并正确使用这些功能,同时保持框架和库的版本是最新的。

4. 使用内容安全策略(CSP):

CSP是一种浏览器特性,允许服务器指定哪些内容可以执行和加载。
通过限制只允许从受信任的来源加载脚本,可以有效地减少XSS的风险。
使用非常严格的CSP策略,例如禁止内联脚本,并仅从可信的源加载外部脚本。

四, 绕过方法

1. 大小写绕过

某些过滤器可能只检查小写版本的危险字符串,如<script>。攻击者可以通过使用大写或大小写混合,如<ScRiPt>,来绕过这些过滤器。

2. html实体绕过

HTML实体是一种表示某些字符的方式,这些字符在HTML中有特殊的意义。
例如,< 和 > 用于定义标签,但它们也可以使用HTML实体 &lt;&gt; 来表示。

除了使用已命名的实体(如&lt;代表 < )外,还可以使用数值来表示字符,这些数值可以是十进制或十六进制。这种数值表示的方法通常被称为字符实体引用数值实体引用

十进制实体编码:使用基于10的数值系统,以 &# 开始,然后是字符的十进制码,最后以 ; 结束。
例如: < 的十进制ASCII值是60。因此,它的十进制实体编码是&#60;

十六进制实体编码:使用基于16的数值系统,以 &#x(注意小写的x)开始,然后是字符的十六进制码,最后以 ; 结束。
例如: < 的十六进制ASCII值是3C。因此,它的十六进制实体编码是&#x3C;

2.1 基本实体绕过

假设一个应用过滤或转义了 < 和 > 字符,但没有处理对应的HTML实体:

&lt;script&gt;alert(1)&lt;/script&gt;

如果浏览器解析了这些实体,并执行了其中的脚本,那么XSS攻击就成功了。

2.2 十进制和十六进制实体编码

除了基本的实体外,攻击者还可以尝试使用十进制或十六进制实体编码来绕过过滤:

&#x3C;script&#x3E;alert(1)&#x3C;/script&#x3E;
2.3 利用浏览器的解析行为

某些浏览器在解析不完整的HTML实体时可能会产生不可预测的行为。例如,某些浏览器可能解析以下代码:

&ltscript>alert(1)</script
3. 利用DOM事件

即使<script>标签被过滤,攻击者仍可能尝试使用事件处理器,如 onmouseover、onload、onerror等,插入恶意代码。

4. 使用 data:URL

data: URI方案允许你直接在URL中嵌入数据。
对于XSS攻击,这可能会被用作<img>, <script>, <iframe>等标签的src属性值,以执行JavaScript。

<iframe src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' onload='alert(1)'></svg>"></iframe>

在上面的示例中,一个SVG图像数据被嵌入到 <iframe> 标签的src属性中,并且当SVG加载时,它会触发onload事件执行JavaScript。

5. SVG 标签

SVG (Scalable Vector Graphics) 是一个XML格式,用于描述二维图形。
由于它基于XML,可以包含事件处理程序或其他交互性元素,如JavaScript。

<svg onload="alert('XSS')"></svg>

在上述示例中,SVG图形包含一个onload事件,当SVG元素加载到页面中时,会执行alert(‘XSS’)代码。

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

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

相关文章

【具身智能综述1】A Survey of Embodied AI: From Simulators to Research Tasks

论文标题&#xff1a;A Survey of Embodied AI: From Simulators to Research Tasks 论文作者&#xff1a;Jiafei Duan, Samson Yu, Hui Li Tan, Hongyuan Zhu, Cheston Tan 论文原文&#xff1a;https://arxiv.org/abs/2103.04918 论文出处&#xff1a;IEEE Transactions on E…

柯桥银泰附近有学德语的地方吗,留学德语培训

01 die Garantiefr jemandem/etwas 给某人或某事的保障 Das System bietet die Garantie fr die Bauer. 02 der Gebrauch von etwas 使用某物 Wir haben den Gebrauch vom Computer gelerbt. 我们学会了使用电脑。 03 Die Geduld mit jemandem/etwas 对..的耐心 Der Lehre…

智慧河湖方案:AI赋能水利水务,构建河湖智能可视化监管大数据平台

一、方案背景 我国江河湖泊众多&#xff0c;水系发达。伴随着经济社会快速发展&#xff0c;水生态水环境问题成为群众最关注的民生议题之一。一些河流开发利用已接近甚至超出水环境承载能力&#xff0c;一些地区废污水排放量居高不下&#xff0c;一些地方侵占河道、围垦湖泊等…

如何在不恢复出厂设置的情况下解锁 Android 手机密码?

如何在不恢复出厂设置的情况下解锁 Android 手机密码&#xff1f; 当您忘记 Android 手机的密码时&#xff0c;可能会有压力&#xff0c;尤其是当您不想恢复出厂设置并删除所有数据时。但是&#xff0c;有一些方法可以在不诉诸如此激烈的步骤的情况下解锁手机。我们将在这篇文…

C#获取指定软件安装路径

作用 每个电脑安装的路径不一致会导致无法动态获取指定软件的安装路径&#xff0c;通过注册表来获取安装路径 代码 RegistryKey registryKeyPro Registry.LocalMachine.OpenSubKey("SOFTWARE\\****"); string installDir (string)(registryKeyPro.GetValue(&quo…

数据仓库扫盲系列(1):数据仓库诞生原因、基本特点、和数据库的区别

数据仓库的诞生原因 随着互联网的普及&#xff0c;信息技术已经深入到各行各业&#xff0c;并逐步融入到企业的日常运营中。然而&#xff0c;当前企业在信息化建设过程中遇到了一些困境与挑战。 1、历史数据积存。 过去企业的业务系统往往是在较长时间内建设的&#xff0c;很…

华为OD 打印任务排序(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…

电动汽车打气泵芯片方案

汽车轮胎打气泵方案采用高集成的SOC芯片设计&#xff0c;8位RISC架构的高性能单片机&#xff0c;集成了24Bit高精度ADC和LCD显示模块&#xff0c;内部集成8k*16Bits的MTP程序存储器&#xff1b;具有RISC CPU、模拟器功能、专用微控制等功能特点。丰富的芯片资源在汽车轮胎打气泵…

JavaSE编程题目练习(三)

博客昵称&#xff1a;架构师Cool 最喜欢的座右铭&#xff1a;一以贯之的努力&#xff0c;不得懈怠的人生。 作者简介&#xff1a;一名Coder&#xff0c;欢迎关注小弟&#xff01; 博主小留言&#xff1a;哈喽&#xff01;各位CSDN的uu们&#xff0c;我是你的小弟Cool&#xff0…

2023.10.20期中考核复现(misc)

杂项题就是2023陇剑杯的题目&#xff0c;可能还是不感兴趣吧&#xff0c;自从打完蓝帽杯之后除了web以外什么都没看 flow analysis 1 题目&#xff1a;What is the backdoor file name that comes with the server?( Including file suffix) 服务器附带的后门文件名是什么&am…

【前端】图片裁剪路径绘制及图片不规则裁剪

说明 项目中可能需要用户根据展示的图片&#xff0c;然后绘制需要裁剪的路径&#xff0c;再根据绘制的坐标进行裁剪&#xff0c;以下是前端的裁剪路径绘制的代码示例&#xff0c;后端可以根据当前的获取到的坐标进行裁剪&#xff0c;裁剪的坐标保存在coordinate数组中。 代码 …

【Maven教程】(八):使用 Nexus 创建私服 ~

Maven 使用 Nexus 创建私服 1️⃣ Nexus简介2️⃣ 安装 Nexus2.1 下载 Nexus2.2 Bundle 方式安装 Nexus2.3 WAR 方式安装 Nexus2.4 登录 Nexus 3️⃣ Nexus 的仓库与仓库组3.1 Nexus 内置的仓库3.2 Nexus 仓库分类的概念3.3 创建 Nexus 宿主仓库3.4 创建 Nexus 代理仓库3.5 创…

计算机毕业设计 基于SpringBoot笔记记录分享网站的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

openGauss学习笔记-105 openGauss 数据库管理-管理用户及权限-默认权限机制

文章目录 openGauss学习笔记-105 openGauss 数据库管理-管理用户及权限-默认权限机制 openGauss学习笔记-105 openGauss 数据库管理-管理用户及权限-默认权限机制 数据库对象创建后&#xff0c;进行对象创建的用户就是该对象的所有者。openGauss安装后的默认情况下&#xff0c…

C++算法前缀和的应用:分割数组的最大值的原理、源码及测试用例

分割数组的最大值 相关知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例&#xff1a;付视频课程 二分 过些天整理基础知识 题目 给定一个非负整数数组 nums 和一个整数 m &#xff0c;你需要将这个数组分成 m 个非空的连续子数组。 设计一个算法…

聊聊分布式架构09——分布式中的一致性协议

目录 01从集中式到分布式 系统特点 集中式特点 分布式特点 事务处理差异 02一致性协议与Paxos算法 2PC&#xff08;Two-Phase Commit&#xff09; 阶段一&#xff1a;提交事务请求 阶段二&#xff1a;执行事务提交 优缺点 3PC&#xff08;Three-Phase Commit&#x…

11-k8s-service网络

文章目录 一、网络相关资源介绍二、开启ipvs三、nginx网络示例四、pod之间的访问示例五、service反向代理示例 一、网络相关资源介绍 Servcie介绍 Service是对一组提供相同功能的Pods的抽象&#xff0c;并为它们提供一个统一的入口。借助Service&#xff0c;应用可以方便的实现…

如何在电脑上设置新的蓝牙耳机

本文介绍如何将蓝牙耳机连接到Windows或Mac电脑。 如何在Windows上设置新的蓝牙耳机 蓝牙耳机的设置过程因平台而异&#xff0c;但以下是Windows 11的步骤&#xff1a; 1、选择“开始”&#xff0c;然后在搜索框中输入蓝牙&#xff0c;以显示蓝牙和其他设备。 2、选择添加设…

【马蹄集】—— 概率论专题:第二类斯特林数

概率论专题&#xff1a;第二类斯特林数 目录 MT2224 矩阵乘法MT2231 越狱MT2232 找朋友MT2233 盒子与球MT2234 点餐 MT2224 矩阵乘法 难度&#xff1a;黄金    时间限制&#xff1a;5秒    占用内存&#xff1a;128M 题目描述 输入两个矩阵&#xff0c;第一个矩阵尺寸为 l…

2024年仁爱学院专升本招生专业对应范围专业目录更新的通知

天津仁爱学院2024年高职升本科招生专业对应范围专业目录 为了更好的进行天津仁爱学院专升本工作&#xff0c;动画专业不分文理进行录取。为了进一步提升录取专业的培养需要&#xff0c;请同学们复习专业课时加强专业课学习&#xff0c;请同学们在报考时关注天津仁爱学院招生章…