Forzar el modo SSL en un puerto no estándar
En este paso, exploraremos cómo "forzar" a Nikto a usar SSL en cualquier puerto, incluso en uno que típicamente maneja tráfico no cifrado. Esto es útil para identificar servicios mal configurados que podrían estar ejecutando HTTPS en un puerto inusual, como 8080.
Primero, necesitamos detener el servidor existente e iniciar uno nuevo en el puerto 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
Ahora, nuestro servidor seguro se está ejecutando en el puerto 8080. Sin la bandera -ssl, Nikto asumiría que este es un puerto HTTP estándar. Al incluir -ssl, lo forzamos a iniciar un handshake TLS.
Ejecute el escaneo contra el puerto 8080:
nikto -h localhost -p 8080 -ssl
La salida será similar a los escaneos anteriores, confirmando que Nikto se conectó exitosamente usando SSL/TLS a un puerto no estándar y realizó sus pruebas.
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: localhost
+ Target Port: 8080
+ SSL Info: Self-signed certificate.
...
Esto confirma su capacidad para usar Nikto para escanear servicios SSL/TLS en cualquier puerto arbitrario.