📜  内容欺骗

📅  最后修改于: 2021-10-19 08:24:07             🧑  作者: Mango

内容欺骗(也称为内容注入)是常见的 Web 安全漏洞之一。它允许易受攻击的 Web 应用程序的最终用户欺骗或修改网页上的实际内容。用户可能会利用网站的安全漏洞,将自己想要的内容注入目标网站。当应用程序没有正确处理用户提供的数据时,攻击者可以向 Web 应用程序提供内容,通常是通过参数值返回给用户。

这里有两种基本的注入方式:

  • 文本注入
  • HTML 注入

文字注入:

文本注入是一个子类别,用户只能在其中将纯文本注入页面。换句话说,不可能注入可执行的 JavaScript 内容、shell 命令或 HTML 内容。在大多数情况下,用户可能只能更改网站上已有的一些文本内容。

注入文本内容

在某些情况下,要在 UI 上显示的实际内容是通过请求参数传递的。例如,一个简单的登录表单将传递如下所示的请求,

https://www.testsite.com/loginAction?userName=test123&password=test123/

您可能有一个客户端验证来检查用户名和/或密码是否为空或不是预期的形式,并且基于此您可能会在 UI 中显示一条消息,这些字段不能为空。当此消息作为这样的请求参数附加时,就会出现问题,

https://www.testsite.com/loginAction?errorMsg=PasswordEmpty

一旦用户看到这个请求,他就可以按照他/她的意愿修改消息,这将显示在屏幕上。如果通过请求参数传递消息,则可以在站点的任何部分进行这种类型的注入。注入文本的可见性越高,当有人使用漏洞时站点受到影响的可能性就越大。

该网站可能是一个可信的网站,用户可能会添加攻击性内容并传播链接,对于受害者来说,网站所有者似乎发布了攻击性内容。

HTML 注入:

HTML 注入类似于文本注入,顾名思义,它允许注入 HTML 内容。这是一类相对严重的内容欺骗漏洞,因为与使用纯文本相比,使用 HTML 可以使攻击性内容更加明显。

注入 HTML 内容
一些站点也会在请求参数中传递 HTML 内容。例如,在弹出窗口或站点横幅中,站点会在参数中传递实际的 HTML 内容,并使其位于div标签中,例如,

https://www.testsite.com/setAdContent?divMessage=

ClickHere

并且将参数divMessage的值设置到 div 内的站点并呈现为 HTML 而不进行过滤。这是一个严重的漏洞,很明显,如果被利用,它可能会在更大程度上降低网站的可信度。

可以将其修改为,

https://www.testsite.com/setAdContent?divMessage=

Don't Use this site

并且您自己的网站将有一条滚动消息,提示不要使用它。

通过 HTML 注入的 XSS
当来自参数的消息在没有任何编码/过滤的情况下直接呈现时,这可能会更加严重。在这种情况下,它会导致更严重的 XSS 又称跨站脚本漏洞,用户可能能够注入可执行的 JavaScript,从而完全危及网站的安全。

会是这样的,

https://www.testsite.com/setAdContent?divMessage=>

并且您的站点容易出现跨站点脚本。

安全措施:

  • 从不通过请求参数构造和发送错误消息。
  • 首选使用在属性文件中预定义的消息。
  • 避免通过请求参数传递 HTML 内容。
  • 如果需要传递任何 HTML 内容,请在呈现为 HTML 之前进行编码/过滤
  • 通过内部消息键来获取预定义的消息值或一些唯一的 id 来标识要显示的内容