我如何得到一个域的所有子域的列表?

我想求出给定定义域的所有子定义域。我发现了一个提示,告诉我挖掘权威的Nameserver与以下选项:

dig @ns1.foo.example example.com axfr

但这从来都行不通。有没有更好的主意/方法

578423 次浏览

如果DNS服务器配置正确,您将无法获取整个域。如果出于某种原因,它允许来自任何主机的区域传输,那么您必须向它发送正确的数据包来发出该请求。我怀疑这就是你所包含的挖掘声明的作用。

在Windows nslookup中,该命令为

ls -d example.com > outfile.txt

outfile.txt中存储子域列表

现在很少有域名允许这样做

提示(使用axfr)只有当你正在查询的NS(你的例子中的ns1.foo.example)被配置为允许来自你正在使用的IP的axfr请求时才有效;这是不太可能的,除非您的IP被配置为相关域的次要IP。

基本上,如果不允许使用axfr,就没有简单的方法来做到这一点。这是故意的,所以唯一的解决方法是通过暴力破解(即dig a.example.comdig b.example.com,…),我不建议这样做,因为它可能被视为拒绝服务攻击。

只有当您连接到域的DNS服务器并且您的IP地址启用了AXFR时才能这样做。这是辅助系统用来从主系统加载区域的机制。在过去,这是没有限制的,但是出于安全考虑,大多数主名称服务器都有一个白名单:辅助名称服务器+几个特殊系统。

如果您正在使用的命名服务器允许这样做,那么您可以使用dig或nslookup。

例如:

#nslookup


>ls example.com

注意:由于nslookup在dig和其他newere工具中已弃用,一些版本的nslookup不支持"ls",最显著的是macOS X的捆绑版本。

  1. dig example.com soa
  2. dig @ns.SOA.example example.com axfr

免费的Robotex工具可以让你这样做,但他们会让你先输入域名的IP:

  1. 找到ip(有一个很好的ff插件,它可以做到这一点,但我不能张贴链接,因为这是我在这里的第一个帖子!)
  2. 在robotex上进行ip搜索:http://www.robtex.com/ip/
  3. 在接下来的结果页面中,单击您感兴趣的域名>
  4. 您将被带到一个页面,其中列出了所有子域名和其他信息,如邮件服务器信息

如果你不能从DNS获取这些信息(例如你没有被授权),那么另一种选择是使用Wolfram Alpha

  1. 在搜索框中输入域并运行搜索。(例如stackexchange.com)

Wolfram -主页

  1. 在顶部的第三部分(名为“所有stackexchange.com的Web统计数据”)单击子域

Wolfram - Subdomains button

  1. 在子域部分单击更多的

Wolfram - More subdomains button

您将能够在那里看到子域名的列表。虽然我怀疑它不显示所有子域。

你可以使用:

$ host -l example.com

Under the hood, this uses the AXFR query mentioned above. You might not be allowed to do this though. In that case, you'll get a transfer failed message.