![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=1739281219-RhA57gZ3uxrSGv3QBKOoZCxWbR6nXkS6-0-a1d921bdf22288fe72fd52420260721b)
从上面的源代码中,我们可以看到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=1739281219-IUGJTHdTDPJAqlqpTGGCJpqbVGVL6oCq-0-526830621bb954af675539affd69c273)
图 5-4
1)从上面的URL下载TLD文件并删除以#开头的第一行,如图5-5所示。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-5.jpg?sign=1739281219-ACh9jL0ny60U3luqukTVMnGWevfIW6C5-0-62ffa686bf3bdfce2fe0a86bf68af734)
图 5-5
2)在修改Metasploit模块之前,请使用以下命令备份enum_dns.rb文件:
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/102a1.jpg?sign=1739281219-CWRoMFydi1DlCjw95F0I3Mt7DENjOFan-0-c5905a6c4a8c7e4578433f0854bd1a9a)
请注意,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=1739281219-cMnG9LRK2w4QHCh6Q6R7B9eYcyqglVBZ-0-3a3306a12d2d97d4efc38e2008817a26)
图 5-6
4)让我们在代码中添加一个注册条目,以便将我们的TLD词表提供给Metasploit模块,如图5-7所示。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-7.jpg?sign=1739281219-DowI3erfbvwwmfptmXMrSKp8m3kd5Xux-0-cd00184e9b96a7a146a9f072abfb521b)
图 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=1739281219-fd6zXLjw6XNIpd62WbIY9ZHhpP5ZVPzV-0-6d012b82c9a434245a8c2ac7625fc8df)
图 5-8
6)现在让我们看一下get_tld()函数,如图5-9所示。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-9.jpg?sign=1739281219-m66xHEfGIYYJfvWuU4iaztGw9wPk0k0Q-0-a9419d3346af43e66199eb7d64981562)
图 5-9
7)现在,我们通过添加一部分代码加载最新的TLD词表并将其保存在tlds []数组中,如图5-10所示。请注意,从图5-9中可以看出我们已经清空了TLD数组。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-10.jpg?sign=1739281219-Q88vpGhmMI8d7LAIERr9YI5O1Out9GMF-0-c35f09830a3ff7d75bd7a6e3f326fdf2)
图 5-10
表5-1说明了图5-10中使用的函数和代码结构。
表 5-1
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5b1.jpg?sign=1739281219-wogshbDDJq37w4opP8aN2ZagZipNgPgZ-0-c8a4c9a09fb1a205cf622f0a70133615)
8)保存文件并在msfconsole中执行reload命令来重新加载框架中的模块,如图5-11所示。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-11.jpg?sign=1739281219-6l7s7BFvTLbKJpMODYw81J6YleAkF0NE-0-c96d545bf8315c7e16767a56145806b6)
图 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=1739281219-y9WM4uRoqpiK7EYY3lSl1fmJoiWgaCwr-0-da9cbcee54096690ef153d6cd60a92e1)
图 5-12
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-13.jpg?sign=1739281219-Imfjnuyb46K5Fo0aBTErEVMYTrSkt9Xt-0-83945f2de1e5d1df5089c19bcb7a369b)
图 5-13