Introducción
Nikto es un escáner de vulnerabilidades web de código abierto basado en Perl que puede descubrir cualquier amenaza potencial en su servidor web, incluidos archivos y programas no seguros, servidores y programas obsoletos, configuraciones de software y servidores incorrectos, y mucho más.
Nikto puede ejecutarse en casi cualquier sistema operativo con el intérprete de Perl instalado. Admite SSL, proxy, autenticación de host, cifrado de ataque, IDS de evolución, etc.
Esta guía le muestra cómo instalar y usar Nikto en Ubuntu 18.04.
Si su intención es instalar Nikto en un servidor remoto, siga leyendo; de lo contrario, si desea instalar Nikto en su computadora local, omita el primer párrafo "Conexión al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Prerrequisitos
Para seguir este tutorial, necesitará:
- Un servidor Ubuntu 18.04 configurado siguiendo la Guía de configuración inicial del servidor para Ubuntu 18.04, que incluye un usuario no root con privilegios sudo y un firewall configurado con ufw.
Instalar Nikto
La instalación de Nikto es bastante sencilla ya que el paquete está disponible en los repositorios predeterminados de Ubuntu 18.04. Luego, ejecute los siguientes comandos para instalar Nikto.
Actualice la lista de paquetes disponibles:
sudo apt update
Actualizar paquetes disponibles:
sudo apt upgrade -y
Instalar Nikto:
sudo apt-get install nikto -y
Una vez finalizada la instalación, Nikto está listo para usar.
Uso básico de Nikto
La sintaxis básica de la línea de comandos de Nikto es la siguiente:
nikto [options...]
Cuando se ejecuta sin ninguna opción de línea de comando, muestra una descripción básica con varias opciones disponibles:
nikto
Debería recibir un mensaje de salida similar al siguiente:
- Nikto v2.1.5
---------------------------------------------------------------------------
+ ERROR: No host specified
-config+ Use this config file
-Display+ Turn on/off display outputs
-dbcheck check database and other key files for syntax errors
-Format+ save file (-o) format
-Help Extended help information
-host+ target host
-id+ Host authentication to use, format is id:pass or id:pass:realm
-list-plugins List all available plugins
-output+ Write output to this file
-nossl Disables using SSL
-no404 Disables 404 checks
-Plugins+ List of plugins to run (default: ALL)
-port+ Port to use (default 80)
-root+ Prepend root value to all requests, format is /directory
-ssl Force ssl mode on port
-Tuning+ Scan tuning
-timeout+ Timeout for requests (default 10 seconds)
-update Update databases and plugins from CIRT.net
-Version Print plugin and database versions
-vhost+ Virtual host (for Host header)
+ requires a value
Note: This is the short help output. Use -H for full help text.
Iniciar Nikto Web Scan
El comando básico de Nikto solo requiere un anfitrión. El host de destino se puede especificar con la opción -h o -host, por ejemplo, para escanear un servidor web cuya dirección IP es 192.168.99.99, ejecute nikto de la siguiente manera:
nikto -host 192.168.99.99
Nikto escanea el puerto 80 de forma predeterminada. Sin embargo, si el servidor web se ejecuta en un puerto diferente, debe especificar el puerto utilizando la opción -p o -port. Entonces:
nikto -h 192.168.99.99 -p 8080
Puede especificar varios puertos separándolos con una coma.
nikto -h 192.168.99.99 -p 8080,8888
También puede especificar un rango de puertos en el formato port1-port, por ejemplo:
nikto -h 192.168.99.99 -p 8080-8888
En lugar de utilizar la dirección IP para especificar el host de destino, también puede utilizar URL, por ejemplo:
nikto -h test.esempio.com
nikto -h https://test.esempio.com
También puede especificar el puerto cuando usa la URL:
nikto -h test.esempio.com -p 8080
nikto -h https://test.esempio.com -p 8443
O:
nikto -h test.esempio.com:8080
nikto -h test.esempio.com:8443/
En la medida en que pueda especificar hosts de destino usando la opción -p, también puede especificar un archivo que contenga una lista de hosts de destino, uno por línea. Por ejemplo, el archivo debe contener destinos en el siguiente formato:
192.168.99.99:8888
192.168.99.99
https://test.esempio.com:443/
Suponga que el archivo se llama target-host Para escanear estos hosts al mismo tiempo, ejecute el siguiente comando:
nikto -h target-host
También puede escanear hosts usando Nmap y pasar la salida a nikto. Por ejemplo, para buscar el puerto 80 abierto en una red, escriba:
nmap -p80 192.168.99.99/24 -oG - | nikto -h -
Si desea utilizar un servidor proxy, puede utilizar la opción -useproxy. Puede configurar los detalles del proxy directamente en el archivo de configuración de Nikto /etc/nikto/config.txt, o puede configurarlo desde la línea de comando.
Abra el archivo de configuración de Nikto con su editor de texto favorito, aquí usaremos nano:
sudo nano /etc/nikto/config.txt
Agregue o modifique los siguientes parámetros ingresando sus datos:
PROXYHOST=192.168.88.88
PROXYPORT=3128
PROXYUSER=nome_utente
PROXYPASS=password
Cuando termine, guarde y cierre el archivo presionando CTRL + X, seguido de Y para guardar los cambios y luego ENTER si está usando nano.
Después de definir los detalles del proxy en el archivo de configuración, ejecute nikto con el parámetro -userproxy;
nikto -h 192.168.99.99 -useproxy
Para especificar los detalles de la conexión del proxy en la línea de comando sin modificar el archivo de configuración, configure el comando de la siguiente manera:
nikto -h 192.168.99.99 -useproxy http://nome_utente:[email protected]:3128/
O:
nikto -h 192.168.99.99 -useproxy http://@192.168.70.23:3128/
Nikto puede exportar los resultados del escaneo en varios formatos; CSV, HTML, XML, NBE, texto. Para guardar los resultados en un formato de salida específico, debe especificar la opción -o /-output y la opción -Format para definir el formato de salida. Consulte los ejemplos a continuación para guardar los resultados del análisis en formato html.
nikto -h 192.168.99.99 -o test.html -F html
Nikto también se puede optimizar para realizar escaneos específicos. A continuación se muestra una descripción de las opciones de optimización que puede utilizar para lograr esta funcionalidad.
1 - Interesting File /Seen in logs
2 - Misconfiguration /Default File
3 - Information Disclosure
4 - Injection (XSS/Script/HTML)
5 - Remote File Retrieval - Inside Web Root
6 - Denial of Service
7 - Remote File Retrieval - Server Wide
8 - Command Execution /Remote Shell
9 - SQL Injection
0 - File Upload
a - Authentication Bypass
b - Software Identification
c - Remote Source Inclusion
x - Reverse Tuning Options (ie, include all except specified)
Por ejemplo, para probar la inyección SQL y la recuperación remota de archivos, ejecute el siguiente comando:
nikto -h 192.168.99.99 -Tuning 79 -o test.html -F html
Conclusión
En este tutorial ha instalado y configurado Nikto en Ubuntu 18.04. Para obtener más información sobre el uso de Nikto:
nikto -H