介绍一个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.git
cd nikto
docker build -t sullo/nikto .
Call it without arguments to display the full help
docker run --rm sullo/nikto
Basic usage
docker run --rm sullo/nikto -h http://www.example.com
To 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.zip
cd nikto-master /program
perl nikto.pl
安装完执行时遇到SSL支持错误,那就需要安装SSL支持:
apt install libnet-ssleay-perl
Nikto命令参数
通过-h参数来查看Nikto的常用参数的说明,需要注意这里显示的不是所有的命令参数:
nikto -h
如果需要查看所有的参数说明,可以使用-H参数,或者直接通过man nikto查看。
Nikto的扫描功能都是通过插件实现,所以对Nikto具体使用了哪些插件最好了解一下,查看插件的参数是-list-plugins:
nikto -list-plugins
可以通过-V查看Nikto和所有插件的版本:
nikto -V
升级数据库和插件的参数是-update,不过2022.1版本的kali预装的Nikto自带的git版本应该有点问题,无法通过命令直接升级。如果你对新版本有强烈需求的话,可以卸载了kali自带的,然后再通过命令安装一遍。
Nikto扫描实操演示
nikto -host http://192.168.0.105
nikto -host url.txt
Nikto扫描的时候默认是扫描目标的80端口,且使用http协议,可以通过使用参数,扫描指定端口,且使用https协议:
nikto -host 180.101.49.11 -ssl -port 443
有时候我们只需要扫描网站下的某个子目录,使用-c指定扫描的目录:
nikto -host 192.168.0.105 -c /dvwa
使用-c all可以进行所有目录的暴力破解,并扫描。就是当目标有很多目录时,会比较耗费时间:
nikto -host 192.168.0.105 -c all
Nikto的ids躲避功能
现在只要有点规模的网站一般都会有ids检测系统,而Nikto也很贴心的准备了ids躲避功能,参数是-evasion,提供了10种躲避规则:
ids躲避规则
这些规则是可以混用的,并不是只能单独使用。使用前面5条躲避ids的规则扫描百度:
nikto -host www.baidu.com -evasion 12345
Nikto代理扫描
Nikto可以和其他工具(比如proxychains)配合使用,实现代理扫描的功能。Nikto设置代理的参数是-useproxy:
设置代理的参数
Nikto扫描过程中的交互参数
有些时候目标非常庞大,扫描过程耗时非常久,Nikto提供了一些扫描过程中的交互参数,用于获取一些扫描信息:
报告当前扫描状态
v 显示详细信息
d 显示调试信息
e 显示http错误信息
显示扫描进度
显示重定向信息
c 显示cookie
a 显示身份认证过程
q 退出程序
扫描下一个目标
P 暂停扫描
Nikto的扫描结果
Nikto之所以实用,是因为它可以将扫描结果按照指定形式进行输出:
支持的输出格式
以htm格式输出结果:
nikto -host 192.168.0.105 -o result.html -F htm
html格式的输出结果
注意事项
如果你要在实际工作中使用Nikto,最好去修改一下Nikto的配置文件,文件位置在/etc/nikto.conf:
浏览器标识
这个标识里带有明显的Nikto名称,目标管理员一看就知道是由菜鸟在扫他。
当目标需要进行表单验证、需要使用cookie时,可以在配置文件修改一下这行:
使用的cookie
将注解去掉,写入自己需要的cookie。
总结
Nikto一般是在渗透的前期阶段使用,对目标进行信息搜集,Nikto会搜集服务器的一些信息和一些可能存在的问题,对后期的渗透测试提供的帮助。