![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=1739303402-fvRBLYryJ5NGziDLhqgeddW48UXOdV1l-0-2a42c8874518c3a3de13b0a011231d1d)
从上面的源代码中,我们可以看到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=1739303402-Vj625PuwhCC2xTuACD2uj7d764kizvMb-0-abc4db530d02254aa4029bf5f13c95c2)
图 5-4
1)从上面的URL下载TLD文件并删除以#开头的第一行,如图5-5所示。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-5.jpg?sign=1739303402-6Pi7TcCFvPNeoKgIxBtnJy7u909U207k-0-68e4ec96aeb2152cf83316319a1c84af)
图 5-5
2)在修改Metasploit模块之前,请使用以下命令备份enum_dns.rb文件:
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/102a1.jpg?sign=1739303402-w9jIFvwW6je9a2nlhWmT4QKDOLFEpUHO-0-3d52025e8a0542080ca0e2925feed946)
请注意,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=1739303402-iZshwepADAwDKUWgkw5BlNeevDA6uaSs-0-8ff4603e9502772a8ac7975e78383e6e)
图 5-6
4)让我们在代码中添加一个注册条目,以便将我们的TLD词表提供给Metasploit模块,如图5-7所示。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-7.jpg?sign=1739303402-HpxW6Pn3TSjZI2sk6tCPRl5ibAsv9REK-0-ecbaf96c64af8cc15a593f4a4fde4a81)
图 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=1739303402-Cpb8BwihwXB6wUS31bJNc1W1GqBvm36b-0-528e96a45e56f611fa95b7a8527a7e4b)
图 5-8
6)现在让我们看一下get_tld()函数,如图5-9所示。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-9.jpg?sign=1739303402-FacnxW4ilwGizeiiZmAdIht9TexFOyDO-0-a48b9fef9d81660df17b2f093292ab06)
图 5-9
7)现在,我们通过添加一部分代码加载最新的TLD词表并将其保存在tlds []数组中,如图5-10所示。请注意,从图5-9中可以看出我们已经清空了TLD数组。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-10.jpg?sign=1739303402-1egEkL1Hy2lSqnQhysXF8ymJ8tiBlk3L-0-ba5747ae66ee552604749ba20cd14087)
图 5-10
表5-1说明了图5-10中使用的函数和代码结构。
表 5-1
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5b1.jpg?sign=1739303402-WMlZVQftO2mwHui9v3xLVtYODJ65CuGK-0-8f2a81e21e62320a9443b629ca3c687b)
8)保存文件并在msfconsole中执行reload命令来重新加载框架中的模块,如图5-11所示。
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-11.jpg?sign=1739303402-sHax6T6eF851SEYA2LXm1AomhAOiR8SL-0-c42b5ece028fe3621120aec2702ec765)
图 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=1739303402-e5NAQRuuhCS98HMNweusLJ8I6L7Tul8t-0-b361030080ac0bb5e25f639d3080e965)
图 5-12
![](https://epubservercos.yuewen.com/7A610E/20784354908784906/epubprivate/OEBPS/Images/5-13.jpg?sign=1739303402-0KV1xpHcxblh9amYpASAH1XPJyx9PmVk-0-f4c84dfc3a384060e8330d21f1c7537d)
图 5-13