Introducción
Nikto es un potente 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 obsoletas de más de 1250 servidores y problemas específicos de versión en más de 270 servidores.
Por defecto, Nikto ejecuta una amplia gama de plugins, lo que puede consumir mucho tiempo. Para un escaneo más eficiente y específico, puedes seleccionar plugins concretos para ejecutar. Esto es útil cuando deseas comprobar una vulnerabilidad particular o un tipo específico de mala configuración.
En este laboratorio, aprenderás a listar todos los plugins disponibles de Nikto y luego a ejecutar un escaneo enfocado utilizando un único plugin específico.
Listar todos los plugins disponibles usando -list-plugins
En este paso, aprenderás a ver todos los plugins que Nikto tiene disponibles para escanear. Este es el primer paso para realizar un escaneo enfocado, ya que necesitas conocer los nombres de los plugins entre los que puedes elegir.
La opción -list-plugins indica a Nikto que imprima una lista detallada de todos los plugins y luego salga, sin realizar un escaneo.
Ejecuta el siguiente comando en tu terminal para listar todos los plugins disponibles:
nikto -list-plugins
Verás una larga lista de plugins desplazándose. La salida está formateada en columnas que muestran el nombre del plugin, el autor y una breve descripción de su propósito.
Aquí tienes un ejemplo truncado de cómo se verá la salida:
- Nikto 2.5.0
---------------------------------------------------------------------------
Plugin: apache_expect_header
Author: David Lodge <dave at cirt.net>
Description: See if an Expect header will crash Apache. Bugtraq ID 5253.
Type: Standard
Version: 2.5.0
CVSID: $Id: apache_expect_header.plugin,v 1.6 2023/03/28 17:00:00 cirt Exp $
Plugin: apacheusers
Author: Chris Forte
Description: Enumerate apache users via ~user requests
Type: Standard
Version: 2.5.0
CVSID: $Id: apacheusers.plugin,v 1.6 2023/03/28 17:00:00 cirt Exp $
... (muchos más plugins) ...
Tómate un momento para revisar la lista y hacerte una idea de la variedad de pruebas que Nikto puede realizar.
Elegir un plugin específico para ejecutar, por ejemplo, apacheusers
En este paso, revisaremos la lista del paso anterior y elegiremos un plugin específico para nuestro escaneo enfocado. Este es un paso conceptual donde identificas un plugin basándote en un objetivo de prueba específico.
Para este laboratorio, elegiremos el plugin apacheusers. Como su descripción indica, este plugin intenta "Enumerar usuarios de Apache a través de solicitudes ~user". Esta es una prueba común para ver si un servidor web expone nombres de usuario válidos del sistema.
Aunque nuestro servidor de destino es un servidor Python simple y no Apache, utilizaremos este plugin para demostrar el proceso de selección y ejecución. El plugin se ejecutará, pero no encontrará ninguna vulnerabilidad en nuestro servidor no-Apache, lo cual es un resultado válido y esperado.
En el siguiente paso, aprenderás a construir el comando para usar solo este plugin.
Usar la opción -plugins con el nombre del plugin deseado
En este paso, aprenderás a construir el comando de Nikto para ejecutar solo el plugin que seleccionaste.
Para especificar qué plugins ejecutar, usas la opción -plugins seguida del nombre del plugin. También puedes proporcionar una lista de plugins separados por comas si deseas ejecutar más de uno, pero para este laboratorio, nos centraremos en un solo plugin.
La estructura básica del comando es:
nikto -h <host_objetivo> -plugins <nombre_del_plugin>
Para nuestro plugin elegido, apacheusers, y nuestro servidor de prueba ejecutándose localmente en el puerto 8000, el comando será:
nikto -h 127.0.0.1:8000 -plugins apacheusers
Analicemos este comando:
nikto: El programa que estamos ejecutando.-h 127.0.0.1:8000: La opción-h(host) especifica el objetivo. Nuestro servidor de prueba se está ejecutando en la máquina local (127.0.0.1) en el puerto8000.-plugins apacheusers: Esta es la parte clave del comando. Le dice a Nikto que ejecute únicamente el pluginapacheusersy omita todos los demás.
En el siguiente paso, ejecutarás este comando y verás los resultados del escaneo enfocado.
Ejecutar el escaneo enfocado en el objetivo
En este paso, ejecutarás el comando que acabas de aprender para realizar un escaneo enfocado contra el servidor web de prueba.
Ejecuta el siguiente comando en tu terminal. Esto iniciará Nikto, pero en lugar de ejecutarse durante varios minutos, se completará muy rápidamente porque solo está ejecutando un único plugin.
nikto -h 127.0.0.1:8000 -plugins apacheusers
La salida será mucho más corta que un escaneo estándar de Nikto. Se verá algo así:
- Nikto 2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 8000
+ Start Time: 2023-10-27 10:30:00 (GMT0)
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
+ Allowed HTTP Methods: GET, HEAD
+ 1 host(s) tested
+ 0 error(s) and 0 item(s) reported on remote host
+ End Time: 2023-10-27 10:30:01 (GMT0) (1 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
Observa la rapidez con la que terminó el escaneo. Esto demuestra la principal ventaja de usar plugins específicos para pruebas dirigidas.
Analizar la salida específica del plugin
En este paso final, analicemos la salida de nuestro escaneo enfocado. Esta es una habilidad crucial en las pruebas de seguridad: comprender qué significan los resultados.
Observa de nuevo la salida del paso anterior:
- Nikto 2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
...
+ 0 error(s) and 0 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
La línea más importante para nuestro análisis es:
+ 0 error(s) and 0 item(s) reported on remote host
Esta línea nos dice que el plugin apacheusers se ejecutó pero no encontró ninguna de las condiciones para las que fue diseñado. Este es el resultado esperado porque nuestro objetivo es un servidor Python, no un servidor Apache configurado para exponer directorios de usuarios.
En las pruebas de penetración, un resultado negativo (no encontrar una vulnerabilidad) es tan importante como uno positivo. Significa que, para esta prueba específica, el servidor parece ser seguro. Al ejecutar solo el plugin apacheusers, pudimos confirmar esto de manera rápida y eficiente, sin el ruido y el tiempo de un escaneo completo.
Resumen
¡Felicitaciones por completar este laboratorio!
Has aprendido con éxito cómo realizar un escaneo enfocado con Nikto seleccionando un plugin específico. Esta técnica es esencial para evaluaciones de seguridad web eficientes y dirigidas.
En este laboratorio, practicaste las siguientes habilidades:
- Listar todos los plugins disponibles de Nikto usando la opción
-list-plugins. - Comprender cómo elegir un plugin relevante para una prueba específica.
- Usar la opción
-pluginspara indicar a Nikto que ejecute solo los plugins especificados. - Ejecutar un escaneo enfocado y analizar la salida concisa y específica del plugin.
Al dominar esta habilidad, puedes acelerar significativamente tu flujo de trabajo de pruebas y enfocar tus esfuerzos en las vulnerabilidades que más importan para un objetivo determinado.


