为什么注册的域名“localtest.me”解析为127.0.0.1?

为什么注册的域名“localtest.me”解析为127.0.0.1?

我曾是阅读一篇文章关于服务器端请求伪造在那篇文章中,攻击者发现 是127.0.0.1向互联网开放的。受害者随后封锁了127.0.0.1,但由于许多其他 IP 和显然还有一些域名也解析到了 ,包括神秘的localtest.me,他得以绕过基于文本的弱过滤器。

  1. 有何特别之处localtest.me

  2. 还有其他吗?(以及如何找到它们?)


更新

我发现:http://readme.localtest.me/

显然有人为了测试目的决定以一种有趣的方式注册该域名:

它的工作原理如下。整个域名 localtest.me(以及所有通配符条目)都指向 127.0.0.1。因此,无需对主机文件进行任何更改,您就可以立即开始使用本地 URL 进行测试。

但是,我仍然不确定如何将外部域注册到本地域。这很令人困惑,因为tracert localtest.me甚至从未离开过机器。如何在低级别上处理这个问题?

然后我在这些评论中发现了更多以及其他地方:

lvh.me 
vcap.me
fuf.me - IPv4 and IPv6
ulh.us
127-0-0-1.org.uk
ratchetlocal.com
smackaho.st
42foo.com
beweb.com
yoogle.com
ortkut.com
feacebook.com

并且在相似的 问题在 Stack Overflow 上。

答案1

但是,我仍然不确定如何将外部域注册到本地域。这很令人困惑,因为 tracert localtest.me 甚至从未离开过机器。如何在低级别上处理这个问题?

没有什么可以像你想象的那样将域名“绑定”到其地址。就像电话簿一样,DNS 只是告诉你什么地址是——但它的作用就到此为止了。(你不用在电话里拨打“必胜客”;你要查找他们的电话号码,然后拨打这个号码。)

因此,当有人注册域名时,他们就获得了能力编辑这些电话簿记录。但实际上,为了将域名“指向”某个地方(比如说127.0.0.1),他们会将以下行添加到其数据库中:

localtest.me.   A   127.0.0.1

就是这样。无论谁问起localtest.me现在,都会得到这样的答案:“哦,它在127.0.0.1。”

因此,当您输入 时tracert localtest.me.,它首先向 DNS 询问相关地址;获得答案 127.0.0.1;然后表现得就像您运行了tracert 127.0.0.1一样。一点也不神奇。

还有其他的吗?(以及如何找到他们?)

此时应该清楚的是,任何域名所有者都可以毫不费力地做到这一点,因此在任何给定时间总有可能存在其他此类域名。由于 DNS 数据分布在许多系统中(有时甚至是动态生成的),您真的不能找到所有这些,甚至期望你的结果在短短几秒钟后仍然准确。

但出于安全考虑,你不需要需要找到所有这些。一些 DNS 解析器实际上已经对此类条目进行了一种过滤(称为“DNS 重新绑定保护”),它们不会查找特定问题 - 它们只查看回答。保护功能仅阻止指向任何本地地址的答案。

但是,在您询问之前,这不能在全球范围内被禁止——将域名指向私有地址仍然是 DNS 的完全合法使用方式,并且在许多网络中实际使用。

答案2

还有其他答案对此进行了更深入的探讨,但这个问题的核心很容易回答:

“但是,我仍然不确定如何将外部域名注册到本地域名。”

注册域名和分配IP地址是两件完全不同且独立的事情。

任何人可以注册任何您无需出于任何原因注册域名;您甚至可以在没有目标 IP 地址的情况下注册域名。您只需向域名注册商付款,完成虚拟“文书工作”,然后,就像变魔术一样,您就会拥有一个域名。注册域名时,您所支付的费用只是域名本身以及为域名分配 IP 地址的能力(见下文)。

但是之后分配 IP 地址该域名是一个完全不同的过程。任何人可以分配任何如果他们控制该域名,则将 IP 地址分配给该域名。域名注册商不关心或不关心您为域名分配了哪些原始地址。

域名只是一个指针,可以让生活更轻松。可以将其视为别名,这样人们就不必记住一堆数字(IPv4)或数字和字母(IPv6)。

就是这样!

但是,正如您所访问的页面所解释的那样,发生的事情并不是对世界上本地“127.0.0.1”地址的每个系统的“黑客攻击”,而是该特定系统本身的存在缺陷。

但为了进一步澄清这一点 — — 你的措辞方式也让我感到困惑 — — 当你陈述时:

我正在读一篇关于服务器端请求伪造在那篇文章中攻击者发现127.0.0.1已经对互联网开放。

我读那篇文章也一样,事情是这样的:有人使用了一个在线工具,该工具允许您将该工具指向任何 IP 地址/主机名。当他们将该工具指向时,127.0.0.1并不是 IP 地址127.0.0.1暴露在互联网上。相反,该工具本身存在一个缺陷,允许任何人通过使用来探测该工具运行的内部服务器127.0.0.1。由于这个工具显然是一个用于检测开放端口等的黑客工具,因此通过使用127.0.0.1该特定应用程序能够探测它自己的本地主机网络,并——这里的关键——将该信息传达给仅通过网络浏览器访问该工具的人。

存在的风险并不是每个人127.0.0.1都暴露在互联网上,而是一个工具一个网站允许这种情况发生。

答案3

有什么特别之处本地测试

它指向127.0.0.1(localhost)。此地址始终为本地计算机保留。

还有其他的吗?(以及如何找到他们?)

是的。Google 和 Super User 是你的朋友(正如你所发现的)。

我仍然不确定如何将外部域注册到本地 [IP]。这很令人困惑,因为tracert localtest.me甚至从未离开过机器。如何在底层处理这个问题?

你错过了最初的(外部)DNS请求。tracert显示数据包所采用的路径,但在数据包到达任何地方之前,计算机必须知道要将其发送到的 IP。需要注意的是,如果您从未访问过查找我的网站之前,会向外部解析器发出 DNS 请求,以发现它映射到 127.0.0.1。然后返回的数据在本地使用(例如用于tracert或显示 Web 内容)。请记住,DNS 可以将任何主机名映射到任何 IP - 它“不知道”IP 是否是本地的。

相关内容