Wmap本身不是一个独立的漏洞扫描器,而是作为Metasploit的一个模块,结合Web漏洞和Web服务相关的模块协同工作,完成目标服务器的扫描任务。跟前面几个不同的是,它的扫描结果不会自动生成报告,而是直接存入Metasploit的数据库。
这篇文章,我们将讨论如何在Metasploit的终端命令行中,使用Wmap扫描靶机应用的漏洞并查看扫描结果。
实践-准备
在运行 Metasploit 终端前,我们需要先启动用于存储扫描结果的数据库服务:
root@kali:~# service postgresql start
如果是第一次使用,可能需要初始化并启动数据库:
msfdb init
msfdb start
实践-操作
- 启动命令行终端,运行 Metasploit 控制台:
root@kali:~# msfconsole
- 进入控制台后,加载Wmap模块:
msf > load wmap
- 向Wmap中添加一个扫描站点:
msf > wmap_sites -a http://192.168.150.143/WackoPicko/
- 查看已添加的站点:
msf > wmap_sites -l
- 根据已添加站点的ID,设置带扫描的目标站点:
msf > wmap_targets -d 0
- 检查已待扫描的目标主机:
msf > wmap_targets -l
- 现在执行测试:
msf > wmap_run -e
- 扫描完成后,使用Metasploit命令检查漏洞记录:
msf > vulns
msf > wmap_vulns -l
总结
Wmap借助于Metasploit的模块扫描目标应用和主机的漏洞。它从Metasploit的数据库和模块中获取目标主机和应用的信息并将扫描结果返回给数据库。这种集成方式的好处是,如果我们同时测试多个服务器的话,在Metasploit环境下,wmap能够自动获取所有Web服务器的IP地址和URL,并把这些信息放在站点集合里,当我们要执行Web评估时,只需要在集合里指定目标即可(1个或多个)。
执行wmap_run的时候,我们可以用 -m 参数配合正则表达式来指定要使用的扫描模块,例如下面这条命令会启用除包含 dos 关键字的所有模块,也就是说,不做DOS(denial of service)测试:
msf > wmap_run -m ^((?!dos).)*$
另一个有用的参数是 -p ,它允许我们通过正则表达式选取要测试的路径。例如,下面这条命令,我们会检查所有包含 login 关键字的URL:
msf > wmap_run -p ^.*(login).*$
最后,如果需要导出扫描结果,可以借助于Metasploit的数据库功能,例如,在msf终端中使用下面的命令,把整个数据库导出为XML文件:
msf > db_export -f xml /root/database.xml