技术

什么是 XSS?跨站点脚本攻击解释

什么是 XSS?跨站点脚本攻击解释

 

在 XSS 攻击的情况下,攻击者将恶意代码注入 Web 表单或 Web 应用程序 URL 以强制其执行不应该执行的操作。


 
 

跨站点脚本 (XSS) 是一种网络攻击,其中黑客将恶意代码插入 Web 表单或 Web 应用程序的 URL。这种以 JavaScript 或 PHP 等脚本语言编写的恶意代码可以做任何事情,从破坏您尝试加载的页面到窃取您的密码或其他登录凭据。

XSS 利用了现代互联网的一个重要方面,即大多数网页是在页面加载时创建的,有时是通过在浏览器本身中执行代码来创建的。这会使防止此类攻击变得困难。

还要检查:

XSS 攻击是如何工作的?

任何人都可以创建包含恶意代码的网站。在跨站点脚本攻击的情况下,攻击者安排一切,以便他的代码在访问其他人的网站时到达受害者的计算机。这就是名字中的“十字架”的由来。XSS 攻击实现了这一点,而不需要对 Web 服务器的特权访问来秘密地放置代码。相反,攻击者利用现代网站的工作方式。

如果有人要求您对 Web 的工作原理进行简单而基本的解释,您可能会这样告诉他们:想要创建网页的人编写 HTML 文档并将其放置在 Web 服务器上;当用户想要访问这个页面时,他将他的浏览器指向服务器地址,浏览器下载并解释 HTML 代码,并构建用户网页的副本。

这个描述没有错,但是有些方面已经过时了(并且已经存在了十多年)。首先,即使不是全部,今天的许多网页都是动态的——也就是说,它们不会向每个访问者显示相同的静态 HTML,而是在浏览器请求访问时从服务器数据库中的信息立即生成。浏览器从服务器接收的页面通常取决于随请求发送的信息——这些信息有时采用用于访问站点的 URL 中的参数形式。网站不仅包含描述如何显示文本和图形的 HTML 和级联样式表 (CSS),而且还包含用脚本语言(通常是 JavaScript)编写的可执行代码。

在 XSS 攻击中,黑客利用用户和网站之间的这种交互来在用户的计算机上执行恶意代码。但如何?考虑以下 URL:

https://www.google.com/search?q=CSO+online

在浏览器的地址栏中输入此内容,您将看到“CSO Online”的 Google 搜索结果。事实上,您将看到的页面看起来与您在浏览器的搜索栏或 Google 主页上输入“CSO Online”完全一样。除其他外,您会注意到该短语出现在页面的多个位置,包括山区的搜索栏:

ما هو XSS؟ توضيح هجمات البرمجة النصية عبر المواقع

如果这个 URL 包含这样的恶意 JavaScript 代码,而不是单纯而成功的短语“CSO online”,该怎么办?

https://www.google.com/search?<script>doEvil()</script>

doEvil() 在这里做得非常糟糕。您可能担心 Google 不会在您从该 url 返回的页面上显示“CSO Online”,而是将错误的 javascript 动态集成到您正在呈现的页面中,并且该脚本正在您的浏览器中执行,造成混乱。您的担心是没有根据的,因为 Google 在其员工中拥有大量优秀的 IT 安全专业人员,并且已经实施了我们稍后将讨论的补救措施。但是,并非每个站点都非常小心,这让您了解此类攻击的工作原理。

Ataki XSS

XSS 攻击分为几类:反射攻击、基于 DOM 的攻击和存储攻击。以下是它们的不同之处:

  • 反射攻击:也称为弱攻击,恶意 JavaScript 代码从受害者的浏览器发送到谷歌,然后以可执行的形式反射回来,从未存储在谷歌的服务器上。这些攻击通常是网络钓鱼诈骗的一部分,其中恶意链接被伪装成更有趣的东西,并通过电子邮件或短信发送给受害者。
  • 基于 DOM 的攻击:这是一种称为文档对象模型的反射攻击,它是一种标准 API,定义了浏览器如何从基本的 HTML 或 JavaScript 代码构建网页。大多数 DOM 攻击类似于前面描述的反射攻击,不同之处在于恶意代码永远不会发送到服务器:而是作为参数传递给浏览器本身执行的某些 JavaScript 函数,这意味着保护机制服务器端无法保护用户。如果您对细节感兴趣,PortSwigger 对 DOM 攻击的工作原理有更详细的描述。
  • 存储攻击:否则持久;攻击者利用网站的交互功能将恶意代码保存在网络服务器上。在一个典型示例中,攻击者在包含恶意 JavaScript 的博客文章上留下评论。下次有人加载此页面时,代码将被执行。
  • 易受 XSS 攻击

是什么让网站容易受到 XSS 攻击?希望我们到目前为止的讨论提供了一些指导。如果您的 Web 应用程序天真地接受用户输入,不检查它是否存在恶意可执行代码,并使用该数据来呈现页面或执行其他操作,那么它很容易受到这种类型的攻击。

而且风险很大。浏览器安全的主要方面是所谓的同源策略,它规定在一个页面上执行的脚本只有在双方具有相同的来源(定义为 URI、主机名、和号码端口)。但是,如果在受害者访问网站时可以在浏览器中运行恶意 JavaScript,则浏览器将允许 JavaScript 访问与易受攻击网站共享资源的其他网站的数据。JavaScript 可以访问 cookie 和其他专有会话信息,这是入侵受害者 Internet 帐户的好方法。

有效载荷 XSS

用恶意软件的说法,有效负载是执行攻击者所需操作的可执行代码。在 XSS 攻击的情况下,有效负载是攻击者运行的脚本代码,以欺骗受害者的浏览器执行。

GitHub 上的 Payloadbox 存储库中有大量 XSS 有效负载模板。如果您熟悉 JavaScript,复习一下它可能会让您了解 XSS 攻击者是如何进行肮脏工作的。但是,XSS 攻击不仅仅是将有效负载剪切并粘贴到 URL 中:攻击者需要了解他想要利用的 Web 应用程序的特定功能和漏洞来计划攻击。如果您想深入挖掘并查看 XSS 攻击的一些示例,请查看 OWASP XSS 网站以深入了解演示 XSS 攻击的脚本代码。

XSS防护与预防

如果您正在构建或维护 Web 应用程序或交互式网站,您应该在设计中考虑三种主要技术,以避免潜在的跨站点脚本攻击。

  • 输入数据的灭菌。防止恶意代码作为输入传递并返回给用户的明显答案就是不接受脚本代码作为输入。您绝对应该牢记这一点来过滤您的输入,但这说起来容易做起来难;一小段可执行代码可以通过过滤器。处理此问题的一种方法是使用白名单而不是黑名单方法 – 例如,您必须编写应用程序来接受特定时间的数据格式(电话号码、电子邮件地址等)仅在您想要的情况下。
  • 逃离输出。另一方面,这是解决问题的方法。如果 Web 应用程序将用户输入发送回网页,则必须过滤此数据以确保它不会在该页面上成为可执行文件。如果用户输入 HTML 标记作为输入,应用程序必须使用覆盖字符,以便这些标记在结果页面上显示为文本,而不是与页面本身的 HTML 集成。
  • 标准内容安全策略 (CSP)。CSP 将文本输入之外的“白名单”方法带入脚本领域:Web 应用程序应该只执行用户指定为安全的代码。Google 在实施 CSP 方面有一些很好的资源。

跨站脚本测试

XSS 攻击的漏洞测试是确保 Web 应用程序安全的一个重要方面。OWASP 有详细说明如何测试应用程序以避免 DOM 攻击或反向跨站点脚本的资源。如果您正在寻找 XSS 表格,OWASP 还为您提供了包含 XSS 攻击代码的文档,可用于绕过某些 XSS 防御过滤器;它将在您可以在自己的系统上执行的渗透测试中证明是无价的。

XSS 和 CSRF

您可能听说 CSRF 与 XSS 在相同的上下文中使用。它是 Cross-Site Request Forgery 的缩写,一种针对用户浏览器的攻击,例如 XSS。主要区别在于 CSRF 为用户使用经过身份验证的会话(可能他们已登录到他们的银行帐户),而 XSS 不需要经过身份验证的会话即可生效。

假设用户同时登录 Twitter 和网上银行,他们点击如下所示的 Twitter 链接:

http://www.yourbank.com/sendmoney,do?from=you&to=attacker&amount=5000

根据您的银行管理会话令牌的方式和您使用的浏览器,它们可能会突然变得更差。XSS 是一种更危险的攻击向量,但同时防御 XSS 和 CSRF 很重要。OWASP 准备了一份关于针对 CSRF 的保护措施的信息表。

最近和臭名昭著的 XSS 攻击

最古老和最著名的跨站点脚本攻击之一发生在 2005 年,当时有进取心的 MySpace 用户 Sammy Kamkar 意识到他可以在他的个人资料中输入 JavaScript 代码,这将自动验证访问该站点的任何人 – 并将该代码复制到您的个人资料中新朋友,多亏了这一点,所有访问这些页面的人也将成为他的朋友。(剧本确保卡姆卡的每个新朋友都进入了“前八名”——我们害怕理解这一点,你必须在那里,但相信我们,这很重要。)在 24 小时内,他结交了超过一百万的朋友,并迫使 MySpace 短时间关闭了整个网站。

事实证明,所谓的萨米蠕虫大多是无害的。然而,其他人更烦人:

• Ebay 多年来一直存在 XSS 漏洞,允许黑客窃取用户登录凭据

• XSS 攻击者能够在 2019 年从 Fortnite 玩家那里窃取 V-Bucks。

• 黑客组织 Magecart 于 2018 年通过 XSS 攻击攻击了英国航空公司,窃取了数十万用户身份

跨站点脚本在今天仍然是一个严重的威胁。截至 2021 年,已在 Zimbra 电子邮件平台、Wordpress 和开源 IT 管理平台 Nagios 中发现 XSS 漏洞。请记住,黑客通常不会孤立地使用攻击技术:跨站点脚本是最近发现的复杂形式的 TLS 通配符攻击(称为 ALPACA)的一个组成部分。为避免危险威胁,请确保关闭 XSS 漏洞。

资料来源:公民社会组织

.

还看

伊隆马斯克在乌克兰免费提供 Starlink 服务

Related Articles

Back to top button