Escaneo de Vulnerabilidades con Nikto en Kali

Kali LinuxKali LinuxBeginner
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á los aspectos esenciales del escaneo de vulnerabilidades web utilizando Nikto, una potente herramienta de código abierto, dentro de un entorno Kali Linux. El objetivo es comprender cómo identificar posibles problemas de seguridad en servidores web ejecutando escaneos, interpretando los resultados y guardando informes para su posterior análisis. A través de ejercicios paso a paso en la VM (Máquina Virtual) LabEx, obtendrá experiencia práctica con la interfaz de línea de comandos de Nikto. Este laboratorio está diseñado para principiantes, guiándole a través de cada proceso en un entorno de contenedor controlado para construir habilidades fundamentales en las evaluaciones de seguridad web.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kali(("Kali")) -.-> kali/KaliGroup(["Kali"]) kali/KaliGroup -.-> kali/term_ops("Kali Terminal") kali/KaliGroup -.-> kali/file_ctrl("File Management") kali/KaliGroup -.-> kali/pkg_ops("Package Management") kali/KaliGroup -.-> kali/web_ctrl("Web Services") kali/KaliGroup -.-> kali/vuln_scan("Vulnerability Scanning") kali/KaliGroup -.-> kali/nikto_ops("Nikto Scanner") subgraph Lab Skills kali/term_ops -.-> lab-552301{{"Escaneo de Vulnerabilidades con Nikto en Kali"}} kali/file_ctrl -.-> lab-552301{{"Escaneo de Vulnerabilidades con Nikto en Kali"}} kali/pkg_ops -.-> lab-552301{{"Escaneo de Vulnerabilidades con Nikto en Kali"}} kali/web_ctrl -.-> lab-552301{{"Escaneo de Vulnerabilidades con Nikto en Kali"}} kali/vuln_scan -.-> lab-552301{{"Escaneo de Vulnerabilidades con Nikto en Kali"}} kali/nikto_ops -.-> lab-552301{{"Escaneo de Vulnerabilidades con Nikto en Kali"}} end

Configuración del Entorno e Instalación de Nikto

En este primer paso, configurará su entorno de trabajo en el contenedor Kali Linux y se asegurará de que Nikto, el escáner de vulnerabilidades web, esté instalado y listo para usar. Este laboratorio se lleva a cabo dentro de la VM (Máquina Virtual) LabEx, y cuando abra la terminal, se conectará automáticamente al shell del contenedor Kali Linux. No es necesario iniciar manualmente el contenedor o ingresar al shell; el entorno ya está configurado para usted.

Comencemos por comprender la configuración. La VM LabEx se ejecuta en un host en la nube independiente con Docker preinstalado, y se ha configurado un contenedor Kali Linux para que se ejecute automáticamente. Todas sus operaciones se llevarán a cabo dentro de la terminal de este contenedor. Nikto es una herramienta utilizada para escanear servidores web en busca de vulnerabilidades, como software obsoleto o configuraciones incorrectas, y debemos asegurarnos de que esté instalado antes de continuar.

Primero, actualice la lista de paquetes en el contenedor Kali Linux para asegurarse de tener la información más reciente sobre el software disponible. Ejecute el siguiente comando en la terminal:

apt update

Este comando obtiene la información más reciente del paquete de los repositorios configurados. Puede tardar unos momentos en completarse y verá un resultado que indica el progreso, como la descarga de listas de paquetes. Un ejemplo de salida podría verse así:

Get:1 http://mirrors.cloud.aliyuncs.com/kali kali-rolling InRelease [30.9 kB]
Get:2 http://mirrors.cloud.aliyuncs.com/kali kali-rolling/main amd64 Packages [18.1 MB]
...
Fetched 18.5 MB in 5s (3,700 kB/s)
Reading package lists... Done

Una vez que se complete la actualización, instale Nikto si aún no está presente en el contenedor. Utilice el siguiente comando para instalarlo:

apt install -y nikto iputils-ping

El flag -y confirma automáticamente la instalación sin solicitar la entrada. Este proceso puede tardar un poco y verá un resultado que muestra el progreso de la instalación, como la descarga y la configuración del paquete. Un ejemplo de salida podría ser:

Reading package lists... Done
Building dependency tree... Done
...
Setting up nikto (1:2.1.5-3.1) ...

Después de la instalación, verifique que Nikto esté instalado correctamente comprobando su versión. Ejecute este comando:

nikto -Version

Este comando muestra la versión de Nikto instalada, confirmando que está lista para usar. El resultado esperado debería ser similar a este:

Nikto 2.5.0 (LW 2.5)

Con Nikto instalado, está listo para continuar con los siguientes pasos, donde lo utilizará para escanear servidores web. Este paso asegura que su entorno esté configurado correctamente y que las herramientas necesarias estén disponibles para las próximas tareas.

Ejecución de un Escaneo Web Básico con Nikto

Ahora que Nikto está instalado en su contenedor Kali Linux, aprenderá a ejecutar un escaneo básico de vulnerabilidades web. Este paso se basa en la configuración del entorno del paso anterior y le presenta el uso de Nikto para identificar posibles problemas de seguridad en un servidor web. Dado que ya se encuentra en el shell del contenedor Kali Linux cuando abre la terminal en la VM LabEx, no es necesario iniciar o ingresar manualmente al contenedor.

Comprendamos qué hace un escaneo básico de Nikto. Nikto escanea un servidor web objetivo en busca de vulnerabilidades comunes, como versiones de software obsoletas o configuraciones incorrectas que podrían ser explotadas. Para este laboratorio, utilizaremos un servidor de prueba de acceso público, testphp.vulnweb.com, que está diseñado para aprender y practicar el escaneo de vulnerabilidades. Esto asegura que estamos escaneando de una manera ética y segura.

Para comenzar, ejecute un escaneo básico en el servidor de prueba utilizando Nikto. Ingrese el siguiente comando en la terminal:

nikto -h testphp.vulnweb.com

La opción -h especifica el host para escanear, en este caso, testphp.vulnweb.com. Este escaneo puede tardar unos minutos en completarse, dependiendo de las condiciones de la red y la configuración del objetivo. Durante el escaneo, verá un resultado en la terminal que muestra el progreso. Un ejemplo de salida podría verse así:

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          44.228.249.3
+ Target Hostname:    testphp.vulnweb.com
+ Target Port:        80
+ Start Time:         2025-04-21 07:29:12 (GMT0)
---------------------------------------------------------------------------
+ Server: nginx/1.19.0
+ /: Retrieved x-powered-by header: PHP/5.6.40-38+ubuntu20.04.1+deb.sury.org+1.
...
---------------------------------------------------------------------------
+ 1 host(s) tested

Este resultado proporciona información inicial sobre el objetivo, como su dirección IP, nombre de host y puerto. También enumera posibles problemas, como la falta de encabezados de seguridad o componentes obsoletos. No se preocupe si el resultado parece detallado; el objetivo aquí es ejecutar el escaneo y observar el proceso. En los próximos pasos, analizaremos estos resultados más de cerca.

Si el escaneo no se inicia o no aparece ningún resultado, asegúrese de que su conexión a Internet esté activa dentro de la VM LabEx. Puede probar la conectividad al objetivo ejecutando:

ping -c 4 testphp.vulnweb.com

Este comando envía algunos paquetes al objetivo para verificar si es accesible. Si ve respuestas, el servidor es accesible; si no, vuelva a intentar el escaneo o verifique la configuración de su red en la VM LabEx.

PING testphp.vulnweb.com (44.228.249.3) 56(84) bytes of data.
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=1 ttl=55 time=21.4 ms
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=2 ttl=55 time=21.7 ms
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=3 ttl=55 time=21.5 ms
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=4 ttl=55 time=21.5 ms

--- testphp.vulnweb.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 21.435/21.523/21.699/0.103 ms

Este paso le ha presentado la ejecución de un escaneo básico de Nikto, estableciendo las bases para un escaneo y análisis más específicos en los siguientes pasos. Ha ejecutado el comando de escaneo y ha observado el resultado inicial directamente en la terminal del contenedor Kali Linux.

Uso de las Opciones de Ajuste (Tuning Options) de Nikto para un Escaneo Dirigido

Basándose en el escaneo básico que realizó en el paso anterior, ahora aprenderá a realizar escaneos más dirigidos utilizando las opciones de ajuste (tuning options) de Nikto. Nikto le permite enfocar sus escaneos en tipos específicos de vulnerabilidades, lo cual es útil cuando busca problemas particulares o desea reducir el tiempo de escaneo.

En este paso, aprenderá a utilizar la función de ajuste de Nikto para personalizar sus escaneos en el entorno del contenedor Kali Linux.

Primero, comprendamos qué opciones de ajuste están disponibles en Nikto. Puede ver la lista completa de opciones de ajuste disponibles con el siguiente comando:

nikto -h testphp.vulnweb.com -Display V

La opción -Display V muestra una salida detallada (verbose output), incluida la información de ajuste. En la salida, verá diferentes categorías de prueba etiquetadas con números y letras.

Ahora, ejecutemos un escaneo dirigido que se centre en las vulnerabilidades comunes relacionadas con archivos. Ejecute el siguiente comando:

nikto -h testphp.vulnweb.com -Tuning 2

La opción -Tuning 2 prueba específicamente las vulnerabilidades de divulgación de archivos (file disclosure vulnerabilities). Este escaneo puede tardar unos minutos en completarse y verá un resultado en la terminal similar al siguiente:

- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          44.228.249.3
+ Target Hostname:    testphp.vulnweb.com
+ Target Port:        80
---------------------------------------------------------------------------
+ Server: nginx/1.19.0
+ Scanning for File Upload vulnerabilities...
+ Multiple file upload fields found on login.php
...

También puede combinar varias opciones de ajuste. Por ejemplo, para escanear tanto las vulnerabilidades de divulgación de archivos (2) como las de configuración incorrecta (9), utilice:

nikto -h testphp.vulnweb.com -Tuning 2,9

Este escaneo combinado verificará ambas categorías de problemas, brindándole una visión más completa de los tipos de vulnerabilidades específicas sin ejecutar un escaneo completo.

Si el escaneo no produce resultados o encuentra errores, asegúrese de que su conexión a Internet esté activa probando la conectividad con:

ping -c 4 testphp.vulnweb.com

Este paso le ha ayudado a comprender cómo utilizar las opciones de ajuste de Nikto para realizar escaneos más dirigidos, lo que le permite centrarse en problemas de seguridad específicos. En los próximos pasos, exploraremos características adicionales de Nikto que mejoran sus capacidades de escaneo de vulnerabilidades.

Personalización de Formatos de Salida y Guardado de Resultados de Escaneo

Después de aprender a realizar escaneos dirigidos con Nikto, ahora explorará cómo personalizar los formatos de salida y guardar los resultados del escaneo para la documentación y el análisis. Documentar adecuadamente sus hallazgos es un aspecto crucial de las evaluaciones de seguridad, y Nikto proporciona varias opciones para formatear y guardar los resultados de su escaneo.

En este paso, aprenderá a generar informes en diferentes formatos directamente en la terminal del contenedor Kali Linux.

Comencemos examinando las diferentes opciones de formato de salida que ofrece Nikto. Los formatos más comunes son:

  1. Texto (predeterminado): Salida de texto sin formato (plain text output)
  2. HTML: Informe HTML formateado
  3. CSV: Valores separados por comas (comma-separated values) para importar a hojas de cálculo
  4. XML: Datos XML estructurados para el procesamiento automatizado

Para guardar los resultados del escaneo en el formato de texto predeterminado, ejecute:

nikto -h testphp.vulnweb.com -o /root/nikto_text_report.txt

La opción -o especifica la ruta del archivo de salida. Una vez que se complete el escaneo, verifique que el archivo se haya creado viendo su contenido:

cat /root/nikto_text_report.txt

Para generar un informe HTML, que proporciona un formato más legible y estructurado, utilice:

nikto -h testphp.vulnweb.com -Format htm -o /root/nikto_report.html

La opción -Format htm le dice a Nikto que formatee la salida como HTML. Si bien no puede ver directamente el archivo HTML en la terminal, puede verificar que se haya creado:

ls -l /root/nikto_report.html

Para los datos que deben importarse a otras herramientas u hojas de cálculo, puede generar un informe en formato CSV:

nikto -h testphp.vulnweb.com -Format csv -o /root/nikto_report.csv

Una vez que se complete el escaneo, verifique el archivo CSV:

head /root/nikto_report.csv

Esto mostrará las primeras líneas del archivo CSV, mostrando cómo están estructurados los datos.

Estos diferentes formatos de salida sirven para diferentes propósitos:

  • Los informes de texto son fáciles de leer en una terminal
  • Los informes HTML están organizados visualmente y son buenos para compartir con los equipos
  • Los formatos CSV y XML son excelentes para importar a otras herramientas de seguridad o bases de datos

Al aprender a personalizar los formatos de salida, ha mejorado su capacidad para documentar y comunicar sus hallazgos de manera efectiva.

Opciones Avanzadas de Nikto para un Escaneo Más Profundo

En este paso final, explorará algunas opciones avanzadas de Nikto que permiten un escaneo más profundo y completo. Estas características le ayudan a descubrir vulnerabilidades ocultas y proporcionan más contexto sobre posibles problemas de seguridad. Esto se basa en el conocimiento de los pasos anteriores, centrándose en las capacidades avanzadas de Nikto dentro del entorno del contenedor Kali Linux.

Exploremos algunas de las opciones avanzadas más útiles en Nikto:

Primero, usemos la técnica -evasion para evitar sistemas simples de detección de intrusiones (intrusion detection systems). Esto puede ser útil al probar los controles de seguridad:

nikto -h testphp.vulnweb.com -evasion 1

La opción -evasion 1 codifica la URL utilizando caracteres aleatorios en mayúsculas y minúsculas. Es posible que vea una salida similar a:

- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          44.228.249.3
+ Target Hostname:    testphp.vulnweb.com
+ Target Port:        80
+ Evasion technique:  Random URI encoding (non-UTF8)
---------------------------------------------------------------------------
+ Server: nginx/1.19.0
...

A continuación, escaneemos con un puerto y protocolo específicos. Si bien hemos estado escaneando el puerto HTTP predeterminado 80, puede especificar diferentes puertos:

nikto -h testphp.vulnweb.com -port 443 -ssl

La opción -port 443 apunta al puerto 443, y -ssl le dice a Nikto que use el protocolo HTTPS. Para este servidor de prueba, esto puede no devolver resultados ya que podría no tener HTTPS habilitado, pero demuestra cómo escanear servicios web seguros.

Para los sitios que requieren autenticación, Nikto proporciona opciones para manejar la autenticación HTTP básica:

nikto -h testphp.vulnweb.com -id admin:password

La opción -id le permite especificar las credenciales en el formato usuario:contraseña (username:password). Para el servidor de prueba, estas credenciales no funcionarán, pero muestra cómo configurar escaneos autenticados.

También puede aumentar la verbosidad del escaneo para obtener información más detallada:

nikto -h testphp.vulnweb.com -Display V -o /root/nikto_verbose_report.txt

La opción -Display V proporciona una salida detallada (verbose output), mostrando más detalles sobre cada prueba realizada. Guardar esto en un archivo con -o le brinda una documentación completa del escaneo.

Finalmente, combinemos varias opciones para un escaneo completo:

nikto -h testphp.vulnweb.com -Tuning x -no404 -Format htm -o /root/final_report.html

En este comando:

  • -Tuning x prueba todo excepto las vulnerabilidades DoS (Denial of Service)
  • -no404 reduce los falsos positivos al no informar errores 404
  • -Format htm guarda el informe en formato HTML
  • -o especifica el archivo de salida

Este paso le ha presentado varias opciones avanzadas de Nikto que amplían sus capacidades de escaneo de vulnerabilidades web. Al combinar estas diferentes técnicas, puede realizar evaluaciones de seguridad exhaustivas y generar informes completos adaptados a sus necesidades específicas.

Resumen

En este laboratorio, ha aprendido a usar Nikto, un potente escáner de vulnerabilidades web, dentro de un entorno Kali Linux. Comenzó configurando el entorno e instalando Nikto, luego progresó a través de técnicas de escaneo cada vez más sofisticadas.

Comenzó con escaneos básicos para identificar vulnerabilidades comunes en un servidor de prueba, luego aprendió a realizar escaneos dirigidos utilizando las opciones de ajuste (tuning options) de Nikto para centrarse en tipos específicos de vulnerabilidades. Exploró diferentes formatos de salida, incluidos texto, HTML y CSV, para documentar y comunicar eficazmente sus hallazgos.

Finalmente, descubrió opciones avanzadas para un escaneo más profundo, incluidas técnicas de evasión (evasion techniques), especificación de puerto y protocolo, manejo de autenticación y salida detallada (verbose output). Estas habilidades proporcionan una base sólida para realizar evaluaciones de seguridad web, ya sea con fines educativos o pruebas de seguridad profesionales.

La experiencia práctica adquirida en este laboratorio le proporciona un conocimiento práctico de la interfaz de línea de comandos de Nikto y la capacidad de personalizar los escaneos de acuerdo con sus requisitos específicos. Estas son habilidades esenciales para cualquier persona interesada en la seguridad web y la evaluación de vulnerabilidades.