Nikto: guía completa del escáner de vulnerabilidades web
Nikto es un escáner de vulnerabilidades web de código abierto que analiza servidores HTTP/HTTPS en busca de ficheros peligrosos, versiones de software obsoletas y configuraciones inseguras, generando un informe detallado en pocos minutos.
Si estás empezando en el hacking ético o en el pentesting web, Nikto es una de las primeras herramientas que conviene conocer. No sustituye a un auditor humano ni a Burp Suite, pero da una radiografía rápida y automatizada de la superficie de ataque de un servidor web. En esta guía verás qué detecta, cómo instalarlo, cómo usarlo con ejemplos reales y cuáles son sus límites.
Aviso legal obligatorio: usar Nikto (o cualquier escáner) contra sistemas que no te pertenecen o para los que no tienes autorización escrita es un delito en España tipificado en el artículo 197 bis del Código Penal, con penas de hasta tres años de prisión. Practica siempre en entornos propios o laboratorios autorizados.
¿Qué es Nikto y qué detecta exactamente?
Nikto (también llamado Nikto2) es un proyecto open source mantenido por Chris Sullo y publicado bajo licencia GPL. Su repositorio oficial se encuentra en github.com/sullo/nikto y la documentación original en cirt.net/Nikto2.
El escáner lanza peticiones HTTP contra el objetivo y compara las respuestas con una base de datos de más de 6 700 elementos potencialmente peligrosos. En concreto, Nikto detecta:
- Ficheros y directorios peligrosos: backups accesibles (
.bak,~), paneles de administración expuestos (/phpmyadmin,/wp-admin), ficheros de configuración con credenciales (config.php.bak,.env), archivos de instalación olvidados. - Versiones de software obsoletas: Apache, Nginx, IIS, PHP, OpenSSL y centenares de aplicaciones web conocidas.
- Configuraciones inseguras: cabeceras HTTP ausentes o mal configuradas (X-Frame-Options, Content-Security-Policy, Strict-Transport-Security), métodos HTTP peligrosos habilitados (PUT, DELETE, TRACE), listado de directorios activo.
- Problemas SSL/TLS: certificados caducados, cifrados débiles, protocolos obsoletos (SSLv3, TLS 1.0).
- Problemas específicos de CGI y de aplicaciones comunes (WordPress, Joomla, Drupal, etc.).
Si quieres entender el contexto de muchas de estas vulnerabilidades, consulta nuestra guía del OWASP Top 10, que cubre las categorías de riesgo más frecuentes en aplicaciones web.
Instalación de Nikto
En Kali Linux (y derivados Debian/Ubuntu)
Nikto viene preinstalado en Kali Linux. Si por alguna razón no está disponible, instálalo con:
sudo apt update
sudo apt install nikto -y
Verifica la versión instalada:
nikto -Version
Instalación manual desde el repositorio (cualquier Linux/macOS)
Nikto está escrito en Perl, por lo que necesitas Perl instalado (perl -v para comprobarlo):
git clone https://github.com/sullo/nikto.git
cd nikto/program
perl nikto.pl -Version
En sistemas basados en Debian que carezcan de Perl:
sudo apt install perl libnet-ssleay-perl openssl -y
En Windows (con Perl instalado)
Instala Strawberry Perl y luego clona el repositorio como se indica arriba. Ejecuta con perl nikto.pl en lugar de nikto.
Uso básico de Nikto: ejemplos reales
La sintaxis fundamental es nikto -h <objetivo>. El objetivo puede ser una IP, un hostname o una URL completa.
Escaneo básico de un host
# Escaneo de un laboratorio local (DVWA, OWASP WebGoat, etc.)
nikto -h http://192.168.1.100
# Con URL completa (respeta la ruta base)
nikto -h https://lab.ejemplo.local
Especificar un puerto concreto
Por defecto Nikto usa el puerto 80 (HTTP) o 443 (HTTPS). Para escanear puertos no estándar:
# Puerto alternativo HTTP
nikto -h http://192.168.1.100 -p 8080
# Múltiples puertos de una sola vez
nikto -h 192.168.1.100 -p 80,443,8080,8443
Guardar el informe en HTML
nikto -h http://192.168.1.100 -o informe.html -Format htm
Otros formatos disponibles: txt, csv, xml, json.
Forzar SSL/HTTPS
nikto -h https://192.168.1.100 -ssl
Control del tipo de pruebas con -Tuning
El parámetro -Tuning permite seleccionar qué categorías de pruebas ejecutar. Esto reduce el tiempo de escaneo y el ruido generado:
# Solo buscar ficheros interesantes (categoría 3) y software desactualizado (1)
nikto -h http://192.168.1.100 -Tuning 13
# Todas las categorías (comportamiento por defecto)
nikto -h http://192.168.1.100 -Tuning x
Consulta la tabla completa de opciones más abajo.
Evasión básica de WAF (solo en entornos autorizados)
# Codificación de URL para evadir filtros simples
nikto -h http://192.168.1.100 -evasion 1
Tabla de opciones principales de Nikto
| Opción | Qué hace |
|---|---|
-h <host> |
Define el objetivo (IP, hostname o URL). Parámetro obligatorio. |
-p <puerto> |
Puerto o lista de puertos separados por coma. |
-ssl |
Fuerza el uso de HTTPS aunque el host no esté en el puerto 443. |
-o <fichero> |
Guarda los resultados en el fichero indicado. |
-Format <fmt> |
Formato del informe: txt, csv, htm, xml, json. |
-Tuning <x> |
Selecciona categorías de prueba (ver valores más abajo). |
-evasion <n> |
Técnicas de evasión de IDS/WAF (1=codif. URL, 2=dir. aleat., etc.). |
-useproxy |
Enruta el tráfico por el proxy definido en nikto.conf (ej. Burp Suite). |
-id <usuario:pass> |
Autenticación HTTP básica. |
-timeout <s> |
Segundos de espera por respuesta (por defecto 10). |
-update |
Actualiza la base de datos de plugins y tests desde cirt.net. |
-Version |
Muestra la versión de Nikto y la de sus plugins. |
Valores de -Tuning: 0 = file upload; 1 = interesting files; 2 = misconfiguration; 3 = information disclosure; 4 = injection (XSS/Script); 5 = remote file retrieval (inside webroot); 6 = denial of service; 7 = remote file retrieval (server-wide); 8 = command execution; 9 = SQL injection; a = authentication bypass; b = software identification; c = remote source inclusion; x = reverse tuning (everything except selected).
Ejemplo práctico en laboratorio: DVWA sobre VirtualBox
Solo para sistemas propios o con autorización escrita. En este ejemplo usamos DVWA (Damn Vulnerable Web Application) corriendo en una máquina virtual de VirtualBox con IP 192.168.56.101.
Paso 1 – Comprueba que el laboratorio está activo
curl -I http://192.168.56.101/
# Debe devolver HTTP/1.1 200 OK o redirección a /dvwa/
Paso 2 – Escaneo completo con informe HTML
nikto -h http://192.168.56.101 -o dvwa-scan.html -Format htm
El escaneo tarda entre 2 y 10 minutos según la velocidad de red y el número de plugins activos.
Paso 3 – Interpretación del informe
Nikto numera cada hallazgo con su identificador OSVDB (aunque la base OSVDB esté discontinuada, el número sirve de referencia). Presta atención a:
- Líneas que empiezan por
+ OSVDB-XXXX:o+ /ruta:: indican un hallazgo. - La sección Server al inicio, que muestra la cabecera
Server:con la versión del servidor. - Las advertencias sobre cabeceras de seguridad ausentes.
Un resultado típico en DVWA se parece a esto:
+ Server: Apache/2.4.38 (Debian)
+ OSVDB-3268: /dvwa/: Directory indexing found.
+ /dvwa/config/config.inc.php: PHP config file may contain database IDs and passwords.
+ OSVDB-3092: /dvwa/setup.php: This might be interesting...
+ /dvwa/login.php: Cookie PHPSESSID created without the httponly flag
Cada uno de esos hallazgos es un punto de partida para la fase de explotación controlada en el laboratorio.
Si quieres profundizar en la explotación manual de estos vectores, te recomendamos nuestro curso completo de hacking web y la guía de hacking web para principiantes.
Integrar Nikto con Burp Suite
Puedes enrutar el tráfico de Nikto a través de Burp Suite para capturar y analizar manualmente cada petición:
# 1. Arranca Burp Suite con el proxy en 127.0.0.1:8080
# 2. Lanza Nikto apuntando al proxy
nikto -h http://192.168.56.101 -useproxy http://127.0.0.1:8080
Así podrás ver en el historial de Burp todas las peticiones que Nikto genera, reproducirlas, modificarlas y usarlas como punto de partida para pruebas manuales más profundas. Lee nuestra guía de Burp Suite para configurarlo correctamente.
Límites de Nikto que conviene conocer
Nikto es una herramienta de reconocimiento automatizado, no un sustituto de un pentesting profesional. Sus límites más importantes:
- Es extremadamente ruidosa. Nikto no hace ningún intento de pasar desapercibida: genera centenares de peticiones en pocos minutos. Cualquier IDS/IPS o WAF mínimamente configurado la detectará y bloqueará. No conviene usarla en entornos donde se quiera medir la detección de la defensa sin alertar.
- Alta tasa de falsos positivos. Muchas de sus alertas se basan en la presencia de rutas o cadenas específicas, sin validar que el recurso sea realmente vulnerable. Conviene verificar siempre los hallazgos a mano.
- No hace fuzzing de parámetros. Nikto no descubre vulnerabilidades en la lógica de negocio, inyecciones SQL complejas, IDOR ni la mayoría de vulnerabilidades que requieren autenticación o flujos de varios pasos. Para eso hace falta Burp Suite u otras herramientas especializadas.
- Base de datos no siempre actualizada. Ejecuta
nikto -updateperiódicamente para sincronizar los plugins con las últimas vulnerabilidades conocidas. - Sin análisis de JavaScript ni de APIs REST. Las aplicaciones de página única (SPA) o las APIs JSON quedan fuera de su alcance principal.
Buenas prácticas y errores comunes
- Documenta siempre la autorización. Antes de lanzar cualquier escaneo guarda por escrito (correo, contrato, acuerdo de alcance) la autorización del propietario del sistema.
- Usa
-Tuningpara reducir ruido. Un escaneo completo sobre un servidor de producción puede generar alertas de seguridad reales en el equipo del cliente. Acuerda el alcance previamente. - Combina Nikto con otras herramientas. El flujo recomendado en un pentest web es: Nmap (descubrimiento de puertos) → Nikto (reconocimiento automático) → Burp Suite (análisis manual). Nikto nunca debe ser el único escáner.
- No confundas «no encontrado» con «no existe». Si Nikto no detecta una vulnerabilidad no significa que el servidor sea seguro; solo significa que no está en su base de datos o que el WAF bloqueó las pruebas.
- Error frecuente: escanear sin especificar SSL. Si el servidor redirige de HTTP a HTTPS y no usas
-sslo la URL conhttps://, Nikto escaneará solo la respuesta de redirección y el informe será prácticamente vacío.
Vídeo recomendado
Si prefieres ver Nikto en acción antes de instalarlo, este vídeo del canal The WhiteHat Panther recorre el escáner paso a paso en español dentro de un curso de hacking ético:
Preguntas frecuentes
¿Nikto es legal en España?
Nikto es una herramienta legal. Lo que puede ser ilegal es su uso. El artículo 197 bis del Código Penal español tipifica el acceso no autorizado a sistemas informáticos con penas de hasta tres años de prisión. Puedes usar Nikto libremente en sistemas que posees, en laboratorios virtuales (DVWA, HackTheBox, TryHackMe) o en auditorías para las que tengas autorización escrita del propietario.
¿Cuánto tarda un escaneo con Nikto?
Depende del número de tests habilitados, la latencia de red y la velocidad de respuesta del servidor. En un laboratorio local, un escaneo completo suele tardar entre 2 y 5 minutos. Contra servidores remotos con alta latencia o WAF que ralentiza las respuestas, puede superar los 20-30 minutos.
¿Nikto puede evadir un WAF?
Nikto incluye el parámetro -evasion con varias técnicas básicas (codificación de URL, inserción de directorios aleatorios, etc.), pero en general es una herramienta muy ruidosa que los WAF comerciales detectan con facilidad. No está pensada para la evasión; para eso existen herramientas más especializadas. En un pentest real, el uso de Nikto suele asumirse como una fase ruidosa de reconocimiento inicial.
¿Nikto detecta vulnerabilidades en WordPress?
Sí, parcialmente. Nikto detecta versiones desactualizadas de WordPress, plugins comunes expuestos, la ruta /wp-admin accesible y algunas configuraciones inseguras. Para un análisis profundo de instalaciones WordPress, en cambio, conviene usar WPScan, que tiene una base de datos específica de plugins, temas y usuarios de WordPress.
¿Puedo usar Nikto en Bug Bounty?
Depende de las reglas del programa. Muchos programas de Bug Bounty prohíben explícitamente el uso de escáneres automatizados o limitan el número de peticiones por minuto. Lee siempre las reglas de alcance (scope y rules of engagement) antes de lanzar cualquier herramienta automática. En caso de duda, usa primero herramientas pasivas o manuales.
Conclusión
Nikto es una herramienta habitual en la caja de herramientas de cualquier profesional de la seguridad web. Su instalación es sencilla, su curva de aprendizaje es baja y en cuestión de minutos puede revelar problemas que de otro modo costarían horas de revisión manual. Úsalo como primera capa de reconocimiento, combínalo con Burp Suite para el análisis manual en profundidad y, sobre todo, practica siempre en entornos controlados y con autorización explícita.
Para ir más allá del reconocimiento automatizado, explora nuestro curso de hacking web y aprende a explotar manualmente las vulnerabilidades que herramientas como Nikto ponen en evidencia.
