引言
Nikto 是一个流行的开源 Web 服务器扫描器,它针对 Web 服务器进行全面的测试,检查超过 6700 个潜在危险文件/程序,检查超过 1250 个服务器的过时版本,以及超过 270 个服务器的版本特定问题。
虽然 Nikto 可以通过命令行选项进行配置,但其默认行为由一个中央配置文件 nikto.conf 控制。了解如何修改此文件可以让你永久更改默认设置,为特定环境定制扫描,并简化你的工作流程。
在本实验中,你将学习如何定位、读取和修改 nikto.conf 文件。你将更改默认的 USERAGENT 字符串,运行扫描以观察新行为,然后恢复原始配置。
定位主 nikto.conf 配置文件
在此步骤中,你将定位 Nikto 的主配置文件 nikto.conf。此文件包含 Nikto 运行时使用的所有默认设置。在基于 Debian 的系统(如你正在使用的 Ubuntu 环境)中,此文件通常位于 /etc/ 目录。
我们可以使用 find 命令在整个文件系统中搜索该文件。当你对配置文件的确切位置不确定时,这是一种有用的技术。
在你的终端中执行以下命令来查找 nikto.conf。我们将标准错误 (2) 重定向到 /dev/null 以隐藏任何“Permission denied”消息,从而获得更干净的输出。
sudo find / -name nikto.conf 2> /dev/null
你应该会看到配置文件路径作为输出:
/etc/nikto.conf
现在你已经知道了它的位置,可以继续检查其内容了。
打开文件并查看 RFIURL 等默认设置
在此步骤中,你将使用文本编辑器打开 nikto.conf 文件并检查其一些默认设置。我们将使用 nano 编辑器,这是一个简单的命令行文本编辑器。由于该文件位于 /etc/ 目录下且归 root 用户所有,因此你必须使用 sudo 来打开它。
使用 nano 打开文件:
sudo nano /etc/nikto.conf
进入 nano 后,你可以使用箭头键进行导航。该文件有大量的注释(以 # 开头的行),用于解释每个变量的作用。
让我们搜索一个特定的变量 RFIURL。此变量定义了 Nikto 在进行远程文件包含 (RFI) 测试时使用的外部文件。按 Ctrl + W 打开搜索提示,输入 RFIURL,然后按 Enter。你应该会看到类似以下的行:
## The URL to a remote file to use for RFI tests.
RFIURL=http://cirt.net/rfi.txt
接下来,让我们找到 USERAGENT 变量,我们将在下一步修改它。再次按 Ctrl + W,输入 USERAGENT,然后按 Enter。你将找到 Nikto 用来向 Web 服务器标识自己的默认 User-Agent 字符串。
## The User-Agent to send to the web server
USERAGENT=Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 (Nikto/2.5.0)
在查看完这些设置后,你可以按 Ctrl + X 退出 nano 而不保存任何更改。
修改静态变量,如默认的 USERAGENT
现在,你将修改配置文件中的一个静态变量。我们将把默认的 USERAGENT 改为一个自定义值。更改 User-Agent 可以用于模拟特定的浏览器、规避简单的检测,或者在日志记录中标记你的扫描流量。
首先,再次使用 nano 打开文件:
sudo nano /etc/nikto.conf
使用 Ctrl + W 再次搜索 USERAGENT。找到该行后,为了保留原始值作为参考,最好将其注释掉。在原始 USERAGENT 行的开头添加一个 # 来注释掉它。然后,在其正下方的空行上,添加你的自定义 User-Agent。
你的更改应该如下所示:
## The User-Agent to send to the web server
#USERAGENT=Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 (Nikto/2.5.0)
USERAGENT=MyCustomScanner/1.0
现在,保存更改并退出编辑器。按 Ctrl + O 写入更改,按 Enter 确认文件名,然后按 Ctrl + X 退出 nano。你的配置现已更新。
运行扫描以观察新的默认行为
在此步骤中,你将针对本地 Web 服务器运行 Nikto 扫描,以查看你新设置的 USERAGENT 是否生效。此实验的设置脚本已安装并启动了一个 Apache Web 服务器,该服务器运行在 127.0.0.1 (localhost) 上。
当 Nikto 开始扫描时,它会打印出正在使用的配置摘要。这使我们无需检查 Web 服务器日志即可验证我们的更改。
使用 -h (host) 选项针对本地服务器运行基本扫描:
nikto -h http://127.0.0.1
观察 Nikto 的初始输出。它将列出目标信息以及扫描所使用的一些选项。你应该会在输出中看到你自定义的 User-Agent。
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 80
+ Start Time: 2023-10-27 10:30:00 (GMT0)
---------------------------------------------------------------------------
- Server: Apache/2.4.52 (Ubuntu)
+ User-Agent: MyCustomScanner/1.0
- The anti-clickjacking X-Frame-Options header is not present.
... (scan results will continue) ...
正如你在 + User-Agent: MyCustomScanner/1.0 这行中看到的,Nikto 现在正在使用你在 nikto.conf 中设置的默认值。你可以随时按 Ctrl + C 来停止扫描。
恢复更改至原始配置
最后,将配置恢复到原始状态是一个好习惯,尤其是在共享环境中。在此步骤中,你将撤销对 nikto.conf 所做的更改。
在实验设置期间,原始配置文件的备份已自动创建在 /etc/nikto.conf.bak。你可以使用 mv (move) 命令将备份恢复,用原始文件覆盖你修改过的文件。
执行以下命令来恢复备份:
sudo mv /etc/nikto.conf.bak /etc/nikto.conf
此命令将 /etc/nikto.conf.bak 移动到 /etc/nikto.conf,从而有效地替换了你编辑过的文件。
为了确认文件已恢复,你可以使用 grep 命令再次检查 USERAGENT 行。
grep USERAGENT /etc/nikto.conf
输出现在应该显示原始的、未注释的 User-Agent 行,确认你的更改已成功撤销。
USERAGENT=Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0 (Nikto/2.5.0)
总结
在此实验中,你成功地通过编辑 Nikto 的核心配置文件 nikto.conf 来自定义了其行为。这是为满足渗透测试或安全审计的特定需求而定制安全工具的一项基本技能。
你已学会如何:
- 在 Linux 系统上定位
nikto.conf文件。 - 阅读并理解配置变量的用途。
- 修改静态变量,特别是
USERAGENT。 - 通过运行扫描并观察输出来验证配置更改。
- 从备份文件恢复原始配置。
掌握配置文件更改能力,可以让你为工具设置持久的自定义默认值,从而使你的安全测试更有效率和效果。


