Silenciar la Salida de la Consola para Scripting con Nikto

Kali LinuxBeginner
Practicar Ahora

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.

Al ejecutar Nikto desde la línea de comandos, produce una gran cantidad de salida en tiempo real, lo cual es útil para el uso interactivo. Sin embargo, cuando se desean automatizar escaneos utilizando scripts, esta salida verbosa puede ser indeseable.

En este laboratorio, aprenderá a utilizar la opción -Mute para ejecutar escaneos de Nikto de forma silenciosa. Esta es una habilidad crucial para integrar Nikto en flujos de trabajo de seguridad automatizados y scripts de shell, permitiéndole capturar resultados en archivos sin saturar la consola.

Ejecutar un escaneo estándar y observar la salida detallada en la consola

En este paso, realizará un escaneo básico de Nikto contra un servidor web de prueba. Esto le ayudará a comprender el comportamiento predeterminado y la cantidad de información que imprime en la consola.

Primero, ejecutemos un escaneo estándar. La opción -h se utiliza para especificar el host de destino. Nuestro servidor de prueba se está ejecutando localmente en el puerto 8000.

Ejecute el siguiente comando en su terminal:

nikto -h http://127.0.0.1:8000

Verá una gran cantidad de salida, que incluye el banner de la versión de Nikto, información del objetivo y actualizaciones de estado en tiempo real a medida que avanza el escaneo.

- Nikto v2.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
+ The anti-clickjacking X-Frame-Options header is not present.
+ 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.
+ No CGI directories found (use '-C all' to force check all possible dirs)
... (muchas más líneas de salida) ...
+ 1 host(s) tested

Esta salida detallada es útil para monitorear un escaneo en tiempo real, pero no es ideal para la automatización.

Utilizar la opción -Mute para suprimir la salida normal de la consola

En este paso, aprenderá a utilizar la opción -Mute para reducir significativamente la salida de la consola. Esta opción indica a Nikto que suprima las solicitudes y respuestas HTTP normales que normalmente mostraría durante un escaneo.

La opción -Mute es perfecta para situaciones en las que solo le interesan los hallazgos finales, no el progreso paso a paso.

Ahora, ejecute el mismo escaneo que antes, pero agregue la opción -Mute al final del comando:

nikto -h http://127.0.0.1:8000 -Mute

Observe la salida ahora. Es mucho más limpia. Han desaparecido el banner y las actualizaciones de estado en tiempo real. Solo verá el resumen final de los hallazgos.

- Nikto v2.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
+ The anti-clickjacking X-Frame-Options header is not present.
+ 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.
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ 1 host(s) tested

Como puede ver, la salida está mucho menos saturada, lo que facilita su análisis o lectura cuando el escaneo forma parte de un proceso más amplio.

Combinar -Mute con -o para guardar los resultados silenciosamente en un archivo

En este paso, llevaremos la supresión un paso más allá. El objetivo es ejecutar un escaneo que no produzca ninguna salida en la consola y guarde todos los hallazgos directamente en un archivo. Este es el requisito más común para la automatización de scripts.

Para lograr esto, puede combinar la opción -Mute con la opción -o (o --output), que especifica un archivo de salida.

Ejecute el siguiente comando. Realizará el escaneo, suprimirá toda la salida de la consola y guardará el informe en un archivo llamado nikto_report.txt.

nikto -h http://127.0.0.1:8000 -Mute -o nikto_report.txt

Después de ejecutar el comando, notará que el indicador de su terminal regresa inmediatamente sin imprimir ningún resultado del escaneo. El escaneo se ejecutó silenciosamente en segundo plano.

Para confirmar que se generó el informe, primero liste los archivos en el directorio actual:

ls

Debería ver nikto_report.txt en la lista.

nikto_report.txt  www

Ahora, vea el contenido del archivo de informe:

cat nikto_report.txt

El contenido del archivo será el mismo que la salida silenciada que vio en el paso anterior. Esta técnica es esencial para mantener registros o procesar los resultados del escaneo de forma programática.

Escribir un script simple de bash que llame a un escaneo silencioso de Nikto

En este paso, creará un script simple de bash para automatizar el escaneo silencioso de Nikto. Esto demuestra cómo se utilizan las opciones -Mute y -o en un escenario de automatización del mundo real.

Primero, cree un nuevo archivo llamado scan.sh usando el editor de texto nano:

nano scan.sh

Dentro del editor nano, agregue el siguiente contenido. Este script imprimirá mensajes de estado al usuario, ejecutará el escaneo silencioso de Nikto y guardará los resultados en un nuevo archivo llamado script_report.txt.

#!/bin/bash

echo "Starting silent Nikto scan..."
nikto -h http://127.0.0.1:8000 -Mute -o script_report.txt
echo "Scan complete. Report saved to script_report.txt"

Presione Ctrl+X para salir, Y para guardar los cambios y Enter para confirmar el nombre del archivo.

A continuación, deberá hacer que el script sea ejecutable. Use el comando chmod para agregar permisos de ejecución:

chmod +x scan.sh

Finalmente, ejecute su nuevo script:

./scan.sh

El script mostrará los mensajes "Starting" y "Scan complete", pero el escaneo de Nikto en sí no producirá ninguna salida en la consola.

Starting silent Nikto scan...
Scan complete. Report saved to script_report.txt

Puede verificar que se creó el nuevo archivo de informe script_report.txt usando el comando ls nuevamente.

Comprobar el código de salida del script para determinar la finalización del escaneo

En este paso, aprenderá a comprobar el código de salida de su script. En los scripts de shell, el código de salida es un número que un comando o script devuelve después de que termina de ejecutarse. Un código de salida de 0 convencionalmente significa que el comando se completó con éxito.

Este es un concepto fundamental para crear scripts fiables, ya que le permite comprobar si un paso tuvo éxito antes de pasar al siguiente.

Primero, ejecute su script de nuevo:

./scan.sh

Inmediatamente después de que el script finalice, puede comprobar su código de salida examinando la variable especial del shell $?. Esta variable siempre contiene el código de salida del último comando que se ejecutó.

Ejecute el siguiente comando:

echo $?

La salida debería ser 0, lo que indica que su script scan.sh se completó sin errores.

0

En scripts más avanzados, podría usar esta comprobación en una declaración if para manejar errores, por ejemplo:

./scan.sh
if [ $? -eq 0 ]; then
  echo "Script completed successfully."
else
  echo "Script failed with an error."
fi

Esto confirma que puede ejecutar de forma fiable su escaneo silencioso de Nikto dentro de un script y verificar programáticamente su finalización.

Resumen

En este laboratorio, ha aprendido a controlar la salida de la consola de Nikto para una scripting y automatización efectivas.

Comenzó observando la salida detallada de un escaneo estándar de Nikto. Luego, utilizó la opción -Mute para suprimir la salida no esencial y la opción -o para guardar los resultados del escaneo de forma silenciosa en un archivo. Finalmente, integró estas opciones en un script de bash y aprendió a comprobar el código de salida del script para verificar su correcta finalización.

Estas habilidades son fundamentales para cualquiera que busque automatizar evaluaciones de seguridad web y crear herramientas de seguridad potentes y no interactivas.