Escanear servidores web con Nikto

NmapNmapBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo utilizar Nikto, un escáner de servidores web de código abierto, para detectar posibles vulnerabilidades en aplicaciones web. Practicarás técnicas de escaneo en la aplicación bWAPP, diseñada intencionalmente con vulnerabilidades, mientras aprendes a interpretar eficazmente los resultados del escaneo.

El laboratorio cubre la instalación de Nikto, la configuración del objetivo, la ejecución del escaneo y el análisis de los resultados. A través de la práctica práctica, adquirirás las habilidades esenciales para realizar evaluaciones básicas de vulnerabilidades de servidores web utilizando esta herramienta de seguridad ampliamente utilizada.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") subgraph Lab Skills nmap/save_output -.-> lab-549948{{"Escanear servidores web con Nikto"}} nmap/target_specification -.-> lab-549948{{"Escanear servidores web con Nikto"}} end

Instalar Nikto

En este paso, instalarás Nikto, un escáner de servidores web de código abierto que ayuda a identificar problemas de seguridad en servidores web. Nikto comprueba la presencia de software de servidor desactualizado, archivos/CGIs peligrosos y otras vulnerabilidades comunes. Comprender estas vulnerabilidades es crucial para proteger las aplicaciones web.

Antes de comenzar, asegúrate de estar en el directorio correcto. El directorio ~/project es donde realizaremos todo el trabajo del laboratorio para mantener los archivos organizados:

cd ~/project

A continuación, necesitamos actualizar la lista de paquetes. Esto garantiza que instalaremos la última versión disponible de Nikto con todas las actualizaciones de seguridad recientes:

sudo apt update

Ahora estamos listos para instalar Nikto. La opción -y confirma automáticamente la instalación, evitándonos tener que aprobarla manualmente:

sudo apt install -y nikto

Después de que se complete la instalación, verifiquemos que haya funcionado correctamente comprobando la versión instalada. Esto confirma que Nikto está instalado correctamente y muestra la versión que utilizaremos:

nikto -Version

Deberías ver una salida similar a la siguiente:

Nikto v2.1.6

Nikto ahora está instalado correctamente en tu sistema. Aunque Nikto tiene un archivo de configuración en /etc/nikto.conf, utilizaremos la configuración predeterminada para este laboratorio introductorio. Estas configuraciones predeterminadas proporcionan un buen equilibrio entre un escaneo exhaustivo y una velocidad razonable con fines de aprendizaje.

Elegir un Servidor Objetivo

En este paso, aprenderás cómo seleccionar y verificar un servidor web objetivo para el escaneo de vulnerabilidades. Utilizaremos Nikto para escanear una aplicación web intencionalmente vulnerable llamada "bWAPP" (Buggy Web Application) que está configurada de forma segura en nuestro entorno LabEx. Esta aplicación de práctica está diseñada para pruebas de seguridad sin afectar a sistemas reales.

  1. Primero, naveguemos al directorio de trabajo correcto donde realizaremos nuestros escaneos. Esto ayuda a mantener organizados los archivos de nuestro proyecto:

    cd ~/project
  2. Antes de escanear, necesitamos confirmar que nuestro servidor web objetivo está funcionando correctamente. Utilizaremos curl con la opción -I para obtener solo las cabeceras HTTP:

    curl -I http://localhost:8000

    Una respuesta exitosa mostrará el código de estado HTTP 200 OK, lo que indica que el servidor está activo:

    HTTP/1.1 200 OK
  3. Ahora estableceremos nuestra URL objetivo como una variable de entorno. Esto facilita su referencia en nuestros escaneos posteriores:

    TARGET="http://localhost:8000"
  4. Hagamos una prueba rápida para ver la respuesta del servidor web. Utilizaremos curl para obtener el contenido de la página y mostrar solo las primeras 5 líneas:

    curl $TARGET | head -n 5

    Esto nos da una muestra del contenido HTML, confirmando que podemos conectarnos exitosamente al servidor.

  5. Recuerda esta URL objetivo, ya que la utilizaremos durante todo el proceso de escaneo. Hacer un seguimiento de tu objetivo es crucial al realizar evaluaciones de seguridad.

Realizar un Escaneo de Vulnerabilidades

En este paso, utilizarás Nikto para realizar un escaneo de vulnerabilidades en el servidor objetivo que seleccionamos en el paso anterior. Nikto es un escáner de servidores web de código abierto que prueba más de 6700 archivos/programas potencialmente peligrosos, verifica si hay versiones de servidores desactualizadas e identifica configuraciones erróneas comunes de servidores web.

Antes de comenzar el escaneo, es importante estar en el directorio correcto donde tengas permiso para ejecutar la herramienta y guardar los resultados. El comando cd cambia tu directorio de trabajo actual:

  1. Primero, asegúrate de estar en el directorio de trabajo correcto:

    cd ~/project

Ahora realizaremos un escaneo básico. La opción -h especifica el host objetivo (en este caso, nuestro servidor de prueba local). Nikto verificará automáticamente las siguientes vulnerabilidades comunes:

  • Archivos y programas predeterminados
  • Configuraciones de servidor inseguras
  • Software de servidor desactualizado
  • Posibles vulnerabilidades de inyección XSS y SQL
  1. Ejecuta un escaneo básico de Nikto en nuestro servidor objetivo (http://localhost:8000):

    nikto -h http://localhost:8000
  2. El escaneo se ejecutará y mostrará los resultados en tiempo real. Verás una salida similar a la siguiente:

    - Nikto v2.1.6
    - Target IP:          127.0.0.1
    - Target Hostname:    localhost
    - Target Port:        8000
    - Start Time:         [timestamp]

Para un examen más exhaustivo, podemos utilizar opciones de ajuste. El parámetro -Tuning te permite especificar qué pruebas se deben ejecutar. Aquí, x habilita pruebas extendidas mientras que 6 verifica la presencia de archivos comunes que podrían exponer información sensible.

  1. Para un escaneo más completo, puedes agregar estas opciones:

    nikto -h http://localhost:8000 -Tuning x 6

    Esto realiza pruebas extendidas (x) y verifica la presencia de archivos comunes (6).

  2. El escaneo puede tardar entre 1 y 2 minutos en completarse. Cuando termine, verás un resumen de los hallazgos, que incluye:

    + Server may be vulnerable to XSS
    + Retrieved x-powered-by header: PHP/7.4.3
    + OSVDB-3092: Possible sensitive directory

Cada hallazgo incluye:

  • Una descripción de la vulnerabilidad
  • El tipo de vulnerabilidad
  • Referencias relevantes (como IDs de OSVDB)
  • El componente afectado
  1. Ten en cuenta que algunos hallazgos pueden ser falsos positivos; analizaremos estos en el siguiente paso. No todos los problemas reportados son vulnerabilidades reales, por lo que la verificación manual es crucial en las pruebas de seguridad.

Revisar la Salida del Escaneo

En este paso, examinaremos detenidamente los resultados del escaneo de Nikto para entender qué vulnerabilidades se encontraron en el servidor web objetivo. Como principiante, es importante saber que Nikto organiza sus hallazgos de manera estructurada para ayudarte a identificar eficientemente los problemas de seguridad.

  1. Primero, asegúrate de estar en el directorio de trabajo correcto donde se almacenan los resultados de tu escaneo:

    cd ~/project

    Este comando cambia tu directorio actual al lugar donde Nikto guardó su archivo de salida.

  2. Analicemos las secciones principales que verás en el archivo de salida de Nikto:

    • Información del Servidor: Revela qué software de servidor web está en ejecución (como Apache o Nginx) y su número de versión.
    • Hallazgos de Vulnerabilidades: Muestra los problemas específicos de seguridad detectados por Nikto, con indicadores que muestran la gravedad de cada problema.
    • Resumen del Escaneo: Te da el total de lo que se encontró durante el escaneo.
  3. Para encontrar rápidamente las vulnerabilidades más importantes, ejecuta este comando:

    grep -E '\+|OSVDB' ~/project/nikto_scan.txt

    Esta búsqueda recorre los resultados de tu escaneo y muestra solo las líneas que contienen marcadores de vulnerabilidad (+) o referencias OSVDB (que son IDs de base de datos de vulnerabilidades).

  4. Al revisar los resultados, presta especial atención a:

    • Cualquier hallazgo etiquetado como de riesgo "ALTO" - estos son los problemas más peligrosos.
    • Versiones antiguas de software de servidor - los programas desactualizados a menudo tienen fallos de seguridad conocidos.
    • Directorios expuestos o archivos sensibles - estos no deberían ser accesibles públicamente.
    • Ataques web comunes como Cross-Site Scripting (XSS) o SQL Injection (SQLi).
  5. Así es como se verían hallazgos típicos:

    + /config.php: PHP config file found
    + OSVDB-3092: /admin/: This might be interesting

    La primera línea muestra que Nikto encontró un archivo de configuración que no debería ser público. La segunda línea hace referencia a un ID de vulnerabilidad específico de la Base de Datos de Vulnerabilidades de Código Abierto.

  6. Para obtener más detalles sobre una entrada OSVDB específica, puedes consultar la base de datos de vulnerabilidades:

    curl -s "https://vulners.com/api/v3/search/id/?id=OSVDB-3092" | jq '.data.attributes'

    Este comando obtiene información detallada sobre la vulnerabilidad OSVDB-3092 de una base de datos en línea y la formatea para su lectura.

  7. A medida que revises los resultados, anota los problemas más graves que encuentres. Usaremos estas notas en el siguiente paso cuando documentemos nuestros hallazgos. Concéntrate en entender lo que significa cada vulnerabilidad en lugar de tratar de solucionar todo de una vez.

Guardar el Informe

En este último paso, guardarás los resultados del escaneo de Nikto en un archivo para su documentación y referencia futura. Guardar informes es crucial en las pruebas de seguridad, ya que proporciona evidencia de las vulnerabilidades encontradas y ayuda a seguir el progreso de la remediación.

  1. Primero, asegúrate de estar en el directorio de trabajo correcto donde deseas almacenar tus informes de escaneo. El comando cd cambia de directorio:

    cd ~/project
  2. Para guardar los resultados del escaneo del paso anterior en formato de texto plano, ejecuta este comando. La opción -output especifica el nombre del archivo donde Nikto escribirá sus hallazgos:

    nikto -h http://localhost:8000 -output vuln_scan_report.txt
  3. Verifica que el informe se haya creado correctamente. El comando ls -l lista los archivos con detalles, y debes ver tu archivo de informe con contenido (tamaño distinto de cero):

    ls -l vuln_scan_report.txt
  4. Para una mejor legibilidad y para compartirlo con los miembros del equipo, puedes generar un informe en formato HTML. La opción -Format html crea un informe visualmente organizado:

    nikto -h http://localhost:8000 -Format html -output vuln_scan_report.html
  5. Para comprobar rápidamente el contenido de tu informe de texto, utiliza el comando head, que muestra las primeras 20 líneas. Esto ayuda a verificar que el escaneo se haya completado correctamente:

    head -n 20 vuln_scan_report.txt
  6. El informe contiene varias secciones importantes que los profesionales de seguridad analizan:

    • Metadatos del escaneo (fecha, objetivo, etc.) - muestra cuándo y qué se escaneó
    • Todas las vulnerabilidades identificadas - los hallazgos principales que requieren atención
    • Recomendaciones para la remediación - soluciones sugeridas para cada problema
    • Estadísticas del escaneo y tiempo de finalización - ayuda a medir el rendimiento del escaneo
  7. Estos archivos de informe ahora se guardan en tu directorio ~/project. Puedes:

    • Compartirlos con los desarrolladores para solucionar problemas
    • Compararlos con futuros escaneos para seguir el progreso
    • Incluirlos en la documentación de auditorías de seguridad
    • Utilizarlos como evidencia en informes de cumplimiento

Resumen

En este laboratorio, has aprendido cómo instalar y configurar Nikto, un potente escáner de servidores web de código abierto, para detectar vulnerabilidades en sistemas objetivos. El ejercicio te ha guiado a través de la verificación de la instalación, la comprobación de la accesibilidad del servidor y la realización de escaneos exhaustivos en una aplicación web vulnerable.

Has adquirido experiencia práctica en la interpretación de los resultados del escaneo y la generación de informes, lo que demuestra el papel fundamental de la evaluación de vulnerabilidades en el mantenimiento de la seguridad web. Este conocimiento práctico te proporciona las habilidades esenciales para identificar posibles riesgos de seguridad en servidores web.