🔬
JTZ
  • 启航
    • 💻介绍
    • 🔧路径以及总结
    • 🏆日记
      • 😀2022-12-26
      • 😀2022-11-13
      • 😀2022-11-4
  • 网络&系统
    • 🔧端口&协议
      • NFS 介绍
      • Kerberos 介绍
      • WINRM 介绍
      • Telnet 协议
      • CDN 介绍
      • ICMP 介绍
      • DNS
      • RDP
      • SNMP
      • FTP
      • SMB
      • WMI
      • SSH
    • 🔧计算机网络
      • 计算机网络
        • 什么是网络
          • 什么是网络
          • 什么是交换机
          • 什么是路由器
          • 什么是防火墙
        • Model
          • 什么是TCP/IP模型?什么是OSI模型?
        • IP
          • IP地址
      • 资源
        • Postman
        • 思科模拟器 8.2
        • Cisco Packet Tracer
        • 视频
        • WireShark
      • 协议
        • MAC
        • DHCP
        • 端口转发
        • ARP
        • ICMP
      • 第一章--概述
      • 第二章--物理层
      • 第三章--数据链路层
      • 第四章--网络层
      • 第五章--传输层
      • 第六章--应用层
    • 🔧操作系统
    • 🔧Windows
      • 工具
        • WSL 安装 kail
          • Windows 端口转发 WSL 流量
          • 使用远程桌面连接 kali
        • VMware
        • WizTree
        • Beyond Compare 4
        • 画图软件
        • 记笔记软件
          • Typora 插件
          • Typora 图床
        • 文本编辑器
        • 视频播放器
        • VPN
        • 录屏工具
        • Wise Disk Cleaner
        • WinHex
        • Custom Cursor
        • RAMMap
        • Snipaste
        • PowerTotys
        • 浏览器
          • 浏览器插件
      • Windows
    • 🔧Linux
      • 杂类
        • linux中mnt,media以及dev目录的区别
        • 如何在 SSH 身份验证后运行脚本
        • 探索 Reverse SHELL
        • 恢复文件
        • PID 介绍
        • sudo配置文件/etc/sudoers
        • 定时任务
      • 权限
        • Linux 访问控制列表 (ACL) 简介
      • 目录
        • /mnt
        • /media
        • /etc
        • /usr
        • /proc
      • 工具推荐
        • linux下使用clash(GUI)
        • 终端模拟程序
      • Linux命令
        • 查看文件信息
        • 磁盘信息
      • Linux
  • 工具
    • 🔧端口&服务
      • 22 -- SSH
        • ssh-audit
      • 25/465/587 -- SMTP/s
        • SMTP 命令
        • sendEmail
        • swaks
      • 53 -- DNS
      • 80/443 -- WEB 服务
        • CURL
        • CMS
          • droopescan
          • JoomlaScan
          • WPScan
        • 扫描工具
          • feroxbuster
          • WFUZZ
          • gobuster
          • FFUF
      • 88 tcp/udp -- Kerberos
      • 139/445 -- SMB
        • enum4linux-ng
        • smbClient
        • smbmap
        • rpcclient
      • 873--Rsync
        • Rsync
      • 2049-TCP/UDP-NFS
        • NFS no_root_squash/no_all_squash 错误配置
      • 5985/5986 -- WINRM
        • evil-winrm
        • 内网移动
      • 云服务
        • AWS
    • 端口扫描
      • masscan
      • nmap
        • 研究
        • nmap-common
        • ndiff
        • nping
    • SHELL
      • Windows 交互 SHELL
      • pwncat-cs
      • Netcat
      • MSF
      • Socat
    • 脚本工具包
      • 🔧Impacket
        • Hunting for Impacket
    • 📖字典
      • CEWL
    • 自动化扫描工具
      • nikto
      • SQLMAP
    • 密码&解密&爆破
      • 识别 Hash
        • hash-identifier
        • hashid
      • 破解 Hash
        • John
        • Hashcat
        • Hydra
      • DomainPasswordSpray
    • 渗透框架工具
      • Searchsploit
      • Metasploit
        • Msfvenom
    • 文件
      • Imagemagick
      • Exiftool
    • 开发工具
      • Git
    • 浏览器
      • 浏览器密码&历史等信息
    • crackmapexec
    • OPENSSL
      • Heartbleed
    • 文件隐写术
      • binwalk
      • Exiftool
      • Steghide
    • 频谱分析
  • 🛸权限提升
    • 🔧Active Directory
      • 🦯AD 枚举和攻击 -- 工具
        • BloodHound
        • Kerbrute
    • 🔧Windows
      • 🦯Windows 权限提升工具
    • 🔧Linux
      • 提权
        • Linux 提权思路
        • Linux 提权备忘录
      • 资料
        • Linux 权限: SUID, SGID, sticky
      • 🦯Linux 提权工具
        • 📱Pspy
  • 🕶️HTB 学院
    • SHELLS&Payloads
    • 文件传输
    • 足迹
    • Pivoting &隧道和端口转发
    • 密码攻击
  • 🖥️WEB 渗透测试
    • 命令注入(RCE)
      • 🚚资源
    • 身份验证
    • 信息泄露
      • 信息泄露工具
    • XXE
      • 资源
      • XML 介绍
    • XSS
      • 资源
    • IDOR
    • CORS
      • 资源
    • IDOR
    • SSRF
      • 资源
    • Page 1
    • 目录遍历
    • 访问控制
    • 文件上传
      • 资源
      • WAF 绕过
    • 点击劫持
    • CSRF
      • 资源
        • 同源策略
    • SSTI
      • 资源
    • WebSocket
    • 逻辑缺陷
    • 反序列化
    • 文件包含
      • /proc/self/envirom
    • 文件隐写术
  • 🔧编程语言
    • 编程工具
      • Vs-Code
      • Jetbrains
      • Navicat Premium 15
    • C/C++
      • Linux C 一站式编程学习
    • Java
      • 资源
        • JDK
        • 画类图软件
    • Python
      • 资源
        • Python 环境
        • Python 虚拟环境
    • SHELL 教程
      • SHELL 教程
      • 高级Bash脚本编程指南
      • 1.1 变量
      • 1.2 特殊字符
      • 1.3 正则表达式
      • 1.4 数组
      • 1.5 字符串
      • 1.6 函数
      • 1.7 循环判断
      • 扩展
        • 执行命令
        • 子 SHELL
  • 🔧云开发
    • 🔧Docker
      • 🔧Docker
  • 🔧信息收集
    • 网站内容
    • OSINT
    • 侦查
      • Shodan.io
      • google 语法
    • 子域枚举
      • dig
  • 🔧逆向
    • 工具
      • GDB
        • PEDA
      • ghidra
  • 🔧杂章
    • 杂章
      • 区域传输
      • XFF&Referer
      • VHOST
      • ASN
      • Shadow Defender
      • WinHex
由 GitBook 提供支持
在本页
  • 介绍
  • 攻击
  • 1. 如何构建基本的点击劫持攻击
  • 2. 使用预提表单输入的点击劫持
  • 3. Frame busting scripts
  • 4. 点击劫持和 DOM XSS 攻击结合
  • 5. 多步点击劫持
  • 6. 点击劫持3.0 触屏劫持
  • 防御
  • 1. frame busting
  • 2. X-Frame-Options
  • 3. Content Security Policy (CSP)
  • 配合
  • 点击劫持 & CSRF
  • 点击劫持 & XSS
  • 参考

这有帮助吗?

在GitHub上编辑
  1. WEB 渗透测试

点击劫持

介绍

点击劫持是一种基于界面的攻击。攻击者使用一个透明的、不可见的 ifiame ,覆盖在一个网页上,然后诱导用户在该网页操作,此时用户将在不知情的情况下,点击透明的 iframe 界面,通过调整 iframe 页面的位置,可以诱导用户恰好点击在 iframe 的一些功能性按钮上。

点击劫持和 CSRF 攻击非常类似,都是在用户不知情的情况下诱导用户完成一些动作,但是 CSRF 攻击是在用户不知情或不输入的情况下伪造整个请求,而点击劫持需要用户执行诸如按钮单击之类的操作

攻击

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

<style>
   iframe {
        position:relative;
        width:700px;
        height: 500px;
        opacity: 0.0001;
        z-index: 2;
    }
    #decoy_website {
        position:absolute;
        top:450px;
        left:60px;
        z-index: 1;
    }
</style>
<div id="decoy_website" >Test me</div>
<iframe src="https://0a7100a004aa78f1c1e28fc00045007a.web-security-academy.net/my-account"></iframe>

攻击者使用上面代码间目标网站合并覆盖在诱饵网站上的 iframe 层,并使用 opacity 设置 iframe 的透明度,以及 z-index 设置 iframe 和网站层的堆叠顺序。

2. 使用预提表单输入的点击劫持

一些网站允许在提交之前使用 GET 参数预填充表单输入.

<style>
   iframe {
        position:relative;
        width:700px;
        height: 500px;
        opacity: 0.0001;
        z-index: 2;
    }
    #decoy_website {
        position:absolute;
        top:450px;
        left:60px;
        z-index: 1;
    }
</style>
<div id="decoy_website" >Test me</div>
<iframe src="https://0a7100a004aa78f1c1e28fc00045007a.web-security-academy.net/my-account?email=hacker@attacker-website.com"></iframe>

3. Frame busting scripts

只要网站可以被陷害,点击劫持攻击就可能发生。 因此,预防技术基于限制网站的框架能力。 通过 Web 浏览器执行的常见客户端保护是使用 frame busting 或 frame breaking 脚本。 这些可以通过专有浏览器 JavaScript 附加组件或扩展程序(如 NoScript)来实现。 脚本通常经过精心设计,以便执行以下部分或全部行为:

  • 检查并强制当前应用程序窗口是主窗口或顶层窗口,

  • 使所有 Frame 可见,

  • 防止点击不可见的 Frame,

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

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

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

4. 点击劫持和 DOM XSS 攻击结合

XSS 漏洞与 iframe 目标 URL 结合,以便用户单机按钮或链接,从而执行 DOM XSS 攻击

5. 多步点击劫持

攻击者对目标网站输入的操纵可能需要采取多项行动。例如,攻击者可能想要诱骗用户从零售网站购买商品,因此需要在下订单之前将商品添加到购物篮中。攻击者可以使用多个分区或 iframe 来实施这些操作。从攻击者的角度来看,此类攻击需要相当精确和谨慎,才能有效和隐蔽

6. 点击劫持3.0 触屏劫持

2010年9月,安全专家公布智能手机上的触屏劫持攻击。

一次触屏操作,可能会对应以下几个事件:

touchstart 手指触摸屏幕时发生
touchend 手指离开屏幕时发生
touchmove 手指滑动时发生
touchcancel 系统可取消touch事件

通过讲一个不可见的iframe覆盖到当前网页上,可以劫持用户的触屏操作。

而且手机上的屏幕空间有限,手机浏览器为了节约空间,甚至隐藏了地址栏,因此手机的视觉欺骗可能会更加容易实行。

防御

点击劫持是一种浏览器端行为,其成功与否取决于浏览器的攻击以及是否符合现行的网络标准和最佳实践。服务器端防止点击劫持是通过限定和传达对组件的使用约束来提供的,然而,保护的实施取决于浏览器的合规性和这些约束的执行

点击劫持是一种视觉上的欺骗,针对传统的点击攻击,一般时通过禁止跨域的iframe来规范的。

1. frame busting

我们可以利用JavaScript,禁止iframe嵌套

if (top.location != location) {
	top.location = self.location;
}

但是这种frame busting也存在一些缺陷。由于他是用于JavaScript写的,控制能力不是特别强,是有办法绕过的。

斯坦福大学总结了一篇关于"攻击frame busting",详细讲述了各种绕过frame busting的方法

2. X-Frame-Options

X-FRAME-OPTIONS是微软提出的一个http头,专门用来防御利用iframe嵌套的点击劫持攻击。并且在IE8、Firefox3.6、Chrome4以上的版本均能很好的支持。

它有三个可选值:

  • DENY 拒绝任何域加载

  • SAMEORIGIN 允许同源域下加载

  • ALLOW-FROM origin 可以定义允许frame加载的页面地址

Content-Security-Policy: policy

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

推荐的点击劫持保护是将该frame-ancestors指令合并到应用程序的内容安全策略中。该frame-ancestors 'none'指令在行为上类似于 X-Frame-Optionsdeny指令。该frame-ancestors 'self'指令大致等同于 X-Frame-Optionssameorigin指令。以下 CSP 仅将相同域的帧列入白名单:

Content-Security-Policy: frame-ancestors 'self';

或者,可以将框架限制为命名站点:

Content-Security-Policy: frame-ancestors normal-website.com;

配合

点击劫持相对于XSS与CSRF来说,因为需要诱使用户与页面产生交互行为,因此实施攻击的成本较高,但攻击者讲此漏洞利用在钓鱼、欺诈和流氓广告等方面。

点击劫持 & CSRF

点击劫持结合CRSF:通常的CRSF攻击由于同源策略、token等的原因,会攻击失败,但是点击劫持本就是在iframe中调用原网页,服务器会认为是用户在正确的页面做出了这些操作,可以通过点击劫持,去控制用户做那些csrf做不了的操作。

点击劫持 & XSS

点击劫持结合XSS: 反射性xss漏洞触发时会在页面url中存在恶意xss代码,目前谷歌浏览器等都会进行拦截或警告,但是如果利用点击劫持,控制用户做出点击触发js代码的操作,就不会触发浏览器的安全策略,将一个原本可能无关紧要的漏洞变的具备威胁。

参考

上一页WAF 绕过下一页CSRF

最后更新于2年前

这有帮助吗?

3. Content Security Policy ()

Content Security Policy () 是一种检测和预防机制,可缓解 XSS 和点击劫持等攻击。CSP 通常在 Web 服务器中实现为以下形式的返回标头:

🖥️
靶场
链接
CSP
CSP
portswigger 学院
WEB 安全基础篇--点击劫持