如何高效的进行子域名收集与筛选?

简介: 本文讲的是如何高效的进行子域名收集与筛选?,当我在寻找Hackerone上的新目标时,我总是会去关注已解决报告的数量,因为这一更高的数字可能意味着你在这里能够发现漏洞的机会比在那些关闭了提交意见的程序上更为容易。正因为这个原因,所以我选择了雅虎!
本文讲的是 如何高效的进行子域名收集与筛选?

介绍

当我在寻找Hackerone上的新目标时,我总是会去关注已解决报告的数量,因为这一更高的数字可能意味着你在这里能够发现漏洞的机会比在那些关闭了提交意见的程序上更为容易。正因为这个原因,所以我选择了雅虎!

我们都知道雅虎是大型的国际公司,所以我预计其会有很多子域名,路径和重定向,但从哪里开始呢?这时候就要用到我最喜欢的枚举/强化子域名工具:Sublister(https://github.com/aboul3la/Sublist3r)和Fierce(https://github.com/davidpepper/fierce-domain-scanner)了。我希望能够通过他们找到那些被遗忘、错误配置或运行旧版本软件的子域名。最终,Subliste3r给了我9000多个子域,但我该如何检查它们呢?

如何高效的进行子域名收集与筛选?

半自动搜索

我相信在这9000个子域名中,至少会存在一个薄弱的点。因为在我看来要想记住如此大的一家公司的一切是非常困难的。当Sublist3r做了他的工作后,我打开了这一结果,并手动删除了无用的和重复的子域名,以及那些没有解决或没有响应的。当然我没有一个一个检查,但这样下来仍然还有7000个子域名。

接下来让我们试试快速扫描,我想这应该有助于整理。而为了达成这一目的,我尝试使用Nmap的输出到XML,因为它更容易解析。

nmap -sS -p80,443 -iL nmap_input.txt -oX nmap_output

来自Nmap的示例XML输出:

<hostnames>
<hostname name=”start.producersdesktop.yahoo.com” type=”user”/>
<hostname name=”proxy.publish.bf1.yahoo.com” type=”PTR”/>
</hostnames>
<ports><port protocol=”tcp” portid=”80"><state state=”closed” reason=”reset” reason_ttl=”42"/><service name=”http” method=”table” conf=”3"/></port>
</ports>
<times srtt=”148262" rttvar=”148262" to=”741310"/>
</host>

我们只能通过添加 – 打开nmap命令来扫描打开的端口。对我来说,最有用的参数是“state”和“hostname name”。我相信“hostname name”是DNS,在这种情况下,我发觉有时候有我的ISP的地址,所以我知道他们可能没有解决这一问题。在这个基础上,我们可以尝试抛出另外几百个子域。我写了一个脚本,它能够根据主机名的名称删除xml条目,并将其另存为另一个XML。

import xmltree
def removeHostname():
   for host in root.iter('host'):
        for elem in host.iter():
            if 'name' in elem.attrib and elem.attrib['name'] == 'ISP_redir_site':
                root.remove(host)tree.write('output.xml')

好的,现在我们已经有了开放80端口的所有子域名。接下来我们可以扫描nmap他们的HTML标题,并再次删除那些有些相似的标题。

雅虎有很多不同语言的网站,例如:ru.search.yahoo.com,br.search.yahoo.com,de.stars.yahoo.com等,下一步是把那些重要的子域名拒之门外。最后我整理出了约700个潜在的易受攻击的子域名。

这时候该是检查剩下的内容的时间了。我不知道如何找到其他子域之间的下一个共同点,所以我手动检查了它们。过了一段时间,我在一些子域看到了相似性和重复性,所以实际看来比我想象的容易得多。因此这样我就可以在http://yvap.query.yahoo.com/上找到开放的YQL内部控制台。而我进一步的探索也逐渐展示了在http://ygh-app.media.yahoo.com/上进行对Beaker实例的测试。

如何高效的进行子域名收集与筛选?

如何高效的进行子域名收集与筛选?

除了http://yvap.query.yahoo.com/v1/test/js/console_ajax.js之外的JavaScript代码,我找不到任何有趣的东西。虽然有不止一个内部控制台,但其他内部控制台都关闭了,至少看起来像像是如此。

如何高效的进行子域名收集与筛选?

YQL的示例查询是在https://query.yahooapis.com/v1/public/yql?q=show%20tables&diagnostics=true,所以我在其余的控制台锁定过程中也尝试了这种方法。这意味着内部控制台的主面板已关闭,但您仍然可以通过url提交查询。我列举了所有的这些,并一一进行了检查。“show tables”的命令完成了其中的大部分工作,所以我试图走得更远,但在我报告之后,证明其是可以公开访问的,甚至应该说必须是。

如何高效的进行子域名收集与筛选?

在http://ygh-app.media.yahoo.com/我发现了正在测试Beaker的网站,说实话,我其实并不一定需要处理Beaker,但经过快速的检测,我发现了另一个信息已经被披露。

如何高效的进行子域名收集与筛选?

总结

我知道这不是革命性的方法,但这样做肯定会更快,更精确,当然也会更省时,因此我仍然希望与您分享这种方法。几周前,我发现了一个名为Aquatone的工具,其中包含我所需要的一切。当然,如果您使用任何其他工具进行检测,也可以分享给我们。




原文发布时间为:2017年7月18日
本文作者:鲁班七号
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
1月前
|
数据采集 安全 网络协议
收集子域名信息(二):第三方网站查询
收集子域名信息(二):第三方网站查询
21 1
|
2月前
子域名收集 -- Findomain
子域名收集 -- Findomain
15 0
|
2月前
|
开发工具 git Python
子域名收集 -- OneForAll
子域名收集 -- OneForAll
16 0
|
2月前
|
Python
子域名收集 -- Subdomain-Takeover
子域名收集 -- Subdomain-Takeover
10 0
|
2月前
|
开发工具 git Python
子域名收集 -- Ctfr
子域名收集 -- Ctfr
11 0
|
2月前
|
开发工具 git Python
子域名收集 -- subDomainsBrute
子域名收集 -- subDomainsBrute
11 0
|
2月前
|
开发工具 git Python
子域名收集 -- Subdomain3
子域名收集 -- Subdomain3
10 0
|
2月前
|
搜索推荐 开发工具 git
子域名收集 -- theHarvester
子域名收集 -- theHarvester
13 0
|
2月前
|
开发工具 git Python
子域名收集 -- domained
子域名收集 -- domained
16 1
|
2月前
|
开发工具 Python
子域名收集 -- subcollect
子域名收集 -- subcollect
15 0