Escanear un puerto específico 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. Por defecto, Nikto escanea puertos HTTP/HTTPS estándar como 80 y 443. Sin embargo, en escenarios del mundo real, los servicios web a menudo se alojan en puertos no estándar para ocultarlos.

En este laboratorio, aprenderá a utilizar Nikto para escanear un puerto específico y no estándar en un objetivo. Esta es una habilidad fundamental para garantizar que todos los servicios expuestos a la web, independientemente del puerto en el que operen, sean evaluados adecuadamente en busca de vulnerabilidades.

Identificar un puerto HTTP no estándar en un objetivo

En este paso, primero identificará los puertos abiertos en la máquina objetivo. Antes de poder escanear un puerto específico con Nikto, necesita saber qué puertos están abiertos y potencialmente alojando servicios. Utilizaremos nmap, una potente herramienta de escaneo de redes, para este propósito.

Escanearemos un rango de puertos en nuestra máquina local (localhost) para encontrar el servidor web que configuramos. Escanearemos el rango de puertos del 8000 al 9000.

Ejecute el siguiente comando en su terminal:

nmap -p 8000-9000 localhost

Debería ver una salida similar a la siguiente, indicando que los puertos 8001 y 8088 están abiertos.

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000087s latency).
Not shown: 98 closed ports
PORT     STATE SERVICE
8001/tcp open  vcom-tunnel
8088/tcp open  radan-http

Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

Esta salida confirma que dos servicios se están ejecutando en puertos no estándar dentro de nuestro rango especificado. Nos centraremos en el puerto 8088 para nuestro primer escaneo con Nikto.

Usar la bandera -p para especificar el puerto objetivo

En este paso, aprenderemos sobre la bandera específica de Nikto utilizada para escanear puertos. Por defecto, Nikto escanea el puerto 80. Para dirigir Nikto a escanear un puerto diferente, debe usar la opción de línea de comandos -p (o -port).

La sintaxis es sencilla:

nikto -h <host_objetivo> -p <número_de_puerto>

Por ejemplo, para escanear el host localhost en el puerto 8088 que descubrimos en el paso anterior, la estructura del comando sería:

nikto -h localhost -p 8088

Este comando le indica a Nikto que realice su conjunto completo de pruebas, pero que las dirija todas al puerto 8088 en el host localhost. En el siguiente paso, ejecutará este comando y verá los resultados.

Ejecutar el escaneo contra el host y el puerto específico

Ahora que sabe cómo especificar un puerto objetivo, ejecutemos el escaneo. Utilizará la estructura de comandos del paso anterior para iniciar un escaneo de Nikto contra localhost en el puerto 8088.

Ejecute el siguiente comando en su terminal:

nikto -h localhost -p 8088

Nikto se iniciará y verá una salida que detalla su progreso y hallazgos. La salida se verá algo así (algunos detalles pueden variar):

- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        8088
+ Start Time:         2023-10-27 10:05:10 (GMT0)
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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)
+ OSVDB-3092: /cgi-bin/: This might be interesting...
+ 7558 requests: 0 error(s) and 5 item(s) reported on remote host
+ End Time:           2023-10-27 10:05:25 (GMT0) (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Ha realizado con éxito un escaneo de vulnerabilidades dirigido a un puerto no estándar.

Analizar los resultados del servicio no estándar

En este paso, analizará la salida del escaneo de Nikto que acaba de realizar. Comprender los resultados es tan importante como ejecutar el escaneo en sí.

Revisemos los hallazgos clave de la salida del paso anterior:

  • + Target Port: 8088: Esto confirma que Nikto apuntó correctamente al puerto que especificó.
  • + Server: SimpleHTTP/0.6 Python/3.10.12: Esta es una información muy valiosa. Nikto ha identificado el software y la versión del servidor web. En este caso, es un servidor simple proporcionado por Python. Conocer la tecnología del servidor ayuda a un atacante a centrarse en exploits específicos.
  • Cabeceras de seguridad faltantes: Líneas como The anti-clickjacking X-Frame-Options header is not present señalan configuraciones de seguridad erróneas. Estas cabeceras ayudan a proteger una aplicación web de ataques comunes como clickjacking y cross-site scripting (XSS).
  • + OSVDB-3092: /cgi-bin/: This might be interesting...: Nikto identificó un directorio llamado cgi-bin. Este directorio tradicionalmente contiene scripts ejecutables, lo que lo convierte en un objetivo de alto valor para los atacantes que buscan vulnerabilidades.

Este análisis demuestra que incluso un servicio simple en un puerto no estándar puede tener características descubribles y posibles debilidades de seguridad.

Escanear un rango de puertos en un solo host

En este último paso, aprenderá a hacer que sus escaneos sean aún más eficientes al proporcionar a Nikto un rango de puertos para verificar. Esto es extremadamente útil cuando ha identificado varios puertos potenciales de un escaneo de nmap o sospecha que los servicios podrían estar ejecutándose dentro de un rango específico.

La bandera -p también acepta un rango de puertos especificado con un guion. La sintaxis es:

nikto -h <target_host> -p <start_port>-<end_port>

Usemos esto para escanear el rango 8000-8100 en localhost. Este rango incluye ambos servidores web que tenemos en ejecución (en los puertos 8001 y 8088).

Ejecute el siguiente comando:

nikto -h localhost -p 8000-8100

Nikto ahora iterará a través de cada puerto en el rango especificado. Primero escaneará el puerto 8000, no encontrará nada, luego pasará al 8001, encontrará el servidor web, lo escaneará e informará los resultados. Continuará este proceso hasta que llegue al puerto 8100, escaneando también el servidor en el puerto 8088 en el camino.

La salida será extensa, mostrando dos informes de escaneo separados, uno para cada puerto activo encontrado:

- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        8001
... (Results for port 8001) ...
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        8088
... (Results for port 8088) ...
---------------------------------------------------------------------------
+ 2 host(s) tested

Esto demuestra la eficiencia con la que puede verificar múltiples puertos en un solo host con un solo comando.

Resumen

En este laboratorio, aprendió a extender las capacidades de escaneo de Nikto más allá de los puertos web estándar. Comenzó utilizando nmap para identificar servicios que se ejecutan en puertos no estándar. Luego utilizó la potente bandera -p de Nikto para apuntar a un solo puerto específico y analizó la salida resultante para identificar la tecnología del servidor y posibles configuraciones erróneas.

Finalmente, aprendió a usar la bandera -p para escanear un rango de puertos, una técnica poderosa para descubrir de manera eficiente servicios web ocultos en un objetivo. Dominar el escaneo dirigido es una habilidad crucial para pruebas de seguridad de aplicaciones web efectivas y exhaustivas.