### 系统概述
nikto 是一款开源的 Web 服务器漏洞扫描工具,能够对 Web 服务器进行全面的测试,检测危险文件、过时的服务器软件以及其他潜在的安全漏洞。nikto 包含各种检测插件和核心功能,每个插件都用于检测特定的漏洞或执行特定的任务。
### 系统架构
nikto 的架构是模块化的,由一个核心引擎和多个插件组成。核心引擎负责处理基本的扫描逻辑、HTTP 请求和响应处理,而插件则负责特定的漏洞检查和测试。插件可以动态加载,并根据用户需求启用或禁用。
### 核心功能
1. **HTTP 请求处理**:核心引擎管理 HTTP 请求和响应,包括处理 SSL/TLS 连接、代理以及各种 HTTP 方法(如 GET、POST 等)。
2. **插件管理**:插件根据其定义的钩子(如 `scan`、`recon`、`postfetch`)加载和执行。每个插件可以定义自己的初始化和执行逻辑。
3. **漏洞检测**:插件执行特定的漏洞检查,例如目录遍历、XSS、过时软件等。它们使用预定义的模式、字典和自定义逻辑来识别潜在问题。
4. **报告生成**:Nikto 可以生成多种格式的报告(如 CSV、JSON、HTML),并包含检测到的漏洞的详细信息。
### 关键插件及其功能
1. **Apache 用户枚举 (`nikto_apacheusers.plugin`)**:该插件通过请求 `/~username` 路径来检查 Apache 服务器是否允许用户枚举。它可以执行暴力破解或基于字典的枚举。
2. **Apache Expect XSS (`nikto_apache_expect_xss.plugin`)**:该插件通过发送恶意的 `Expect` 头来测试 Apache 服务器是否存在跨站脚本(XSS)漏洞。
3. **认证测试 (`nikto_auth.plugin`)**:该插件尝试猜测认证领域并测试默认凭据。
4. **CGI 目录枚举 (`nikto_cgi.plugin`)**:该插件枚举常见的 CGI 目录并检查可访问的 CGI 脚本。
5. **客户端访问策略 (`nikto_clientaccesspolicy.plugin`)**:该插件检查不安全的 `clientaccesspolicy.xml` 和 `crossdomain.xml` 文件,这些文件可能允许跨域访问。
6. **内容搜索 (`nikto_content_search.plugin`)**:该插件在 HTTP 响应中搜索已知的不良字符串或模式,以指示漏洞。
7. **Cookie 安全性 (`nikto_cookies.plugin`)**:该插件检查不安全的 Cookie 设置,例如缺少 `Secure` 或 `HttpOnly` 标志。
8. **字典攻击 (`nikto_dictionary_attack.plugin`)**:该插件执行基于字典的攻击,以查找 Web 服务器上的常见文件和目录。
9. **Docker 注册表检测 (`nikto_docker_registry.plugin`)**:该插件通过检查特定的 API 端点来检测 Docker 注册表的存在。
### 核心代码片段
- **HTTP 请求处理**:
my ($res, $content, $error, $request, $response) = nfetch($mark, $path, "GET", "", "", "", "dishwasher");
- **漏洞检测**:
if (($response->{'server'} =~ 'PST10 WebServer') && ($content =~ 'root:\$1\$.*')) {
add_vulnerability($mark, "$path: 站点似乎存在洗碗机目录遍历漏洞。", 999951, CVE-2017-7240, "GET", $path, $request, $response);
}
- **插件初始化**:
sub nikto_docker_registry_init {
my $id = { name => "docker_registry", full_name => "docker_registry", ... };
return $id;
}
### 应用场景
nikto 广泛应用于渗透测试和安全评估中,用于识别 Web 服务器中的漏洞。它在以下场景中特别有用:
- **安全审计**:自动化检测常见的 Web 服务器漏洞。
- **合规性测试**:确保 Web 服务器符合安全最佳实践。
- **事件响应**:在安全漏洞发生后快速识别潜在的攻击向量。
### 结论
nikto 是一款功能强大的 Web 服务器漏洞扫描工具,其模块化架构允许通过插件轻松扩展。其全面的测试集和灵活的报表功能使其成为安全专业人员的宝贵工具。
github链接地址:https://github.com/sullo/nikto.git