我想找出给定域的所有子域。我发现了一个提示,它告诉我使用以下选项挖掘权威名称服务器:
dig @ns1.foo.bar some_domain.com axfr
但这永远行不通。有没有人有更好的想法/方法
我想找出给定域的所有子域。我发现了一个提示,它告诉我使用以下选项挖掘权威名称服务器:
dig @ns1.foo.bar some_domain.com axfr
但这永远行不通。有没有人有更好的想法/方法
提示(使用 axfr)仅在您查询的 NS(在您的示例中为 ns1.foo.bar)配置为允许来自您正在使用的 IP 的 AXFR 请求时才有效;这不太可能,除非您的 IP 被配置为相关域的辅助 IP。
基本上,如果您不允许使用 axfr,则没有简单的方法可以做到这一点。这是故意的,因此唯一的解决方法是通过蛮力(即dig a.some_domain.com
,dig b.some_domain.com
...),我不建议这样做,因为它可能被视为拒绝服务攻击。
如果您无法从 DNS 获取此信息(例如您未获得授权),那么另一种选择是使用Wolfram Alpha。
stackexchange.com
)您将能够在那里看到子域列表。虽然我怀疑它没有显示所有子域。
您可以使用:
$ host -l domain.com
在引擎盖下,这使用了AXFR
上面提到的查询。不过,您可能不被允许这样做。在这种情况下,您会收到一条transfer failed
消息。
dig somedomain.com soa
dig @ns.SOA.com somedomain.com axfr
免费的 robotsex 工具可以让您执行此操作,但它们会让您首先输入域的 ip:
只有当您连接到域的 DNS 服务器并且为您的 IP 地址启用了 AXFR 时,您才能执行此操作。这是辅助系统用来从主系统加载区域的机制。在过去,这不受限制,但出于安全考虑,大多数主名称服务器都有一个白名单:辅助名称服务器 + 几个特殊系统。
如果您使用的名称服务器允许这样做,那么您可以使用 dig 或 nslookup。
例如:
#nslookup
>ls domain.com
注意:因为 dig 和其他新工具不推荐使用 nslookup,所以某些版本的 nslookup 不支持“ls”,尤其是 Mac OS X 的捆绑版本。
在 Windowsnslookup
中,命令是
ls -d somedomain.com > outfile.txt
它将子域列表存储在 outfile.txt
这些天很少有域允许这样做
如果 DNS 服务器配置正确,您将无法获取整个域。如果由于某种原因允许从任何主机进行区域传输,则您必须向它发送正确的数据包才能发出该请求。我怀疑这就是您包含的 dig 语句的作用。