Nikto
Nikto是一款开源网站服务器扫描器,使用Perl开发,可以对服务器进行全面扫描,包括6400多个潜在危险的文件/cgi(通用网关接口(Common Gateway Interface)),废话不多说,直接上命令:
基本测试:
最基本的Nikto扫描仅需要将主机作为目标,默认为80端口,主机可以是ip或主机名,利用
-h(-host)选项指定:
nikto -h 192.168.56.120 #借用之前渗透项目里的ip
指定端口,使用-p(-port) 例如:扫描TCP端口443
nikto -h 192.168.56.120 -p 443
也可以用完整的url:
nikto -h http://192.168.56.120:443/
无需指定端口 443 可以是 SSL,因为 Nikto 将首先测试常规 HTTP,如果失败,则将测试 HTTPS。如果确定它是 SSL 服务器,则指定 -s(-ssl) 将加快测试速度。
nikto -h 192.168.56.120 -p 443 -ssl
多端口测试:
Nikto 可以在同一扫描会话中扫描多个端口。可以在 -p(-port)选项中指定端口列表。端口可以指定为范围(即 80-90),也可以指定为逗号分隔的列表(即 80、139、8080)。这将扫描端口 80、139 和 443 上的主机。
nikto -h 192.168.56.120 -p 80,139,443
多主机测试:
Nikto 支持通过主机名或 IP 的文本文件扫描同一会话中的多台主机。可以给出文件名,而不是 -h(-host)选项的主机名或 IP 。主机文件必须格式化为每行一台主机,端口号位于每行的末尾。端口可以通过冒号或逗号与主机端口和其他端口分开。如果未指定端口,则假定端口为 80。
文件:
192.168.56.4:80
http://192.168.56.5:45/
192.168.56.6
也可和nmap联立:nmap -p80 192.168.56.1/24 -oG-| nikto -h-
使用代理
要在niktl.conf文件中设置PROXY变量,使用 - useproxy 选项执行 Nikto。所有连接将通过配置文件中指定的 HTTP 代理进行中继。
nikto -h ip -p 80 -useproxy
要在命令行上设置代理,用-useproxy选项,并设置代理为参数:
nikto -h ip -useproxy http://ip:3128/
命令所有选项
以下是所有 Nikto 命令行选项和说明。通过使用 - h(-help)选项运行 Nikto,可以获得此文本的简短版本。
-ask
询问是否提交更新:是(询问每个 - 默认值),否(不询问,仅发送),自动(不询问,仅发送)。
-Cgidirs
扫描这些 CGI 目录。特殊词 “none” 或 “ all” 可分别用于扫描所有 CGI 目录或不扫描。可以指定 CGI 目录的文字值,例如 “ /cgi-test/”(必须包含尾部斜杠)。如果未指定此选项,将测试 nikto.conf 中列出的所有 CGI 目录。
-config
指定要使用的代替配置文件,而不是安装目录中的 nikto.conf 文件。
-dbcheck
检查扫描数据库中的语法错误。
-Display
控制 Nikto 显示的输出。有关这些选项的详细信息,请参见第 5 章。使用参考数字或字母指定类型。可以使用多个:
1 - 显示重定向
2 - 显示收到的 Cookie
3 - 显示所有 200 / OK 响应
4 - 显示需要身份验证的 URL
D - 调试输出
E - 显示所有 HTTP 错误
P - 打印进度到 STDOUT
V - 详细输出
-evasion
指定要使用的 LibWhisker 编码 / 规避技术(有关这些的详细信息,请参阅 LibWhisker 文档)。请注意,它们实际上不太可能绕过现代 IDS 系统,但可能用于其他目的。使用参考数字指定类型,可以使用多个:
1 - 随机 URI 编码(非 UTF8)
2 - 目录自参考(/./)
3 - 过早的 URL 结尾
4 - 前端的长随机字符串
5 - 伪参数
6-TAB 作为请求分隔符
7 - 更改网址的大小写
8 - 使用 Windows 目录分隔符(\)
A - 使用回车符(0x0d)作为请求分隔符
B - 使用二进制值 0x0b 作为请求间隔符
-findonly
仅发现 HTTP(S)端口,不执行安全扫描。这将尝试使用 HTTP 或 HTTPS 连接,并报告服务器标头。请注意,从 2.1.4 版开始,-findonly 已被弃用,只需设置’-Plugins“@@ NONE”’,它将覆盖 - Plugins 的任何命令行或配置文件设置。
-Format
以这种格式保存用 - o(-output)选项指定的输出文件。如果未指定,则默认值将从 - output 选项中指定的文件扩展名中获取。有效格式为:
csv - 逗号分隔的列表
htm-HTML 报告
msf - 记录到 Metasploit
txt - 文本报告
xml-XML 报告
-host
目标主机。可以是主机的 IP 地址,主机名或文本文件。单引号(-)可以用于标准输入。也可以解析 nmap -oG 样式输出
-Help
显示扩展的帮助信息。
-id 用于主机基本主机身份验证的 ID 和密码。格式为 “id:password”。
-IgnoreCode 忽略这些 HTTP 代码作为否定响应(始终)。格式为 “302,301”。
-list-plugins 将列出 Nikto 可以针对目标运行的所有插件,然后不执行扫描的情况下退出。可以使用该 -Plugins 选项针对会话进行调整。
输出格式为:
Plugin name
full name - description
Written by author, Copyright (C) copyright
-maxtime
每个主机的最大执行时间,以秒为单位。接受分钟和小时,使所有这些都是一个小时:3600s,60m,1h
-mutate
指定 mutate 技术。mutate 会导致 Nikto 组合测试或尝试猜测值。这些技术可能导致针对目标启动大量测试。使用参考数字指定类型,可以使用多个:
1 - 使用所有根目录测试所有文件
2 - 猜密码文件名
3 - 通过 Apache 枚举用户名(/〜用户类型请求)
4 - 通过 cgiwrap 枚举用户名(/cgi-bin/cgiwrap /〜用户类型请求)
5 - 尝试暴力破解子域名,假设主机名是父域名
6 - 尝试从提供的词典文件中猜测目录名称
-mutate-options 提供有关 mutate 的其他信息,例如字典文件
-nolookup 不要在 IP 地址上执行名称查找。
-nocache 禁用响应缓存
-nointeractive 禁用互动功能
-nossl 不要使用 SSL 连接到服务器。
-no404
禁用 404(找不到文件)检查。这将减少对 Web 服务器的请求总数,在通过慢速链接或嵌入式设备检查服务器时可能更可取。这通常会导致发现更多的误报。
-output
将输出写入指定的文件。使用的格式将从文件扩展名中获取。可以使用 - Format 选项来覆盖它(例如,以不同的扩展名写入文本文件。现有文件将附加新信息。)
可以为输出文件名指定一个点(。),在这种情况下,将根据要测试的目标自动生成文件名。请注意,使用 - Format 选项是必需的。该方案是:
nikto_HOSTNAME_PORT_TIMESTAMP.FORMAT
对于 “-format msf”,输出选项具有特殊含义。它应包含 Metasploit RPC 服务的密码和位置。例如,它可能看起来像:’-o msf:< password >@http://localhost:55553/RPC2'
-Plugins 选择将在指定目标上运行的插件。应提供以分号分隔的列表,其中列出了插件的名称。可以使用 - list-plugins 查找名称。
有两个特殊条目:@@ ALL,它指定所有插件都应运行,而 @@ NONE,它指定所有插件均不应运行。默认值为 @@ DEFAULT
-port 目标 TCP 端口。要在同一主机上测试多个端口,请在 - p(-port)选项中指定端口列表。端口可以指定为范围(即 80-90),也可以指定为逗号分隔的列表(即 80、88、90)。如果未指定,则使用端口 80。
-Pause 每次测试之间延迟的秒数(整数或浮点数)。
-root 将指定的值附加在每个请求的开头。这对于测试所有文件都位于某个目录下的应用程序或 Web 服务器很有用。
-ssl 仅在指定的端口上测试 SSL。使用此选项将大大加快对 HTTPS 端口的请求,否则 HTTP 请求将必须先超时。
-Save 将调查结果的请求 / 响应保存到此目录。文件是纯文本,将包含原始请求 / 响应以及每个文件的 JSON 字符串。用一个 “。” 为每个目标自动生成目录名称。可以使用附带的 replay.pl 脚本来重放这些保存的项目,该脚本可以通过代理路由项目。
-timeout 等待超时之前等待的秒数。默认超时为 10 秒。
-Tuning 调整选项将控制 Nikto 针对目标进行的测试。默认情况下,将执行所有测试。如果指定了任何选项,则将仅执行这些测试。如果使用 “x” 选项,它将颠倒逻辑并仅排除那些测试。使用参考数字或字母指定类型,可以使用多个:
0 - 文件上传
1 - 感性趣的文件 / 在日志中可见
2 - 配置错误 / 默认文件
3 - 信息披露
4 - 注入(XSS / Script / HTML)
5 - 远程文件检索 - 内部 Web 根
6 - 拒绝服务
7 - 远程文件检索 - 服务器范围
8 - 命令执行 / 远程 Shell
9-SQL 注入
a - 身份验证绕过
b - 软件识别
c - 远程数据源包含
x - 反向调整选项(即,包括所有除指定的选项)
给定的字符串将从左到右进行解析,任何 x 字符都将应用于该字符右侧的所有字符。
-Userdbs 加载用户定义的数据库而不是标准数据库。用户定义的数据库遵循与标准文件相同的语法,但是前缀为 “u”,例如 “ udb_tests”
all - 禁用所有标准数据库并仅加载用户数据库
测试 - 禁用 db_tests 并加载 udb_tests。所有其他数据库均已正常加载。
-until 运行直到指定的时间或持续时间,然后暂停。
持续时间以小时,分钟或秒为单位,例如:1h,60m,3600s
像 “mm dd hh:mm:ss” 之类的时间(mm,dd,ss 可选):12 1 22:30:00
-update 直接从 cirt.net 更新插件和数据库。
-useproxy 使用配置文件中定义的 HTTP 代理。代理也可以直接设置为参数。
-Version 显示 Nikto 软件,插件和数据库版本。
-vhost 指定要发送到目标的主机头。
平时基本测试的操作就足以应付很多事情了,对于其他要求可以在命令所有选项中进行查找拼接到命令里即可!