← Todas las guías
WebLaboratorio + triageIntermedio42 min

Reconocimiento web con Nikto: ejecutar, filtrar y verificar resultados

Aprende a ejecutar Nikto con alcance y ritmo controlados, filtrar pruebas y respuestas genéricas, interpretar su salida y verificar manualmente cada candidato antes de reportarlo.

1. Nikto propone candidatos; tú decides qué está demostrado

Nikto compara respuestas de un servidor web con una base de pruebas. Puede señalar archivos por defecto, configuración, cabeceras, productos y versiones. No comprende por sí solo la arquitectura, los backports del proveedor ni el riesgo de negocio. Al terminar tendrás tres colas: confirmado, descartado y pendiente, cada una con el motivo de la decisión.

Candidato

La regla coincidió con código, cabecera o contenido. Conserva prueba, URL, test y mensaje originales.

Verificación

Una solicitud manual mínima reproduce la señal y la compara con la raíz y una ruta inexistente.

Hallazgo

La condición está confirmada, tiene impacto contextual y puede explicarse sin depender del texto del escáner.

Empieza con una línea base negativa: solicita una ruta aleatoria inexistente y registra código, Location, longitud, tipo y un fragmento no sensible. Si una regla recibe la misma respuesta, probablemente ha encontrado el error genérico del sitio, no el recurso que describe.

Terminal · línea base antes del escaneo
curl -sS --max-time 10 -D - -o /dev/null https://web.lab.example/cubix-no-existe-a731curl -sS --max-time 10 -D - -o /dev/null https://web.lab.example/

2. Instala una versión conocida y registra su procedencia

Esta guía está contrastada con Nikto 2.6.0. Kali mantiene un paquete propio. En macOS y Windows, la imagen oficial fijada evita depender de una instalación local de Perl; requiere Docker ya instalado y deja los informes en una carpeta montada del host. No uses latest en un ejercicio que deba repetirse.

Instalación · Linux
# Kali Linuxsudo apt updatesudo apt install -y niktonikto -Version

-Version debe mostrar la versión del programa, plugins y bases. En Kali, una configuración antigua en /etc/nikto.conf puede cambiar el comportamiento; la documentación del proyecto recomienda contrastar problemas con una instalación portable limpia antes de atribuirlos al objetivo.

3. Ejecuta una primera pasada acotada y reproducible

El tuning 23b incluye únicamente 2 —configuración y archivos por defecto—, 3 —divulgación de información— y b —identificación de software—. Excluye categorías de inyección, recuperación de archivos, ejecución, bypass y carga. -Cgidirs none evita ampliar el barrido a directorios CGI; -Pause 0.2 introduce 200 ms entre pruebas y -maxtime 10m limita el tiempo por host.

Escaneo controlado · Linux
mkdir -p "$HOME/cubix-nikto"nikto -h https://web.lab.example -Tuning 23b -Cgidirs none -Pause 0.2 -maxtime 10m -timeout 10 -Display 14P -nointeractive -nocheck -ask no -output "$HOME/cubix-nikto/nikto-base.txt" -Format txt

La URL completa fija esquema, nombre y puerto implícito. No sigas redirecciones automáticamente en esta pasada: primero necesitas comprobar que cada Location permanece dentro del alcance. -nocheckimpide la consulta de versión al arrancar; no desactiva pruebas contra el laboratorio.

Salida abreviada · ejemplo didáctico
- Nikto v2.6.0+ Target Hostname: web.lab.example+ Server: nginx+ /robots.txt: contains entries which should be manually viewed.+ The X-Content-Type-Options header is not set.+ 418 requests: 0 error(s) and 3 item(s) reported on remote host

El resumen indica volumen, errores y candidatos, no severidad. Un banner, un robots.txt y una cabecera ausente son clases de observación diferentes; no las mezcles en una puntuación automática.

4. Reduce ruido en tres capas y conserva el original

Filtra primero el alcance de pruebas, después la respuesta negativa y al final lavista del informe. Guarda siempre nikto-base.txt intacto y escribe cada repetición en otro archivo. Así puedes explicar qué desapareció y por qué.

1 · Tuning

Usa solo las categorías autorizadas. Para revisar exclusivamente configuración y archivos por defecto, ejecuta -Tuning 2.

2 · Error genérico

-404string o -404code ayudan solo después de medir varias rutas inexistentes estables.

3 · Lectura local

Busca términos en la copia del informe; no repitas tráfico únicamente para cambiar cómo se presenta la salida.

Filtrar informe · Linux
rg -n -i 'server:|header|robots|default|outdated|allowed http methods|requests:|error\(s\)' "$HOME/cubix-nikto/nikto-base.txt"

Si tres rutas inexistentes devuelven el mismo cuerpo con la frase ficticia «Recurso no encontrado», puedes hacer una segunda pasada con -404string. Usa una firma específica y estable; un término amplio puede ocultar contenido real. Si todas las respuestas son 302, compara antes sus destinos: ignorar el código de forma global también eliminaría redirecciones legítimas.

Kali Linux · segunda pasada justificada por la línea base
nikto -h https://web.lab.example -Tuning 23b -Cgidirs none -404string 'Recurso no encontrado' -Pause 0.2 -maxtime 10m -timeout 10 -nointeractive -nocheck -ask no -output "$HOME/cubix-nikto/nikto-filtrado.txt" -Format txt

5. Reproduce cada candidato con la mínima solicitud

Copia URL, mensaje y referencia de Nikto a una tabla. Repite la solicitud con curl sin cookies ni autenticación, conserva cabeceras y descarta el cuerpo cuando no sea necesario. Compara con raíz y línea base; cambia solo una variable cada vez.

Verificación manual · Linux
curl -sS --max-time 10 -D - -o /dev/null https://web.lab.example/curl -sS --max-time 10 -D - -o /dev/null https://web.lab.example/robots.txtcurl -sS --max-time 10 -D - -o /dev/null https://web.lab.example/cubix-no-existe-a731

Cabecera ausente

Comprueba una respuesta GET real, no solo HEAD, y registra ruta, código y valor completo. Evalúa el impacto según el contenido.

Archivo por defecto

Confirma código, tipo, longitud y título. No descargues configuraciones, copias ni datos que excedan la demostración mínima.

Versión antigua

El banner es una afirmación del servicio. Confirma paquete y parches con el propietario: una distribución puede aplicar backports.

Métodos permitidos

OPTIONS puede anunciar Allow. No envíes PUT, DELETE o PATCH para validarlos sin una prueba específica autorizada y recuperable.

Ruta administrativa

Un 401 o 403 confirma una respuesta, no acceso ni vulnerabilidad. No pruebes credenciales y verifica que la ruta pertenece al alcance.

Referencia CVE

Confirma producto, versión, componente expuesto, configuración y parche. La coincidencia textual no establece afectación.

Marca confirmado cuando reproduces la condición y entiendes su contexto; descartadocuando coincide con la línea base o la premisa es falsa; pendiente cuando falta información del propietario. No conviertas «pendiente» en vulnerabilidad por prudencia estadística.

6. Diagnostica fallos sin aumentar agresividad

Muchos 200

Puede existir un soft 404. Mide varias rutas inexistentes y usa una firma negativa estrecha antes de repetir.

Todo redirige

Inspecciona Location. Si sale del alcance, detente; si es un login global, documenta la línea base.

Errores de TLS

Verifica nombre, SNI, cadena y fecha. No desactives la validación ni cambies de esquema para ocultar el problema.

429 o WAF

Detén el escaneo y acuerda ritmo o ventana. No uses evasión, proxies rotatorios ni agentes alternativos.

Timeouts y 5xx

Comprueba una sola URL con curl. Si el servicio está degradado, para y conserva hora y contador de errores.

Resultados diferentes

Compara versión, bases, configuración, virtual host y hora. CDN, caché o despliegues pueden cambiar la respuesta.

-maxtime limita duración, no número exacto de solicitudes. -Pause reduce frecuencia, pero no sustituye una tasa acordada y observada. Si el riesgo de disponibilidad es alto, el propietario debe proporcionar un clon o entorno de staging representativo.

7. Entrega un informe breve, reproducible y saneado

Para cada candidato conserva: hora UTC, versión de Nikto, URL y virtual host, tuning, test o referencia, solicitud mínima, código, cabeceras relevantes, comparación con la línea base, estado de triage, impacto contextual y acción recomendada. No adjuntes cookies, tokens, cuerpos con datos personales ni informes HTML completos sin revisar.

  • La autorización nombra host, puerto, virtual host, ventana y uso de escáner automatizado
  • La raíz y varias rutas inexistentes forman la línea base antes de filtrar
  • La versión de Nikto, plugins y bases queda registrada
  • El primer escaneo usa Tuning 23b, CGI desactivado, pausa, timeout y tiempo máximo
  • El informe base se conserva intacto y cada repetición usa otro archivo
  • Los filtros 404 están justificados por respuestas negativas estables
  • Cada candidato se verifica con una solicitud manual mínima y sin credenciales
  • Banners, versiones y CVE se tratan como hipótesis hasta confirmar parche y componente
  • 429, 5xx sostenidos, latencia o salida de alcance provocan parada
  • La entrega separa confirmado, descartado y pendiente y elimina información sensible

Para defender, retira páginas y archivos por defecto, reduce banners innecesarios, configura cabeceras según el contenido, protege rutas con autorización server-side y revisa parches desde el inventario real. Ejecuta el mismo perfil controlado después de corregir y compara únicamente los candidatos anteriores; que Nikto deje de alertar es una señal útil, no la única prueba de remediación.

Glosario

Nikto

Escáner de servidor web que compara respuestas HTTP con una base de pruebas conocidas y genera candidatos para revisión.

Tuning

Selección de categorías de pruebas que limita qué comprobaciones ejecuta Nikto.

Plugin

Módulo de Nikto que participa en una fase del reconocimiento, las pruebas o la generación de informes.

Triage

Clasificación inicial que separa resultados confirmados, descartados y pendientes según evidencia y contexto.

Línea base negativa

Respuesta de una ruta inexistente usada para reconocer errores genéricos, redirecciones globales y falsos positivos.

Falso positivo

Resultado que activa una regla del escáner pero no representa la condición descrita al verificarlo.

Cabecera de seguridad

Campo HTTP que comunica al navegador una política, como CSP, HSTS o X-Content-Type-Options.

Banner

Texto anunciado por un servidor o intermediario sobre producto o versión; es una pista y puede ser inexacta.

Virtual host

Sitio seleccionado por nombre que puede compartir dirección y puerto con otras aplicaciones.

Código de estado

Número HTTP de tres cifras que resume el resultado de una solicitud, sin demostrar por sí solo un hallazgo.

Backport

Corrección de seguridad adaptada a una versión anterior sin adoptar el número de versión de la rama más reciente.

Evidencia mínima

Datos estrictamente necesarios para reproducir y justificar una observación sin conservar contenido sensible innecesario.

Ver más guías
Reconocimiento web con Nikto: ejecutar, filtrar y verificar resultados | Cubix Academia