.zip 结尾的域名很危险吗?有多危险?

Google 于 2023 年 5 月 10 日全面开放了以 .zip 结尾的域名,这一举动引起了安全研究人员和社区的警惕,他们担心该通用顶级域名(gTLD,Generic top-level domains)会被用于创建足以迷惑计算机高手的恶意 URL。

2023 年 5 月 3 日,Google 宣布了包括 .zip.mov 在内的 8 个全新的通用顶级域名:

  • .dad
  • .phd
  • .prof
  • .esq
  • .foo
  • .zip
  • .mov
  • .nexus

并于 5 月 10 日通过 Google Domains 向公众开放注册。

Google Domains 是 Google 提供的一项域名注册和管理服务,支持用户搜索和注册域名

小心!含有 .zip 的恶意 URL

安全研究员 Bobby Rauch 指出(The Dangers of Google's .zip TLD),要警惕含有 .zip、Unicode 字符(特别是 U+2044、U+2215 等)以及 @ 符号的恶意 URL。这类恶意 URL 迷惑性极强,甚至能欺骗十分有经验的用户。

若点击 https://google.com@bing.com 这个 URL,实际访问的是 https://bing.com。这是因为根据 RFC 3986 Uniform Resource Identifier (URI): Generic Syntax 的规定,@ 符号之前的 google.com 应识别为用户信息,其后的 bing.com 才是主机名(域名)。我们可以借助常用的编程语言来确认这一点,如利用 PHP 的 parse_url() 函数:

php 复制代码
<?php
var_dump(parse_url("https://google.com@bing.com"));
array(3) {
  ["scheme"]=>
  string(5) "https"
  ["host"]=>
  string(8) "bing.com"
  ["user"]=>
  string(10) "google.com"
}

然而,若 @ 之前有正斜杠 /,如 https://google.com/search@bing.com,则浏览器会将 /search@bing.com 部分识别为路径,最终访问的是 https://google.com/ 下的文件 search@bing.com。由于没有这个文件,结果自然是 404。

php 复制代码
<?php
var_dump(parse_url("https://google.com/search@bing.com"));
array(3) {
  ["scheme"]=>
  string(5) "https"
  ["host"]=>
  string(10) "google.com"
  ["path"]=>
  string(16) "/search@bing.com"
}

Bobby Rauch 就是利用了上述规则,创建了一个恶意 URL,

perl 复制代码
https://github.com∕kubernetes∕kubernetes∕archive∕refs∕tags∕@v1271.zip

乍看之下,这个 URL 似乎是用于从 GitHub 上下载 v1271 这个特定版本的 Kubernetes 的链接。但实际上 parse_url() 函数的解析结果显示,真正要访问的域名却是 v1271.zip 而不是 github.com

php 复制代码
<?php
var_dump(parse_url("https://github.com∕kubernetes∕kubernetes∕archive∕refs∕tags∕@v1271.zip"));
array(3) {
  ["scheme"]=>
  string(5) "https"
  ["host"]=>
  string(9) "v1271.zip"
  ["user"]=>
  string(63) "github.com?__kubernetes?__kubernetes?__archive?__refs?__tags?__"
}

若你不小心点击了这类域名,那么恭喜你,很可能喜提一个 evil.exe(请注意动画演示中的左下角)。

仅凭肉眼可能难以分辨以下两个 URL 的区别吧:

ruby 复制代码
https://github.com∕kubernetes∕kubernetes∕archive∕refs∕tags∕
https://github.com/kubernetes/kubernetes/archive/refs/tags/

但若调整一下字体,则可以发现端倪,

恶意 URL 中的正斜杠 / 根本不是真正的 /(U+002F),

而是下面这个看起来很像 / 的 Unicode 字符:

由于恶意 URL 中并没有使用真正的 /,因此根据 RFC 3986 的规定,@ 之前的部分github.com∕kubernetes∕kubernetes∕archive∕refs∕tags∕ 尽管看似域名与路径,但实际上却是用户信息(真够长的)。

在刚刚的动画演示中,Bobby Rauch 其实还使用了另一个迷惑人的小伎俩------在电子邮件客户端上,将 @ 的字号大小更改为 1,让这个特殊字符几乎看不到,从而更隐秘地伪装了恶意 URL。

对于由以 .zip 结尾的域名带来的安全隐患,Bobby Rauch 给出的建议是,在单击 URL 之前,先将鼠标悬停在该 URL 上并检查浏览器底部显示真正要访问的 URL。

相关推荐
用户9623779544819 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954481 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star1 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954481 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
Wect2 天前
浏览器缓存机制
前端·面试·浏览器
BingoGo2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全