vlambda博客
学习文章列表

介绍一个web漏洞扫描工具:Nikto

简介

Nikto是一个开源的WEB扫描评估软件,可以对Web服务器进行多项安全测试,能在230多种服务器上扫描出 2600多种有潜在危险的文件、CGI及其他问题。Nikto可以扫描指定主机的WEB类型、主机名、指定目录、特定CGI漏洞、返回主机允许的http模式等。

Kikto基于perl语言开发的,其特点是扫描全面,速度快。

下载地址

官方网站:https://cirt.net/Nikto2

Github源码:https://github.com/sullo/nikto

安装

比较推荐的是通过kali使用Nikto,Kali默认已经安装Nikto。

如果你的kali中没有预装Nikto,可以通过这个命令安装:

apt install nikto

如果你使用的不是kali,是其他的Linux版本,推荐你通过容器安装,安装步骤如下:

git clone https://github.com/sullo/nikto.gitcd niktodocker build -t sullo/nikto .Call it without arguments to display the full helpdocker run --rm sullo/niktoBasic usagedocker run --rm sullo/nikto -h http://www.example.comTo save the report in a specific format, mount /tmp as a volume:docker run --rm -v $(pwd):/tmp sullo/nikto -h http://www.example.com -o /tmp/out.json

还有一种通过源码安装的方式,前面说过Nikto是基于perl语言开发的。所以如果你想要通过源码安装Nikto,本地必须具备perl的环境。具体步骤如下:

/ 下载源码wget https://github.com/sullo/nikto/archive/master.zip/ 解压、安装unzip master.zipcd nikto-master /programperl nikto.pl

安装完执行时遇到SSL支持错误,那就需要安装SSL支持:

apt install libnet-ssleay-perl

Nikto命令参数

通过-h参数来查看Nikto的常用参数的说明,需要注意这里显示的不是所有的命令参数:

nikto -h

如果需要查看所有的参数说明,可以使用-H参数,或者直接通过man nikto查看。

Nikto的扫描功能都是通过插件实现,所以对Nikto具体使用了哪些插件最好了解一下,查看插件的参数是-list-plugins:

介绍一个web漏洞扫描工具:Niktonikto -list-plugins

可以通过-V查看Nikto和所有插件的版本:

介绍一个web漏洞扫描工具:Niktonikto -V

升级数据库和插件的参数是-update,不过2022.1版本的kali预装的Nikto自带的git版本应该有点问题,无法通过命令直接升级。如果你对新版本有强烈需求的话,可以卸载了kali自带的,然后再通过命令安装一遍。

Nikto扫描实操演示

介绍一个web漏洞扫描工具:Niktonikto -host http://192.168.0.105

介绍一个web漏洞扫描工具:Niktonikto -host url.txt

Nikto扫描的时候默认是扫描目标的80端口,且使用http协议,可以通过使用参数,扫描指定端口,且使用https协议:

介绍一个web漏洞扫描工具:Niktonikto -host 180.101.49.11 -ssl -port 443

有时候我们只需要扫描网站下的某个子目录,使用-c指定扫描的目录:

介绍一个web漏洞扫描工具:Niktonikto -host 192.168.0.105 -c /dvwa

使用-c all可以进行所有目录的暴力破解,并扫描。就是当目标有很多目录时,会比较耗费时间:

介绍一个web漏洞扫描工具:Niktonikto -host 192.168.0.105 -c all

Nikto的ids躲避功能

现在只要有点规模的网站一般都会有ids检测系统,而Nikto也很贴心的准备了ids躲避功能,参数是-evasion,提供了10种躲避规则:

介绍一个web漏洞扫描工具:Niktoids躲避规则

这些规则是可以混用的,并不是只能单独使用。使用前面5条躲避ids的规则扫描百度:

介绍一个web漏洞扫描工具:Niktonikto -host www.baidu.com -evasion 12345

Nikto代理扫描

Nikto可以和其他工具(比如proxychains)配合使用,实现代理扫描的功能。Nikto设置代理的参数是-useproxy:

介绍一个web漏洞扫描工具:Nikto设置代理的参数

Nikto扫描过程中的交互参数

有些时候目标非常庞大,扫描过程耗时非常久,Nikto提供了一些扫描过程中的交互参数,用于获取一些扫描信息:

空格 报告当前扫描状态v 显示详细信息d 显示调试信息e 显示http错误信息p             显示扫描进度r              显示重定向信息c 显示cookiea 显示身份认证过程q            退出程序N            扫描下一个目标P 暂停扫描

Nikto的扫描结果

Nikto之所以实用,是因为它可以将扫描结果按照指定形式进行输出:

介绍一个web漏洞扫描工具:Nikto支持的输出格式

以htm格式输出结果:

介绍一个web漏洞扫描工具:Niktonikto -host 192.168.0.105 -o result.html -F htm

介绍一个web漏洞扫描工具:Niktohtml格式的输出结果

注意事项

如果你要在实际工作中使用Nikto,最好去修改一下Nikto的配置文件,文件位置在/etc/nikto.conf:

浏览器标识

这个标识里带有明显的Nikto名称,目标管理员一看就知道是由菜鸟在扫他。

当目标需要进行表单验证、需要使用cookie时,可以在配置文件修改一下这行:

使用的cookie

将注解去掉,写入自己需要的cookie。

总结

Nikto一般是在渗透的前期阶段使用,对目标进行信息搜集,Nikto会搜集服务器的一些信息和一些可能存在的问题,对后期的渗透测试提供的帮助。