📜  深度反映的 XSS 漏洞

📅  最后修改于: 2022-05-13 01:56:29.310000             🧑  作者: Mango

深度反映的 XSS 漏洞

在本文中,我们将讨论基于 Web 的应用程序中最常见的漏洞之一,即反射型 XSS。

什么是跨站脚本:

  • 跨站点脚本是大多数基于 Web 的实时应用程序中最常见的漏洞。 Web 应用程序是用户输入和搜索字段的集合。所以这是跨站脚本(XSS)攻击发生的载体。在这个用户输入中,攻击者输入了恶意的 JavaScript 代码,目的是窃取用户会话或进行残酷的代码执行。
  • XSS 攻击主要是由于对用户输入的不正确验证和清理而触发的。精心制作的输入可以提供给任何输入字段,并且可以轻松传输到 Web 服务器或数据库。如果在将信息发送到网络服务器之前处理得当,那么应用程序可以免受 XSS 攻击。

跨站脚本类型:

  • 反射型 XSS —当恶意脚本反映在网站的结果或响应中时,就会发生反射型 XSS 攻击。
  • 存储的 XSS —恶意数据永久存储在数据库中,随后受害者在不知道攻击的情况下访问和运行。
  • DOM XSS —基于 DOM 的 XSS,其中攻击者的有效负载是由于修改了原始客户端脚本使用的受害者浏览器中的 DOM “环境”而执行的。客户端代码以“意外”的方式运行。

深度反射型 XSS:

  • Reflected Cross-Site Scripting 是注入脚本从网络服务器反射出来的类型,如错误消息、搜索结果或任何其他响应。反射型攻击通过电子邮件或网络钓鱼等其他路径传递给受害者或目标。当用户被诱骗点击恶意脚本或链接时,这种攻击就会触发用户的浏览器。反射型 XSS 的一个简单示例是搜索字段。
  • 攻击者寻找直接使用用户输入来生成响应的地方,以发起成功的反射型 XSS 攻击。这通常涉及不期望托管脚本的元素,例如图像标签 (),或添加事件属性,例如 onload 和 onmouseover。这些元素通常不受相同的输入验证、输出编码和其他内容过滤和检查例程的约束。

反射型 XSS 的步骤


在上图中:

  • 攻击者发送一个包含恶意 JavaScript 代码的链接。
  • 恶意链接在他身边的任何特定浏览器上的普通用户中执行。
  • 执行后,cookie 或会话 ID 等敏感数据将被发送回攻击者,普通用户会受到威胁。

示例 1:考虑一个 Web 应用程序,它通过查询字符串。

应用服务器希望在 HTML 页面上显示用户提供的搜索值。在这种情况下, PHP用于从 URL 中提取值并生成结果 HTML

检查用户在 URL 中提供的输入是如何在不执行输入验证和输出编码的情况下直接向前传递的。因此可以形成一个恶意脚本,这样如果受害者点击 URL,恶意脚本就会被受害者的浏览器执行,并将会话值发送给攻击者。

示例 2:当应用程序使用动态页面向用户显示错误消息时,也可能发生反射型 XSS。基本上,页面采用包含消息文本的输入参数,并在响应中简单地将该文本显示给用户。
考虑以下 URL,它返回错误消息

如果我们检查返回页面的 HTML 源代码,应用程序只需复制 URL 中 message 参数的值并将其插入到错误页面中合适的位置。

由于没有对错误消息执行清理和验证,攻击者可以轻松插入生成弹出对话框的恶意脚本。

请求此链接会生成一个 HTML 响应页面,其中包含以下内容来代替原始消息。

缓解措施:

  • 尝试使用不允许在输入字段或 URL 中使用客户端脚本的浏览器技术。
  • 使用严格的类型字符和编码强制来避免 XSS。
  • 确保所有用户提供的输入在发送到服务器之前都经过充分验证。

反射型 XSS 的影响:

  • 攻击者可以劫持用户帐户。
  • 攻击者可以窃取凭据。
  • 攻击者可以泄露敏感数据。
  • 攻击者可以窃取 cookie 和会话。
  • 攻击者可以快速获得对您其他客户端计算机的访问权限。