Web渗透测试实战:基于Metasploit 5.0
上QQ阅读APP看书,第一时间看更新

5.2.2 更进一步——编辑源代码

Metasploit中的enum_dns模块有些过时了(我们可以通过检查TLD词表获取更新)。因此,需要定制该模块来满足我们的需求。方法是为enum_dns提供顶级域(TLD)词表,然后对条目进行解析和检查以查询记录。通过查看辅助模块的源代码,我们可以发现其查找的TLD列表中没有最近被启用的TLD,如图5-4所示。

我们可以查看modules/auxiliary/gather/enum.dns.rb文件的第302行,也可以通过以下链接在线访问该文件:

从上面的源代码中,我们可以看到TLD存储在tlds []数组中。我们通过执行以下步骤编辑代码实现TLD更新。你可以从互联网号码分配机构(Internet Assigned Numbers Authority,IANA)的网站找到最新的TLD列表,网址为http://data.iana.org/TLD/tlds-alpha-by-domain.txt

图 5-4

1)从上面的URL下载TLD文件并删除以#开头的第一行,如图5-5所示。

图 5-5

2)在修改Metasploit模块之前,请使用以下命令备份enum_dns.rb文件:

请注意,Metasploit框架安装在/usr/local/share目录下。在本例中,我们将文件命名为enum_dns.rb.bak。

3)现在,使用任何一种文本编辑器打开enum_dns.rb文件,然后转到第29行,如图5-6所示。

图 5-6

4)让我们在代码中添加一个注册条目,以便将我们的TLD词表提供给Metasploit模块,如图5-7所示。

图 5-7

在此模块中,TLD枚举默认是被禁用的。从图5-7中可以看到,ENUM_TLD选项设置为TRUE时,可以通过将TLD替换为IANA TLD列表(旧列表)实现TLD扩展。

5)我们通过搜索ENUM_TLD字符串来查找function(),当TLD枚举选项处于启用状态时,将调用该函数。

从图5-8中可以看到,如果ENUM_TLD设置为TRUE,则将调用get_tld()函数。

图 5-8

6)现在让我们看一下get_tld()函数,如图5-9所示。

图 5-9

7)现在,我们通过添加一部分代码加载最新的TLD词表并将其保存在tlds []数组中,如图5-10所示。请注意,从图5-9中可以看出我们已经清空了TLD数组。

图 5-10

表5-1说明了图5-10中使用的函数和代码结构。

表 5-1

8)保存文件并在msfconsole中执行reload命令来重新加载框架中的模块,如图5-11所示。

图 5-11

9)使用定制的enum_dns模块并执行show options命令,如图5-12所示。

正如我们在图5-12中所看到的,我们已经把域设置为google.com来查找Google的TLD。我们还把TLD_WORDLIST选项设置为更新后的TLD词表。让我们执行它,如图5-13所示。

现在,更新后的Metasploit模块向我们显示了提供给模块本身的TLD。在下一节中,我们将使用Metasploit枚举文件和目录。

图 5-12

图 5-13