Nikto es una herramienta muy utilizada por quienes realizan actividades de ethical hacking y pentest o test de penetración. Nikto se puede ejecutar cualquier plataforma que permita ejecutar Perl y puede evadir sistemas de detección de intrusos (IDS).
Nikto sirve para realizar el control de vulnerabilidades CGI, pero lo hace de una manera evasiva, con el fin de eludir los sistemas de detección de intrusos. Viene con documentación completa que debe ser cuidadosamente revisado antes de ejecutar el programa. Si tiene servidores web que sirven scripts CGI, Nikto puede ser un excelente recurso para el control de la seguridad de estos servidores.
Nikto tiene capacidad de identificar archivos potencialmente vulnerables o peligrosos, también puede identificar que hace o que servicios utiliza la aplicación que esta escaneando y también utiliza una base de datos con vulnerabilidades conocidas que contienen información para reconocer estas amenazas durante el escaneo.
Nikto es una herramienta que permite hace un análisis de un servidor web y examinar todos los archivos y servicios para encontrar posibles amenazas y vulnerabilidades de seguridad, incluyendo:
- Configuraciones erróneas del servidor y del software utilizado
- Identificar archivos y vulnerables predeterminados
- Identificar archivos y software vulnerables
Nikto puede ser utilizado para escanear las versiones no actualizadas de los software que tenemos instalado en nuestro servido. Nikto nos brindara un análisis rápido para encontrar los archivos y programas potencialmente vulnerables en nuestro servidor o en nuestro sitio web.
Para ejecutar el Nikto necesitamos que nuestro servidor soporte Perl, en la mayoría de los casos lo soporta por defecto. Está disponible para todos los sistemas operativos como Linux, Unix, CentOS, Debian, Ubuntu, MacOSX. Windows y soporta SSL.
El resultado de escanear el servidor, es un reporte que pode generase en los siguientes formatos TXT, CSV para Excel, HTML, XML.
Podemos instalar Nikto descargandolo desde el repositorio de GitHUB Nikto
Luego descomprimimos el archivo descargado:
tar zxvf nikto-2.1.4.tar.gz cd nikto-2.1.4Ejecutamos con Perl:
perl nikto.plSi tenemos un sistema operativo como Ubuntu, Nikto se instala desde los repositorios:
sudo apt-get install niktoA continuación actualizamos de la base de datos Nikto para acceder a la base de datos de escaneo y actualizar la lista de plugins disponibles.
nikto update
nikto -list-plugins
Nikto actualiza periódicamente sus repositorios para añadir versiones de cada uno y actualizar nuevas vulnerabilidades que van surgiendo. Como lo haría un antivirus, en este caso el repositorio utilizado por Nikto es la base de datos de vulnerabilidades en la web http://osvdb.org/
Escanearemos un servidor web utilizando para este tutorial, una instalación de BadStore que utilizamos en otro tutorial.
Comenzaremos escaneando una ip y el puerto 80 con la opción -p (port) para indicar el puerto a escanear
nikto -h 192.168.0.12 -p 80
Mientras se realiza el escaneo nos mostrará información de vulnerabilidades que luego podemos buscar por su código en la pagina de Open Source Vulnerability Database (OSVDB) y ver de que se trata la vulnerabilidad y como solucionarla, por ejemplo, tenemos el código OSVDB-27487, vamos a la pagina de búsqueda e ingresamos el código numérico y hacemos clic en GO.
El resultado será un reporter muy completo sobre la vulnerabilidad, incidencias, soluciones al problema y estadísticas sobre cantidad de casos donde se ha detectado, inclusive la ultima fecha que se detecto la vulnerabilidad a gran escala.
A continuación escanearemos la integridad de archivos utilizando los siguiente parámetros:
- d = modo de depuración
- v = mostrar detalles
- h = host a escanear
niktol -D v -h 192.168.0.12
Después del escaneo podemos observar que se encuentran errores en archivos o enlaces no encontrados en la web. Podemos incluir distintas opciones en cada escaneo como por ejemplo indicar que tarea queremos realizar, veremos solo algunos de los parámetros mas importantes para detectar vulnerabilidades.
3 - Divulgación de información
4 - Inyección XSS y Javascript
6 - Denegación de Servicio Scan
9 - Inyección SQL
A continuación haremos un ejemplo con la opción 3 para determinar que información tenemos publica mediante el siguiente comando:
nikto -Tuning 3 -h 192.168.0.12
Podemos observar que el escaneo ha encontrado algunas vulnerabilidades, que podrían permitir ataques XSS, donde se podría tomar el control remoto del servidor, en especial porque se permite el listado de algunos directorios.
También este tipo de vulnerabilidad es debido a que las URL con parámetros no se controlan:
http://midominio/?seccion=miseccion&opcion=101La solución seria hacer url mas amigables y controlar los parámetros que se envían.
Un ataque que se podría realizar es incluir un código JavaScript capaz de leer las cookies del servidor y así tratar de obtener los datos de administrador, como por ejemplo:
http://midominio/?seccion=<script>alert(document.cookie)</script>&opcion=101
Quiero probar Nikto, tiene buena pinta la verdad. Yo he usado otros para estas tareas de scan, ya os contaré.