Escaneo de vulnerabilidades en Kali con Nikto

Kali LinuxBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás 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 mediante la ejecución de escaneos, la interpretación de resultados y el guardado de informes para su posterior análisis. A través de ejercicios paso a paso en la VM de LabEx, obtendrás experiencia práctica con la interfaz de línea de comandos de Nikto. Este laboratorio está diseñado para principiantes, guiándote a través de cada proceso en un entorno de contenedores controlado para desarrollar habilidades fundamentales en evaluaciones de seguridad web.

Este es un Laboratorio Guiado, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel intermedio con una tasa de finalización del 65%. Ha recibido una tasa de valoraciones positivas del 94% por parte de los alumnos.

Configuración del entorno e instalación de Nikto

En este primer paso, configurarás tu entorno de trabajo en el contenedor de Kali Linux y te asegurarás de que Nikto, el escáner de vulnerabilidades web, esté instalado y listo para usar. Este laboratorio se realiza dentro de la VM de LabEx y, al abrir la terminal, te conectarás automáticamente a la shell del contenedor de Kali Linux. No es necesario iniciar manualmente el contenedor ni entrar en la shell; el entorno ya está configurado para ti.

Comencemos por entender la configuración. La VM de LabEx se ejecuta en un host en la nube independiente con Docker preinstalado, y se ha configurado un contenedor de Kali Linux para que se ejecute automáticamente. Todas tus operaciones tendrán lugar dentro de la terminal de este contenedor. Nikto es una herramienta utilizada para escanear servidores web en busca de vulnerabilidades, como software desactualizado o configuraciones incorrectas, y debemos asegurarnos de que esté instalada antes de proceder.

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

apt update

Este comando obtiene la información más reciente de los paquetes desde los repositorios configurados. Puede tardar unos momentos en completarse y verás una salida que indica el progreso, como la descarga de listas de paquetes. Una salida de ejemplo 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 completada la actualización, instala Nikto si aún no está presente en el contenedor. Usa el siguiente comando para instalarlo:

apt install -y nikto iputils-ping

La bandera -y confirma automáticamente la instalación sin solicitar intervención. Este proceso puede tardar un poco y verás una salida que muestra el progreso de la instalación, como la descarga y configuración del paquete. Una salida de ejemplo 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, verifica que Nikto se haya instalado correctamente comprobando su versión. Ejecuta este comando:

nikto -Version

Este comando muestra la versión de Nikto instalada, confirmando que está lista para su uso. La salida esperada debería ser similar a esta:

Nikto 2.5.0 (LW 2.5)

Con Nikto instalado, estás listo para proceder a los siguientes pasos donde lo utilizarás para escanear servidores web. Este paso garantiza que tu 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 tu contenedor de Kali Linux, aprenderás a ejecutar un escaneo básico de vulnerabilidades web. Este paso se basa en la configuración del entorno del paso anterior y te introduce en el uso de Nikto para identificar posibles problemas de seguridad en un servidor web. Dado que ya te encuentras en la shell del contenedor de Kali Linux al abrir la terminal en la VM de LabEx, no es necesario iniciar o entrar manualmente al contenedor.

Entendamos 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 garantiza que estemos escaneando de manera ética y segura.

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

nikto -h testphp.vulnweb.com

La opción -h especifica el host a 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ás la salida en la terminal mostrando el progreso. Una salida de ejemplo 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

Al escanear testphp.vulnweb.com con nikto, es posible que encuentres mensajes de error. Esto es normal; por favor, concéntrate en la información clave.

Esta salida 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 desactualizados. No te preocupes si la salida parece muy detallada; el enfoque aquí es ejecutar el escaneo y observar el proceso. En los siguientes pasos, analizaremos estos resultados más de cerca.

Si el escaneo no comienza o no aparece ninguna salida, asegúrate de que tu conexión a Internet esté activa dentro de la VM de LabEx. Puedes probar la conectividad con el objetivo ejecutando:

ping -c 4 testphp.vulnweb.com

Este comando envía unos pocos paquetes al objetivo para comprobar si es accesible. Si ves respuestas, el servidor es accesible; si no, reintenta el escaneo o comprueba la configuración de red en la VM de 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 te ha introducido a la ejecución de un escaneo básico de Nikto, sentando las bases para escaneos y análisis más específicos en los siguientes pasos. Has ejecutado el comando de escaneo y observado la salida inicial directamente en la terminal del contenedor de Kali Linux.

Uso de las opciones de ajuste de Nikto para escaneos específicos

A partir del escaneo básico que realizaste en el paso anterior, ahora aprenderás a realizar escaneos más específicos utilizando las opciones de ajuste (tuning) de Nikto. Nikto te permite enfocar tus escaneos en tipos específicos de vulnerabilidades, lo cual es útil cuando buscas problemas particulares o deseas reducir el tiempo de escaneo.

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

Primero, comprendamos qué opciones de ajuste están disponibles en Nikto. Puedes 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, incluyendo la información de ajuste. En la salida, verás diferentes categorías de prueba etiquetadas con números y letras.

Ahora, realicemos un escaneo específico centrado en vulnerabilidades comunes relacionadas con archivos. Ejecuta el siguiente comando:

nikto -h testphp.vulnweb.com -Tuning 2

La opción -Tuning 2 prueba específicamente vulnerabilidades de divulgación de archivos. Este escaneo puede tardar unos minutos en completarse y verás una salida en la terminal similar a la 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 puedes combinar múltiples opciones de ajuste. Por ejemplo, para escanear tanto vulnerabilidades de divulgación de archivos (2) como de configuración incorrecta (9), utiliza:

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

Este escaneo combinado comprobará ambas categorías de problemas, brindándote una visión más completa de tipos de vulnerabilidades específicos sin necesidad de ejecutar un escaneo total.

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

ping -c 4 testphp.vulnweb.com

Este paso te ha ayudado a comprender cómo usar las opciones de ajuste de Nikto para realizar escaneos más específicos, permitiéndote concentrarte en preocupaciones de seguridad concretas. En los próximos pasos, exploraremos funciones adicionales de Nikto que mejoran tus capacidades de escaneo de vulnerabilidades.

Personalización de formatos de salida y guardado de resultados

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

En este paso, aprenderás a generar informes en diferentes formatos directamente en la terminal del contenedor de 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 plano.
  2. HTML: Informe HTML formateado.
  3. CSV: Valores separados por comas para importar en hojas de cálculo.
  4. XML: Datos XML estructurados para procesamiento automatizado.

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

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

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

cat /root/nikto_text_report.txt

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

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

La opción -Format htm le indica a Nikto que formatee la salida como HTML. Aunque no puedes ver directamente el archivo HTML en la terminal, puedes comprobar que se haya creado:

ls -l /root/nikto_report.html

Para datos que necesiten ser importados en otras herramientas o hojas de cálculo, puedes generar un informe en formato CSV:

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

Una vez finalizado el escaneo, comprueba el archivo CSV:

head /root/nikto_report.csv

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

Estos diferentes formatos de salida sirven para distintos 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 equipos.
  • Los formatos CSV y XML son excelentes para importar en otras herramientas de seguridad o bases de datos.

Al aprender a personalizar los formatos de salida, has mejorado tu capacidad para documentar y comunicar tus hallazgos de manera efectiva.

Opciones avanzadas de Nikto para un escaneo profundo

En este paso final, explorarás algunas opciones avanzadas de Nikto que permiten realizar escaneos más profundos y exhaustivos. Estas funciones te ayudan a descubrir vulnerabilidades ocultas y proporcionan más contexto sobre posibles problemas de seguridad. Esto se basa en los conocimientos de los pasos anteriores, centrándose en las capacidades avanzadas de Nikto dentro del entorno del contenedor de Kali Linux.

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

Primero, usemos la técnica de evasión (-evasion) para intentar eludir sistemas de detección de intrusos simples. Esto puede ser útil al probar 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. Podrías ver 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, realicemos un escaneo con un puerto y protocolo específicos. Aunque hemos estado escaneando el puerto HTTP 80 predeterminado, puedes especificar diferentes puertos:

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

La opción -port 443 apunta al puerto 443, y -ssl le indica a Nikto que use el protocolo HTTPS. Para este servidor de prueba, es posible que esto no devuelva resultados si no tiene HTTPS habilitado, pero demuestra cómo escanear servicios web seguros.

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

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

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

También puedes 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, mostrando más pormenores sobre cada prueba realizada. Guardar esto en un archivo con -o te brinda una documentación completa del escaneo.

Finalmente, combinemos varias opciones para un escaneo integral:

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

En este comando:

  • -Tuning x realiza pruebas para todo excepto vulnerabilidades de denegación de servicio (DoS).
  • -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 te ha introducido a varias opciones avanzadas de Nikto que amplían tus capacidades de escaneo de vulnerabilidades web. Al combinar estas diferentes técnicas, puedes realizar evaluaciones de seguridad exhaustivas y generar informes completos adaptados a tus necesidades específicas.

Resumen

En este laboratorio, has aprendido a utilizar Nikto, un potente escáner de vulnerabilidades web, dentro de un entorno Kali Linux. Comenzaste configurando el entorno e instalando Nikto, para luego progresar a través de técnicas de escaneo cada vez más sofisticadas.

Iniciaste con escaneos básicos para identificar vulnerabilidades comunes en un servidor de prueba, luego aprendiste a realizar escaneos específicos utilizando las opciones de ajuste de Nikto para centrarte en tipos concretos de vulnerabilidades. Exploraste diferentes formatos de salida, incluyendo texto, HTML y CSV, para documentar y comunicar tus hallazgos de manera efectiva.

Finalmente, descubriste opciones avanzadas para un escaneo más profundo, incluyendo técnicas de evasión, especificación de puertos y protocolos, manejo de autenticación y salida detallada. Estas habilidades proporcionan una base sólida para realizar evaluaciones de seguridad web, ya sea con fines educativos o para pruebas de seguridad profesionales.

La experiencia práctica adquirida en este laboratorio te dota de conocimientos aplicables sobre la interfaz de línea de comandos de Nikto y la capacidad de personalizar los escaneos según tus requisitos específicos. Estas son habilidades esenciales para cualquier persona interesada en la seguridad web y la evaluación de vulnerabilidades.