260

我想找出给定域的所有子域。我发现了一个提示,它告诉我使用以下选项挖掘权威名称服务器:

dig @ns1.foo.bar some_domain.com axfr

但这永远行不通。有没有人有更好的想法/方法

4

8 回答 8

151

提示(使用 axfr)仅在您查询的 NS(在您的示例中为 ns1.foo.bar)配置为允许来自您正在使用的 IP 的 AXFR 请求时才有效;这不太可能,除非您的 IP 被配置为相关域的辅助 IP。

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

于 2008-09-25T07:51:47.977 回答
123

如果您无法从 DNS 获取此信息(例如您未获得授权),那么另一种选择是使用Wolfram Alpha

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

Wolfram - 主页

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

Wolfram - 子域按钮

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

Wolfram - 更多子域按钮

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

于 2010-05-19T13:36:33.050 回答
44

您可以使用:

$ host -l domain.com

在引擎盖下,这使用了AXFR上面提到的查询。不过,您可能不被允许这样做。在这种情况下,您会收到一条transfer failed消息。

于 2011-02-18T17:27:13.083 回答
29
  1. dig somedomain.com soa
  2. dig @ns.SOA.com somedomain.com axfr
于 2010-02-25T21:34:51.237 回答
8

免费的 robotsex 工具可以让您执行此操作,但它们会让您首先输入域的 ip:

  1. 找出IP(有一个很好的ff插件可以做到这一点,但我不能发布链接因为这是我在这里的第一篇文章!)
  2. 在robotex上进行ip搜索:http ://www.robtex.com/ip/
  3. 在随后的结果页面中单击您感兴趣的域>
  4. 您将被带到一个列出所有子域 + 大量其他信息(例如邮件服务器信息)的页面
于 2010-04-14T11:29:51.223 回答
7

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

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

例如:

#nslookup

>ls domain.com

注意:因为 dig 和其他新工具不推荐使用 nslookup,所以某些版本的 nslookup 不支持“ls”,尤其是 Mac OS X 的捆绑版本。

于 2008-09-29T04:57:12.160 回答
6

在 Windowsnslookup中,命令是

ls -d somedomain.com > outfile.txt

它将子域列表存储在 outfile.txt

这些天很少有域允许这样做

于 2008-09-25T07:50:40.727 回答
4

如果 DNS 服务器配置正确,您将无法获取整个域。如果由于某种原因允许从任何主机进行区域传输,则您必须向它发送正确的数据包才能发出该请求。我怀疑这就是您包含的 dig 语句的作用。

于 2008-09-25T07:46:29.503 回答