回归最本质的信息安全

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

2017年7月18日发布

31,649
1
5

导语:众所周知,雅虎是一个国际性的大公司,所以它一定有很多很多子域名,以及其中很多都会进行重定向,那么面对这么多的子域名我们应该从哪着手呢?

介绍

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

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

1.png

半自动搜索

我相信在这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实例的测试。

1500298047683869.png

1500298067355712.png

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

1500298077565105.png

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

1500298101940253.png

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

1500298123547992.png

总结

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

本文翻译自:https://medium.com/@woj_ciech/how-to-find-internal-subdomains-yql-yahoo-and-bug-bounty-d7730b374d77,如若转载,请注明来源于嘶吼: http://www.4hou.com/vulnerable/6713.html

点赞 5
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

鲁班七号

鲁班七号

这个人很懒,什么也没留下

发私信

发表评论

    程白凡
    程白凡 2017-07-18 17:56

    现在雅虎不仅仅是个门户网站,同时也是扫描子域工具的测试站了….
    感谢雅虎给我们了这么一个靶站(棒读)