扫描工具-Nikto

我们对目标网站进行了足够的信息收集之后,我们就要进行主动扫描,从而获得更多信息,而web上的扫描工具一般支持两种模式。

  • 代理截断模式
  • 直接扫描模式

手动扫描

基本上有一个浏览器就够了,人工去点击目标的每一个页面,去提交表单。

自动扫面

基于字典的对其中存在的页面去爬取。

扫描工具只是为了我们更好的渗透测试

Web Penetration Testing with Kali Linux

对于初学者来说,是一本不错的工具书。缺点是设计方面比较广泛,所以每项内容不是很详细。其中一些工具在kali 2.0中也已经移除。

Nikto

是Perl语言开发的开源web安全扫描器,有些扫描器只会扫描网络层和操作系统层的漏洞,大部分web扫描器不会包含这些功能,他们的重点是web应用程序代码的扫描。

  • 这个工具会扫描web服务器使用的软件版本,并比较可能有哪些漏洞
  • 会搜索存在安全隐患文件,比如有些安全员的将网络备份的压缩文件放在web目录下,这样通过扫描器就可以扫描,并得到这个文件,进行代码审计,带来更大的危险。
  • 还会扫描服务器配置漏洞。
  • 常见的WEB Application层面的安全隐患也会检查,例如sql注入和xss。
  • 所有的扫描器的主要任务首先是找到所有页面,早期都是通过访问返回信息来判断的,有很多服务器不遵循RFC标准,有些页面不存在也可能会返回200响应码,扫描器就会误判,后来扫描器就开始判断文件内容,通过关键字判断页面是否存在,这样其实还是存在弊端,一方面是无法将所有关键字概括全面,另一方面是不同后缀名的文件返回信息不同,比如html与jsp,所以也不好判断,而nikto会将提前所有可能存在的扩展名进行数据库存储,然后以随机文件名去提交从而判断返回信息,去除时间信息后的内容取MD5值。
  • -no404 这个命令就不会进行上述尝试,而是直接对服务器去请求判断。准确性有所下降,但是速度会有所提升。

使用

我们在终端中直接输入

nikto

会将主要的参数进行显示,如果我们想看到更多的参数和帮助信息,我们可以使用:

man nikto

升级数据库及插件

nikto -update

这个命令会使nikto从cirt.net升级它的数据库及插件。建议大家使用前进行升级。但是受国内运营商的限制,大部分无法进行升级。会提示:

ERROR (302): Unable to get cirt.net/nikto/UPDATES/2.1.6/versions.txt

我们可以通过:

https://cirt.net/nikto/UPDATES/

去下载最新及历史版本进行使用

查看所有插件

我们可以使用

nikto -list-plugins

查看插件类型

其中要提及的是shellshock这是一个破壳漏洞,也可以用nikto去扫描。

基本扫描命令

nikto -host 目标

我们这里用靶机进行演示:

nikto -host 192.168.238.136

这里我们可以看到已经开始扫描了,当然一般我们使用的时候有两种方式进行扫描:

URL方式

nikto -host http://192.168.238.136/dvwa/

这里我们就可以对dvwa这个确定的目录进行扫描

IP+端口形式

nikto -host 192.168.238.136 -port 80,443

可以跟多个端口,之间用都好隔开。

https

它还可以对ssl,也就是https进行扫描,同样可以用上述两种方式进行扫描。

nikto -host www.baidu.com -port 443 -ssl

默认是443端口

我们可以看到端口,域名,IP,证书,以及证书加密方式和颁发者信息。

同时扫描多个目标

我们可以将多个目标写到一个txt文本中,进行扫描。

nikto -host host.txt

文本格式:

192.168.1.1:80
https://192.168.1.1:8443
192.168.1.1

默认是80端口

与nmap结合

nmap -p80 192.168.238.0/24 -oG - | nikto -host -

即先用nmap 扫描在192.168.238.0/24这个网段中开启80端口的目标,输出以后用管道传输到nikto再进行详细的扫描。

如果提示中有No CGI的时候我们可以加上-C all参数去进行详细的目录扫描。

使用代理

nikto -host http://192.168.238.136/dvwa -useproxy http://localhost:8087

vhost

虚拟主机,我们一个ip上可以部署多个网站都,可以用ip区分,也可以用端口区分,还有一种方式是通过主机头区分,这里ip也相同,端口也不同,类似于一个是www.abc.com,另一个是www.bcd.com我们就可以把-host改成-vhost,后面只能用域名方式了。