在非标准端口上强制 SSL 模式
在此步骤中,我们将探讨如何“强制”Nikto 在任何端口上使用 SSL,即使是通常处理未加密流量的端口。这对于识别可能在非标准端口(如 8080)上运行 HTTPS 的配置错误的服务器非常有用。
首先,我们需要停止现有服务器,并在端口 8080 上启动一个新的服务器。
## Stop the previous server
pkill -f "python3 /home/labex/project/https_server/server.py"
## Create a new server configuration for port 8080
cat << EOF > /home/labex/project/https_server/server_8080.py
import http.server
import ssl
import os
os.chdir(os.path.dirname(os.path.abspath(__file__)))
server_address = ('0.0.0.0', 8080)
httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket,
server_side=True,
certfile='cert.pem',
keyfile='key.pem',
ssl_version=ssl.PROTOCOL_TLS)
httpd.serve_forever()
EOF
## Start the new server in the background and wait a moment
python3 /home/labex/project/https_server/server_8080.py &> /dev/null &
sleep 3
现在,我们的安全服务器正在端口 8080 上运行。如果没有 -ssl 标志,Nikto 会假定这是一个标准的 HTTP 端口。通过包含 -ssl,我们强制它启动一个 TLS 握手。
对端口 8080 运行扫描:
nikto -h localhost -p 8080 -ssl
输出将与之前的扫描类似,确认 Nikto 已成功使用 SSL/TLS 连接到非标准端口并执行了其测试。
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: localhost
+ Target Port: 8080
+ SSL Info: Self-signed certificate.
...
这证实了你能够使用 Nikto 扫描任何任意端口上的 SSL/TLS 服务。