由此,国际化域名也应运而生.
国际化域名(英语:Internationalized Domain Name,缩写:IDN)又称特殊字符域名,是指部分或完全使用特殊的文字或字母组成的互联网域名,包括法语、阿拉伯语、中文、斯拉夫语、泰米尔语、希伯来语或拉丁字母等非英文字母,这些文字经多字节万国码编译而成。在域名系统中,国际化域名使用Punycode转写并以美国信息交换标准代码(ASCII)字符串储存。
虽说中文域名也已存在了十余年,但是它在中国互联网中却很少亮相.
一些公司,教育机构所使用的中文域名:
百度贴吧: 贴吧.公司
天津大学: 天津大学.cn
除了中文域名外,还有诸如 .公司
这类中文顶级域名可供注册.
而目前绝大部分的主流浏览器(Safari,chrome,Firefox等)也早已支持IDN.
cURL的提示信息:
Input domain encoded as 'UTF-8'
cURL对域名做了如下转换:
贴吧。公司
=> xn--4qrp14k.xn--55qx5d
想知道以上的转换是如何做到的,就不得不谈一下Punycode了.
Punycode(译为:域名代码)是一种表示Unicode码和ASCII码的有限的字符集。例如:“münchen”(德国慕尼黑)会被编码为“mnchen-3ya”。
Punycode的目的是在于国际化域名标签(IDNA)的框架中,使这些(多语言)的域名可以编码为ASCII。编码语法在文档RFC3492中规定。
Punycode is a simple and efficient transfer encoding syntax designed
for use with Internationalized Domain Names in Applications (IDNA).
It uniquely and reversibly transforms a Unicode string into an ASCII
string. ASCII characters in the Unicode string are represented
literally, and non-ASCII characters are represented by ASCII
characters that are allowed in host name labels (letters, digits, and
hyphens). This document defines a general algorithm called
Bootstring that allows a string of basic code points to uniquely
represent any string of code points drawn from a larger set.
Punycode is an instance of Bootstring that uses particular parameter
values specified by this document, appropriate for IDNA.
说白了,Punycode就是将Unicode字符串转成ASCII范围的字符,而xn--
就是声明后面的字符串全部是Unicode编码.
由于全世界语种繁多,各式各样的文字涌入了域名难免会发生一些问题.
许多Unicode字符,代表的是国际化的域名中的希腊、斯拉夫、亚美尼亚字母,看起来跟拉丁字母一样,但是计算机却会把他们处理成完全不一样网的网址。
比如说,斯拉夫字母“а”(U+0430)和拉丁字母“a”(U+0041)会被浏览器处理成不同的字符,但是在地址栏当中都显示为“a”。
由于之前的部分浏览器,并不是在地址栏上显示Punycode编码后的域名,这样一来,就会产生很多令人混淆不清的域名.
这个漏洞影响没有多长时间,在漏洞披露出来后没多久,受影响的厂商都在后来的更新把漏洞给修复了.
因为海量的Unicode字符,也经常出现一些比较有意思的事情.
mramydnei师傅14年在乌云上就发过一篇文章短域名进化史,详细讲解了利用Punycode低成本缩短域名至两位字符甚至一位字符.(ps:现在利用这个方法,长度至少三位)
例如:
㎉.㎝
例如柠檬师傅曾经用过的一个check ssrf脚本。
ps:柠檬师傅的文章13th_cuit_game_wp_web300_ssrf
我们将其中的URL改成我们上面的URL:
然后运行:
成功bypass了SSRF限制。
除了字符串,域名中的符号也是会参与到Punycode编码转换.
由于punycode不仅仅转换中文,所以除了简体中文的句号,还有台港澳的置中。
,日本的半角中式句号。
(U+FF61),台港澳置中﹒
(U+FE52),中国大陆标准为靠左下.
等...
除了句号外,常见的符号还有破折号也有此类特性...
至此,我只是非常浅显的分析,没有认真寻找漏洞案例。文章主旨也在于抛砖引玉...但是这个点的威力肯定不仅限于文中几点。希望有想法的读者可以跟我一起讨论讨论,扩充攻击面 Orz...
rfc3492
Punycode
国际化域名
短域名进化史
xn-on-domain-what-it-means
Internationalized_domain_name
This Phishing Attack is Almost Impossible to Detect On Chrome, Firefox and Opera