Introducción
Nikto es un popular escáner de servidores web de código abierto que realiza pruebas exhaustivas contra servidores web para múltiples elementos, incluyendo más de 6700 archivos/programas potencialmente peligrosos, comprobaciones de versiones desactualizadas de más de 1250 servidores y problemas específicos de versión en más de 270 servidores.
Comprender cómo leer e interpretar los resultados de un escaneo de Nikto es una habilidad fundamental para cualquier persona en ciberseguridad, desde probadores de penetración hasta administradores de sistemas. La salida puede parecer críptica al principio, pero está estructurada para proporcionar información valiosa sobre la configuración de un servidor web y sus posibles debilidades de seguridad.
En este laboratorio, aprenderá a diseccionar un informe de escaneo estándar de Nikto. Para ahorrar tiempo y centrarse en la interpretación, se le ha proporcionado un archivo de resultados de escaneo pregenerado. Analizará este archivo para identificar información del objetivo, diferenciar entre hallazgos, comprender las referencias a vulnerabilidades y revisar el resumen final.
Localizar la sección de resumen de información del objetivo
En este paso, examinará el principio del informe de Nikto para identificar información básica sobre el objetivo escaneado. Esta sección es crucial ya que confirma qué se probó y el software básico del servidor detectado.
Se ha creado un archivo de informe de ejemplo llamado nikto_scan_results.txt en su directorio ~/project. Utilice el comando cat para mostrar su contenido en la terminal.
cat ~/project/nikto_scan_results.txt
Observe las primeras líneas de la salida. Este bloque inicial proporciona un resumen del objetivo.
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP: 172.17.0.2
+ Target Hostname: labex-server
+ Target Port: 80
+ Start Time: 2023-10-27 10:30:00 (GMT0)
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
Aquí se explica qué significan estas líneas:
Target IP: La dirección IP del servidor que fue escaneado.Target Hostname: El nombre de host del servidor.Target Port: El puerto TCP en el que se está ejecutando el servicio web (generalmente 80 para HTTP o 443 para HTTPS).Server: El software del servidor y su versión, tal como se informa en la cabecera HTTPServer. En este caso, es Apache versión 2.4.52 ejecutándose en Ubuntu.
Identificar hallazgos informativos y referencias OSVDB
En este paso, aprenderá a identificar hallazgos informativos, que se marcan con un símbolo +. Estos no siempre son vulnerabilidades directas, sino que proporcionan contexto útil sobre la configuración del servidor.
Muchos hallazgos en Nikto están asociados con un ID de OSVDB (Open Source Vulnerability Database). Aunque el proyecto OSVDB ya no está activo, estos IDs aún pueden ser útiles como referencia histórica y para buscar detalles sobre un problema específico.
Usemos el comando grep para filtrar el informe y mostrar solo las líneas que representan hallazgos. En la salida de Nikto, estas líneas comienzan con un +.
grep "^\+" ~/project/nikto_scan_results.txt
Verá una lista de todos los hallazgos del escaneo.
+ Target IP: 172.17.0.2
+ Target Hostname: labex-server
+ Target Port: 80
+ Start Time: 2023-10-27 10:30:00 (GMT0)
+ Server: Apache/2.4.52 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
+ Uncommon header 'x-powered-by' found, with contents: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS
+ OSVDB-3233: /icons/README: The Apache web server is configured to return a valid response to a request for /icons/README.
+ /index.php: PHP is installed.
+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...
+ 8123 requests: 0 error(s) and 11 item(s) reported on remote host
+ End Time: 2023-10-27 10:38:20 (GMT0) (500 seconds)
+ 1 host(s) tested
Observe la línea + OSVDB-3233: /icons/README: .... Esto indica un hallazgo informativo (ID 3233) relacionado con un archivo README accesible públicamente en el directorio /icons/, lo cual es común en servidores Apache.
Diferenciar entre vulnerabilidades de bajo y alto riesgo
En este paso, aprenderá a distinguir entre hallazgos que representan un bajo riesgo y aquellos que podrían ser de mayor preocupación. Nikto no asigna un nivel de severidad; depende de usted, el analista, interpretar los resultados basándose en el contexto.
Los hallazgos de bajo riesgo suelen estar relacionados con las mejores prácticas de seguridad que no se implementan. Por ejemplo:
+ The anti-clickjacking X-Frame-Options header is not present.
Esta es una cabecera de seguridad faltante. Si bien es una buena práctica tenerla, su ausencia por sí sola generalmente no conduce a un compromiso directo.
Los hallazgos de mayor riesgo a menudo apuntan a la divulgación de información o a una configuración errónea que podría ser explotada. Por ejemplo:
+ /admin/: Directory indexing found.
Esto es más grave. La indexación de directorios permite a un atacante ver todos los archivos y subdirectorios en el directorio /admin/, revelando potencialmente archivos sensibles, la estructura de la aplicación o archivos de respaldo.
Usemos grep para aislar este hallazgo de mayor riesgo del informe.
grep "Directory indexing" ~/project/nikto_scan_results.txt
Este comando le mostrará todas las instancias donde se descubrió la indexación de directorios.
+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
Ver estos resultados debería impulsar a un analista a investigar estos directorios de inmediato para determinar si se expone información sensible.
Comprender el significado de los hallazgos de directorios CGI
En este paso, se centrará en los hallazgos relacionados con los directorios CGI. CGI (Common Gateway Interface) es un protocolo estándar que permite a los servidores web ejecutar programas externos, como scripts. Estos directorios son un objetivo común para los atacantes porque a menudo contienen archivos ejecutables que pueden tener vulnerabilidades.
Nikto verifica específicamente directorios CGI comunes como /cgi-bin/. Encontrar un directorio de este tipo y los scripts dentro de él es un evento significativo.
Usemos grep para encontrar todas las líneas en el informe que mencionan /cgi-bin/.
grep "/cgi-bin/" ~/project/nikto_scan_results.txt
La salida muestra dos hallazgos relacionados con este directorio.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...
La primera línea confirma que el directorio /cgi-bin/ tiene habilitada la indexación de directorios, lo cual es un hallazgo de alto riesgo como se discutió en el paso anterior. La segunda línea indica que Nikto encontró un script test.cgi. Los scripts de prueba a menudo son dejados por los desarrolladores y a veces pueden tener vulnerabilidades o divulgar información sobre el entorno del servidor. Un analista marcaría esto para una investigación manual.
Revisar las estadísticas del resumen al final del escaneo
En este paso final, examinará la sección de resumen al final del informe de Nikto. Esta sección proporciona una visión general rápida de la ejecución y el alcance del escaneo.
Para ver fácilmente las últimas líneas del archivo, puede usar el comando tail. Veamos las últimas 10 líneas del informe.
tail -n 10 ~/project/nikto_scan_results.txt
Esto mostrará el final del informe, que incluye las estadísticas del resumen.
+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...
+ 8123 requests: 0 error(s) and 11 item(s) reported on remote host
+ End Time: 2023-10-27 10:38:20 (GMT0) (500 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
Aquí hay un desglose de las líneas clave del resumen:
8123 requests: 0 error(s) and 11 item(s) reported...: Esto le indica que Nikto envió 8.123 solicitudes HTTP al servidor, no encontró errores y halló 11 elementos de interés.End Time: Esto muestra la marca de tiempo cuando se completó el escaneo y la duración total.1 host(s) tested: Esto confirma que el escaneo se realizó contra un único objetivo.
Este resumen es útil para comprender la escala del escaneo y obtener un recuento general de los hallazgos.
Resumen
En este laboratorio, ha aprendido las habilidades esenciales para interpretar un informe de escaneo estándar de Nikto. Ha practicado un enfoque sistemático para analizar la salida, comenzando por la información básica del objetivo y pasando a hallazgos más detallados.
Ha aprendido a:
- Identificar la IP, el puerto y el banner del software del servidor de destino.
- Reconocer hallazgos informativos y la importancia de las referencias OSVDB.
- Diferenciar entre hallazgos de bajo riesgo (como encabezados faltantes) y hallazgos de mayor riesgo (como la indexación de directorios).
- Comprender la importancia de los descubrimientos de directorios CGI.
- Revisar el resumen al final del escaneo para obtener una visión general.
Este proceso de análisis estructurado es clave para convertir la salida bruta del escáner en inteligencia procesable para asegurar aplicaciones web.


