nikto 是一款用来发现 web 应用程序漏洞的一个工具,扫描的内容大概包括服务器软件的版本,比较版本是否为最新,现版本和最新版的差以及这个版本可能存在的漏洞。会搜索一些存在隐患的文件,例如测试文件,或者是网站备份文件等。也会去扫描服务器的配置漏洞,有没有默认配置,或配置不当的问题。然后就是网站上的一些常见的漏洞了,例如 top10 那种。
nikto 在 kali 中可以直接使用,首先可以通过 h 参数来查看 nikto 的参数说明,这里需要注意的是 h 只能查看部分常用的参数,一些参数以及更详细的说明可以通过 man 手册查看。
nikto 是通过各个插件进行扫描的,这些插件可以通过 - list-plugins 来查看,查询结果如下:
nikto 可以通过 - Version 参数来确定其版本以及每个插件的版本,确保 nikto 是最新版,如果不是,可通过 update 参数来进行数据库更新和插件的更新,Version 的首字母 V 是大写,执行如下:
版本是 2.1.6,然后可以在官网查看最近版本,可以进行 update 进行更新:
当确定 nikto 版本为最新了,就可以开始对目标进行扫描,参数是 host,host 后可跟 ip 地址,也可跟域名 url 的形式,示例如下:
扫描结果就是简介部分大体介绍的内容,更详细的其实就是 - list-plugins 那些插件的执行内容。以上是 http 形式,默认扫描是 80 端口,如果要扫描 https 的,可通过 port 来指定端口 443,另外一般都会跟上 ssl 参数,来检查 ssl 一些常见的问题,示例如下:
nikto 除了可以单个扫描目标外,也支持多个扫描,多个不同的地址可以通过写入到文本文件中,然后 host 直接跟文件即可。nikto 也支持和 nmap 一块使用,例如以下示例:
nmap 中 oG 参数是获取扫描在线的 ip,管道前面的 - 代表其命令执行后的结果,这里就是在线的 ip。管道后的 - 代表接收前面的结果,这里就是 nmap 扫出来的 ip。
在扫描一个目标时,如果怕目标的一些防护设备检测到自己,暴露了自己的 ip,则可以使用代理的方式来扫描,nikto 支持设置代理,参数是 - useproxy,这个参数就无法通过 h 来查看,需要在 man 手册中才可以看到。
也可以用 proxychains 来运行 nikto,也可以配置 nikto 的配置文件,来指定代理,以后的 nikto 运行就会默认使用 nikto 中配置的代理。
以上就是 nikto 的基本用法,在扫描一个网站时,经常碰到的其实是登录功能,nikto 默认没有设置登录的用户名和密码的参数,但在配置文件中可以配置其 cookie,这样在扫描一个网站,需要身份验证时,cookie 可用,则相当于是登录的状态。配置文件在 / etc/nikto.conf 下,找到 STATIC-COOKIE,设置即可,示例如下:
格式就是 cookie 名加值,多个之间用分号分隔。
除此之外,nikto 命令行扫描和其他的一些图形化扫描软件还有个地方就是查看记录,扫描进度,暂停等一些操作,像 awvs,appscan 都可以看到其进度和一些详细的信息并暂停等,nikto 命令行的话也提供了一些操作,在 nikto 执行的过程中可以通过一些按键来执行,其参数如下:
例如,执行过程中按 d 键就会开启 debug 模式,命令行会输出执行过程中具体的测试代码,其中也可以看到配置文件中设置的 cookie,如下图:
需要关闭调试模式的话,再按一次 d 即可。
nikto 在扫描过程中也可以使用其 ids 躲避规则,参数是 - evasion,nikto 提供了八种躲避规则,通过 man 手册可查看详细信息,如下图:
1,随机的 url 编码。2,只选择路径。3,提前结束 url。4,优先考虑长随机字符串。5,参数欺骗。6,使用 tab 作为命令分隔符。7,使用变化的 url。8,使用 windows 路径分隔符。
使用方法直接 evasion 后跟序号即可,示例如下:
以上使用了 ids 躲避规则的第 123456 条。
nikto 和 awvs,appscan 类似,一般在渗透的前期阶段信息搜集,可以使用 nikto,nikto 会搜集服务器的一些信息和一些可能存在的问题,对后期的渗透测试会有很大的帮助。
公众号推荐:aFa攻防实验室
分享关于信息搜集、Web安全、内网安全、代码审计、红蓝对抗、Java、Python等方面的东西。