飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

如何防止网站的点击劫持攻击

时间:2021-12-29  作者:电脑狂魔  

什么是点击劫持攻击?

点击劫持攻击,也称为用户界面 (UI) Redressing,是一种 Web 应用程序攻击,黑客诱使用户单击不可见的网页元素。黑客设置了多个不透明或透明层。因此,用户单击按钮或链接可能会导致他们访问恶意页面、下载恶意软件、转移资金或泄露敏感数据。在常规网页上使用 iFrame 来显示不可见的 HTML 元素或网页会执行典型的点击劫持攻击。 

点击劫持攻击的风险和影响

对于普通用户来说,点击劫持攻击很难被检测到,因为它们在一个不可见的框架内包含了一个恶意应用程序链接。成功的点击劫持攻击可能会暴露用户的敏感数据,例如安全卡号或登录凭据。虽然点击劫持漏洞被认为是中等风险,因为它需要用户直接与恶意页面/元素交互,但成功攻击的影响程度取决于应用环境、暴露的用户类型和获取的数据类型。攻击者通常通过点击劫持攻击执行的一些恶意操作包括:

  • 麦克风或网络摄像头激活

  • 登录凭据被盗

  • 非法授权转账

  • 位置曝光

  • 邀请下载恶意软件

点击劫持攻击的类型和示例

无论是否依赖覆盖内容,点击劫持攻击都可以分为两大类。

基于覆盖的点击劫持攻击

这些点击劫持攻击是最流行的攻击,它们依赖于在不可见框架中嵌入恶意内容。常见的基于覆盖的攻击类型包括:

完全透明的覆盖攻击

这是一种典型的覆盖攻击,其中合法页面/链接覆盖在黑客创建的恶意页面上。黑客将工具页面放置在一个不可见的 iFrame 中,然后通过设置较低的不透明度将其放置在可见元素上。毫无戒心的用户点击合法链接,激活工具页面,重定向浏览器以执行恶意脚本,或访问非预期的网页。

裁剪

在这种类型的覆盖中,攻击者仅通过使用恶意超链接阻止一些按钮来触发发起攻击的操作来裁剪合法内容的一部分。例如,攻击者会在弹出窗口上的原始问题上覆盖一个新问题,使原始的“允许”和“取消”链接保持活动状态。在这种情况下,最终用户最终会假设他正在点击问题的合法链接。

隐藏叠加

最早展示的点击劫持攻击形式是隐藏覆盖方法,涉及将恶意内容加载到 1×1 iFrame 上,因此用户看不到可点击元素。iFrame 内容位于光标下方,因此最终用户不可避免地会点击它。

指针事件

黑客开发了恶意内容,但将其完全隐藏在合法内容后面。然后,他们通过将顶层的 CSS pointer-events属性设置为none来确保点击事件落入恶意页面。这意味着所有点击事件只注册到它们的恶意元素。

基于非覆盖的点击劫持攻击

即使不使用叠加层,黑客也可以通过以下方式进行点击劫持:

滚动攻击

黑客部分滚动显示的弹出窗口或其他 Web 元素的一部分,因此用户只能访问某些控件。这可能涉及攻击者将警告对话框从屏幕上滚动,以便只有操作按钮可访问,从而用可疑文本引诱毫无戒心的用户。用户假定这些操作适用于攻击者的隐藏消息,而不是对话框中的实际警告。

拖放

在这种类型的点击劫持攻击中,黑客诱使用户执行拖动操作而不是点击。例如,这可能涉及用滚动条的描绘覆盖受信任窗口的右/左边缘。当用户尝试使用栏滚动时,他们会启动一个拖动操作,将敏感信息从受信任的窗口暴露或丢弃到黑客可以访问的恶意页面中。

快速内容替换

在这种情况下,攻击者会隐藏受害者的内容,直到用户即将点击的确切时刻。黑客随后会通过恶意链接快速删除模糊内容,这会提示用户点击,认为他们正在执行合法操作。

点击劫持攻击的例子

一段时间以来,点击劫持攻击已经演变成几个特定于用例的黑客攻击。一些例子包括:

喜欢劫持

一种在社交媒体平台上流行的 UI 矫正形式会诱使用户“喜欢”他们从未想过的帖子和促销活动。黑客的 Facebook 页面/帖子嵌入在 iFrame 中,因此用户不会意识到他们正在点击一个不可见的“喜欢”按钮。

光标劫持

在这种形式的攻击中,黑客会改变光标的位置,因此它不是受害者认为的位置。结果,受害者认为他正在用假光标点击预期链接,而指向另一个元素的实际光标点击了假链接。

cookie劫持

黑客使用可用的 UI 修复技术来窃取受害者的 cookie。然后他们可以从 cookie 中读取信息,然后通过获取他们的会话来使用它来窃取用户的身份。拖放式点击劫持攻击通常会实现 Cookiejacking,当用户认为他们将内容放入页面元素时,cookie 数据就会暴露出来。

文件劫持

这种攻击依赖于现代 Web 浏览器在受害者计算机上浏览本地文件系统的能力。例如,当用户尝试在社交媒体上上传照片时,会出现一个文件浏览器窗口。在文件劫持攻击中,“单击添加文件”按钮会建立一个活动文件服务器,攻击者可以使用该服务器访问整个文件系统。

如何防止点击劫持攻击发生

由于攻击者使用恶意 iFrame 构建目标网页,因此大多数点击劫持攻击缓解技术都围绕着限制框架展开。确保免受点击劫持攻击的一些实用方法包括:

框架破坏或框架破坏

Framebusting 是一种客户端缓解技术,它涉及使用代码来防止网页在 iframe 中加载。为了实现这一点,开发人员使用由条件语句和消除覆盖的反作用组成的破帧脚本对代码进行注释。一个简单的帧破坏脚本示例类似于:

i f ( top . l o c a t i o n != l o c a t i o n ) 
top . l o c a t i o n = s e l f . l o c a t i o n ;

Framebusting 可以保护加载在所有重要浏览器和旧浏览器中的网页,因为修改是对 HTML 代码进行的,而不是对 HTTP 标头进行的。

X-Frame-Options

X-Frame-Options 是一个 HTTP 响应头,用于确定浏览器是否可以在 iframe 中呈现页面。事实证明,它可以有效防御点击劫持攻击,因为开发人员使用它来确保 Web 内容不会嵌入到其他站点的框架中。为此,开发人员为所有包含 HTML 内容的标头响应设置X-Frame-Options标头。 

这包括使用三种可能的值类型:

  • DENY - 防止所有网站构建内容

  • SAMEORIGIN – 只允许当前网站构建内容

  • ALLOW-FROM – 允许来自指定 URL 的内容框架内容

内容安全策略 (CSP) 框架祖先指令

frame-ancestors 属性可以在 CSP HTTP 响应头中使用,以确定它是否可以在框架或 iframe 中呈现页面。通过确保合法内容未嵌入其他站点,开发人员可以防止点击劫持攻击。帧祖先有三个选项:

  • 内容安全策略:框架祖先“无”;– 防止任何网站构建内容。

  • 内容安全策略:框架祖先“自我”;– 允许当前站点构建页面内容。

  • 内容安全策略:frame-ancestors 'self' *.域名 https://域名; – 允许当前站点、域名(参考网站)上的任何页面以及仅在默认端口上使用 HTTPS 的 域名 上的页面。

标签:点击劫持
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。