![Web渗透测试实战:基于Metasploit 5.0](https://wfqqreader-1252317822.image.myqcloud.com/cover/213/39888213/b_39888213.jpg)
5.2.2 更进一步——编辑源代码
Metasploit中的enum_dns模块有些过时了(我们可以通过检查TLD词表获取更新)。因此,需要定制该模块来满足我们的需求。方法是为enum_dns提供顶级域(TLD)词表,然后对条目进行解析和检查以查询记录。通过查看辅助模块的源代码,我们可以发现其查找的TLD列表中没有最近被启用的TLD,如图5-4所示。
我们可以查看modules/auxiliary/gather/enum.dns.rb文件的第302行,也可以通过以下链接在线访问该文件:
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/100a1.jpg?sign=1738945085-sZCkL0mpQzk7PyQla8GibzsTyXYXZsJP-0-1fc6b48387f487b948a984fdcbf24f01)
从上面的源代码中,我们可以看到TLD存储在tlds []数组中。我们通过执行以下步骤编辑代码实现TLD更新。你可以从互联网号码分配机构(Internet Assigned Numbers Authority,IANA)的网站找到最新的TLD列表,网址为http://data.iana.org/TLD/tlds-alpha-by-domain.txt。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-4.jpg?sign=1738945085-fy7yV04ML1nN3VUCayyYq3TqcassdA0f-0-b68ea7b5adce4b9cae43ea87c49cb152)
图 5-4
1)从上面的URL下载TLD文件并删除以#开头的第一行,如图5-5所示。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-5.jpg?sign=1738945085-Vqnti3mRs3y4GqJBJCHHNlU9ArtbPX6K-0-b6f2d00d453beaf1703be0079ad3c329)
图 5-5
2)在修改Metasploit模块之前,请使用以下命令备份enum_dns.rb文件:
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/102a1.jpg?sign=1738945085-YAnFQtV1suf6Mg1tlQzg2tv2kDSgaXdA-0-7ccc78c62e0e0c95fd9957d537e2d324)
请注意,Metasploit框架安装在/usr/local/share目录下。在本例中,我们将文件命名为enum_dns.rb.bak。
3)现在,使用任何一种文本编辑器打开enum_dns.rb文件,然后转到第29行,如图5-6所示。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-6.jpg?sign=1738945085-706IPwQTxPHxUDmzNdKLlacttZeHaMvY-0-fbfa650e9b3080564ee9d50cc08bfc83)
图 5-6
4)让我们在代码中添加一个注册条目,以便将我们的TLD词表提供给Metasploit模块,如图5-7所示。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-7.jpg?sign=1738945085-EMslfjNZAZAdJMJjV6PP7OJUpHr9WAR5-0-487c614d6e16c3c1aa0863db3c842123)
图 5-7
在此模块中,TLD枚举默认是被禁用的。从图5-7中可以看到,ENUM_TLD选项设置为TRUE时,可以通过将TLD替换为IANA TLD列表(旧列表)实现TLD扩展。
5)我们通过搜索ENUM_TLD字符串来查找function(),当TLD枚举选项处于启用状态时,将调用该函数。
从图5-8中可以看到,如果ENUM_TLD设置为TRUE,则将调用get_tld()函数。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-8.jpg?sign=1738945085-R9dqEI2sVltmzekpi0ct6aJQsanCzL31-0-a0e97f55bb42819dc69244f6abb23a50)
图 5-8
6)现在让我们看一下get_tld()函数,如图5-9所示。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-9.jpg?sign=1738945085-2SRGVyBSWATpRJZ4FkdeCdS0a1t27rBl-0-e2e9cf53b31a881a1480341ffe24ce82)
图 5-9
7)现在,我们通过添加一部分代码加载最新的TLD词表并将其保存在tlds []数组中,如图5-10所示。请注意,从图5-9中可以看出我们已经清空了TLD数组。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-10.jpg?sign=1738945085-1Vv1hgmlsmGurnGwSaRV3R8bkRe8dS7X-0-ddff6d670ce4cad25ab485ce9ee11b9e)
图 5-10
表5-1说明了图5-10中使用的函数和代码结构。
表 5-1
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5b1.jpg?sign=1738945085-pFpPZZOqBSFrmDBL7lZMkYR2Xqh5dmZy-0-b7c3eda66d250c498980889802ddead1)
8)保存文件并在msfconsole中执行reload命令来重新加载框架中的模块,如图5-11所示。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-11.jpg?sign=1738945085-DAjo5xU1AOKHsm2Ip9OfBG5SfFg0pAPX-0-abddd222d99effcefb94b7e0b5d61df9)
图 5-11
9)使用定制的enum_dns模块并执行show options命令,如图5-12所示。
正如我们在图5-12中所看到的,我们已经把域设置为google.com来查找Google的TLD。我们还把TLD_WORDLIST选项设置为更新后的TLD词表。让我们执行它,如图5-13所示。
现在,更新后的Metasploit模块向我们显示了提供给模块本身的TLD。在下一节中,我们将使用Metasploit枚举文件和目录。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-12.jpg?sign=1738945085-IXoBei7ICchbDqqnLCy0CBFS6HfShNc2-0-87a3c06a80cc7b2ca0f0d67723dd355e)
图 5-12
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-13.jpg?sign=1738945085-c4PsT2WmJYYffbyF6PkpIXIlyhVAghLG-0-35b8b327d45d4c5e705b426fce8391de)
图 5-13