Table of Contents
Nikto: una vulnerabilidad de aplicación web y un escáner CGI para servidores web
Nikto Web Scanner. es otra buena herramienta para el arsenal de cualquier administrador de Linux. Es un escáner web de código abierto publicado bajo la licencia GPL, que se utiliza para realizar pruebas exhaustivas en servidores web para varios elementos, incluidos más de 6500. archivos. CGI potencialmente peligrosos..
Lectura sugerida: WPSeku: un escáner de vulnerabilidades para encontrar problemas de seguridad en WordPress
Está escrito por Chris Solo. y David Lodge. para la evaluación de Vulnerabilidad. comprueba si hay versiones desactualizadas en servidores web 1250. y más de 270. problemas específicos de la versión. También escanea e informa en busca de complementos y software de servidor web obsoletos.
Características de Nikto Web Scanner
- Admite SSL
- Admite proxy HTTP completo
- Admite texto, HTML, XML y CSV para guardar informes.
- Escanear en busca de múltiples puertos
- Puede escanear en múltiples servidores tomando entradas de archivos como salida de nmap
- Admite IDS de LibWhisker
- Lo suficientemente capaz de identificar el software instalado con encabezados, archivos y favicons
- Registros de Metasploits
- Informes de “inusuales” encabezados.
- Apache y enumeración de usuarios cgiwrap
- Autenticar hosts con Basic y NTLM
- Los análisis se pueden pausar automáticamente en un momento específico.
Requisitos de Nikto
Un sistema con la instalación básica de Perl. Módulos Perl. OpenSSL. debe habilitar Nikto. para correr. Se ha probado exhaustivamente en Windows. Mac OSX. y varias distribuciones de Unix. Linux. como Red Hat. Debian. Ubuntu. BackTrack. etc.
Instalación de Nikto Web Scanner en Linux
La mayoría de los sistemas Linux actuales vienen con paquetes Perl. Módulos Perl. y OpenSSL. preinstalados. Si no están incluidos, puede instalarlos usando la utilidad de administración de paquetes del sistema predeterminada llamada yum. o apt-get.
En Red Hat/CentOS/Fedora [[email protegido]] # yum instalar perl perl-Net-SSLeay openssl En Debian/Ubuntu/Linux Mint [[email protected]] # apt-get install perl openssl libnet-ssleay-perl
A continuación, clone el último estable Nikto. archivos fuente de su repositorio Github, muévase al directorio Nikto/programmes/ y ejecútelo usando perl:
$ git clone https://github.com/sullo/nikto .git $ cd nikto/programas $ perl nikto.pl-h Ejemplo de opción de salida el host requiere un argumento-config + Use este archivo de configuración-Display + Activar/desactivar salidas de pantalla-dbcheck comprobar la base de datos y otros archivos clave para errores de sintaxis-Formato + guardar archivo (-o) formato-Help Información de ayuda extendida-host + host de destino-id + Autenticación de host para usar, el formato es id: pass o id: pass: realm-list-plugins Muestra todos los complementos disponibles-output + Escribe la salida en este archivo-nossl Desactiva el uso de SSL-no404 Desactiva las comprobaciones 404-Plugins + Lista de complementos para ejecutar (predeterminado : TODOS)-puerto + Puerto a usar (predeterminado 80)-root + Anteponer el valor raíz a todas las solicitudes, el formato es/directorio-ssl Forzar el modo ssl en el puerto-Tuning + Scan tuning-timeout + Timeout para solicitudes (predeterminado 10 segundos)-update Actualizar bases de datos y complementos de CIRT.net-Versión Complemento de impresión y versiones de base de datos-vhost + Host virtual (para el encabezado del Host) + requiere un valor Nota: Esta es la salida de ayuda breve. Utilice-H para el texto de ayuda completo. freestar.config.enabled_slots.push
El “ host opcional requiere un argumento. dice claramente que no incluimos los parámetros necesarios mientras realiza una prueba. Por lo tanto, necesitamos agregar un parámetro básico necesario para hacer una ejecución de prueba.
Pruebas básicas
El escaneo básico requiere un host al que desea apuntar, de forma predeterminada, escanea el puerto 80. si no se especifica nada. El host puede ser un nombre de host. o una dirección IP. de un sistema. Puede especificar un host usando la opción “-h. .
Por ejemplo, quiero hacer un escaneo en una IP 172.16.27.56. en TCP puerto 80.
[[email protected] nikto-2.1.5] # perl nikto.pl-h 172.16.27.56 Salida de muestra-Nikto v2.1.5—————————————————————————+ IP de destino: 172.16.27.56 + Nombre de host de destino: example.com + Puerto de destino: 80 + Hora de inicio: 2014-01-10 00:48:12 (GMT5.5)—————————————————————————+ Servidor: Apache/2.2.15 (CentOS) + Encabezado x-powered-by recuperado: PHP/5.3.3 + El anti-clickjacking El encabezado X-Frame-Options no está presente. + El servidor filtra inodos a través de ETags, encabezado encontrado con el archivo/robots.txt, inodo: 5956160, tamaño: 24, mtime: 0x4d4865a054e32 + El archivo/dir ‘/’ en robots.txt devolvió un código HTTP no prohibido o redireccionado (200) + “robots.txt” contiene 1 entrada que debe visualizarse manualmente. + Apache/2.2.15 parece estar desactualizado (el actual es al menos Apache/2.2.22). Apache 1.3.42 (versión final) y 2.0.64 también están actualizados. + Se han encontrado varios archivos de índice: index.php, index.htm, index.html + El verbo HTTP DEBUG puede mostrar información de depuración del servidor. Consulte http://msdn.microsoft.com/en-us/library/e8z01xdh%28VS.80%29.aspx para obtener más detalles. + OSVDB-877: el método HTTP TRACE está activo, lo que sugiere que el host es vulnerable a XST + OSVDB-3233:/phpinfo.php: contiene información de configuración de PHP + OSVDB-12184:/index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000: PHP revela información potencialmente confidencial a través de ciertas solicitudes HTTP que contienen cadenas de consulta específicas. + OSVDB-3092:/test.html: Esto podría ser interesante … + OSVDB-3268:/icons/: Se encontró indexación de directorios. + OSVDB-3233:/icons/README: Se encontró el archivo predeterminado de Apache. +/connect.php?path=http://cirt.net/rfiinc.txt ?: Se encontró una cadena de conexión de base de datos PHP MySQL potencial. + OSVDB-3092:/test.php: Esto podría ser interesante … + 6544 elementos comprobados: 0 error (s) y 16 elementos informados en el host remoto + Hora de finalización: 2014-01-10 00:48: 23 (GMT5.5) (11 segundos)—————————————————————————+ 1 host (s) probado
Si desea escanear en un número de puerto diferente, luego agregue la opción “-p. [-port. . Por ejemplo, quiero escanear la IP 172.16.27.56. en el puerto TCP 443.
[[email protected] nikto-2.1.5] # perl nikto.pl-h 172.16.27.56-p 443 Salida de muestra-Nikto v2.1.5—————————————————————————+ IP de destino: 172.16.27.56 + Nombre de host de destino: example.com + Puerto de destino: 443—————————————————————————+ Información SSL: Asunto:/O=*.mid-day.com/OU=Domain Control Validated/CN = *. mid-day.com Cifrados: DHE-RSA-AES256-GCM-SHA384 Emisor:/C = US/ST = Arizona/L = Scottsdale/O = Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber = 10688435 + Hora de inicio: 2014-01-10 01:08:26 (GMT5.5)—————————————————————————+ Servidor: Apache/2.2.15 (CentOS) + El servidor filtra inodos vi a ETags, encabezado encontrado con archivo/, inodo: 2817021, tamaño: 5, mtime: 0x4d5123482b2e9 + El encabezado anti-clickjacking X-Frame-Options no está presente. + Apache/2.2.15 parece estar desactualizado (el actual es al menos Apache/2.2.22). Apache 1.3.42 (versión final) y 2.0.64 también están actualizados. + El servidor está utilizando un certificado comodín: ‘* .mid-day.com’ + Métodos HTTP permitidos: GET, HEAD, POST, OPTIONS, TRACE + OSVDB-877: El método HTTP TRACE está activo, lo que sugiere que el host es vulnerable a XST + OSVDB-3268:/icons/: Se encontró la indexación de directorios. + OSVDB-3233:/icons/README: Se encontró el archivo predeterminado de Apache. + 6544 elementos comprobados: 0 error (s) y 8 elementos informados en el host remoto + Hora de finalización: 2014-01-10 01:11:20 (GMT5.5) (174 segundos)—————————————————————————+ 1 host (s) probado
También puede especificar hosts. puertos. y protocolos. usando una sintaxis de URL. completa, y será escaneada.
[[email protected] nikto-2.1.5] # perl nikto.pl-h http ://172.16.27.56: 80
También puede escanear cualquier sitio web. Por ejemplo, aquí hice un escaneo en google.com.
[[email protected] nikto-2.1.5] # perl nikto.pl-h http://www.google.com Salida de muestra-Nikto v2.1.5—————————————————————————+ IP de destino: 173.194.38.177 + Nombre de host de destino: www.google.com + Puerto de destino: 80 + Hora de inicio: 2014-01-10 01:13:36 (GMT5 .5)—————————————————————————+ Servidor: gws + PREF de cookie creado sin el indicador httponly + NID de cookie creado sin el indicador httponly + Poco común encabezado ‘x-frame-options’ encontrado, con contenido: SAMEORIGIN + Se encontró un encabezado poco común ‘x-xss-protection’, con contenido: 1; mode = block + Se encontró un encabezado poco común ‘protocolo alternativo’, con contenido: 80: quic + Página raíz/redirecciones a: http://www.google.co.in/?gws_rd=cr&ei=xIrOUomsCoXBrAee34DwCQ + El banner del servidor ha cambiado de ‘gws’ a ‘sffe’, lo que puede sugerir que hay un WAF, balanceador de carga o proxy en su lugar + Se encontró un encabezado poco común ‘x-content-type-options’, con contenido: nosniff + No se encontraron directorios CGI (use ‘-C all’ para forzar la verificación de todos los directorios posibles) + Archivo/dir ‘/grupos/’ en robots.txt devolvió un código HTTP no prohibido o redirigido (302)….
El comando anterior realizará un montón de solicitudes http (es decir, más de 2000. pruebas) en el servidor web.
Prueba de puertos múltiples
También puede realizar un escaneo de puertos múltiples en la misma sesión. Para escanear varios puertos en el mismo host, agregue la opción “-p. [-port. y especifique la lista de puertos. Los puertos se pueden definir como un rango (es decir, 80-443. o como una coma separada (es decir, 80,443. . Por ejemplo, quiero escanear los puertos 80. y 443. en el host 172.16.27.56.
[[email protected] nikto-2.1.5] # perl nikto.pl-h 172.16.27.56-p 80,443 Salida de muestra-Nikto v2.1.5—————————————————————————+ No se encontró ningún servidor web en cmsstage.mid-day.com:88—————————————————————————+ IP de destino: 172.16.27.56 + Nombre de host de destino : example.com + Puerto de destino: 80 + Hora de inicio: 2014-01-10 20:38:26 (GMT5.5)—————————————————————————+ Servidor: Apache/2.2.15 (CentOS) + Encabezado x-powered-by recuperado: PHP/5.3.3 + El encabezado anti-clickjacking X-Frame-Options no está presente.—————————————————————————+ IP de destino: 172.16.27.56 + Nombre de host de destino: example.com + Puerto de destino: 443—————————————————————————+ Información SSL: Asunto:/O=*.mid-day.com/OU=Domain Control Validated/CN = *. Mid-day. com Cifrados: DHE-RSA-AES256-GCM-SHA384 Emisor:/C = US/ST = Arizona/L = Scottsdale/O = Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN = Autoridad de certificación segura de Starfield/serialNumber = 10688435 + Hora de inicio: 2014-01-10 20:38:36 (GMT5.5)—————————————————————————+ Servidor: Apache/2.2.15 (CentOS) + Todos los directorios CGI ‘encontrados’, use ‘-C none’ para probar ninguno + Apache/2.2.15 parece estar desactualizado (el actual es al menos Apache/2.2. 22). Apache 1.3.42 (versión final) y 2.0.64 también están actualizados. ….. Usando un proxy
Digamos que un sistema en el que Nikto. se está ejecutando solo tiene acceso al host de destino a través de un proxy HTTP. la prueba aún puede ser realizado de dos formas diferentes. Una es usar el archivo nikto.conf. y otra forma es ejecutar directamente desde la línea de comando.
Usando el archivo Nikto.conf
Abra nikto .conf. usando cualquier editor de línea de comando.
[[email protected] nikto-2.1.5] # vi nikto.conf
Busque la variable “ PROXY. y descomente el ‘ #. desde el principio de las líneas como se muestra. Luego, agregue el host de proxy. el puerto. el usuario de proxy. y la contraseña. Guarde y cierre el archivo.
# Configuración de proxy-aún debe habilitarse mediante-useproxy PROXYHOST = 172.16.16.37 PROXYPORT = 8080 PROXYUSER = pg PROXYPASS = pg
Ahora, ejecute Nikto. mediante la opción “-useproxy. . Tenga en cuenta que todas las conexiones se transmitirán a través del proxy HTTP.
[email protected] nikto-2.1.5] # perl nikto.pl-h localhost-p 80-useproxy Salida de muestra-Nikto v2.1.5—————————————————————————+ IP de destino: 127.0.0.1 + Nombre de host de destino: localhost + Puerto de destino: 80 + Hora de inicio: 2014-01-10 21:28:29 (GMT5.5)—————————————————————————+ Servidor: squid/2.6.STABLE6 + Recuperado a través del encabezado: 1.0 netserv: 8080 (squid/2.6.STABLE6) + El anti-clickjacking X-El encabezado Frame-Options no está presente. + Se encontró un encabezado poco común ‘x-squid-error’, con contenido: ERR_CACHE_ACCESS_DENIED 0 + Se encontró un encabezado poco común ‘x-cache-lookup’, con contenido: NONE de netserv: 8080 Usando la línea de comandos
Para ejecutar el Nikto. directamente desde la línea de comando usando la opción “-useproxy. configurando el proxy como argumento.
[email protected] nikto-2.1.5] # perl nikto.pl-h localhost-useproxy http://172.16.16.37:8080/Salida de muestra-Nikto v2.1.5—————————————————————————+ IP de destino : 127.0.0.1 + Nombre de host de destino: localhost + Puerto de destino: 80 + Hora de inicio: 2014-01-10 21:34:51 (GMT5.5)—————————————————————————+ Servidor: squid/2.6.STABLE6 + Recuperado a través del encabezado: 1.0 netserv: 8080 (squid/2.6.STABLE6) + El encabezado anti-clickjacking X-Frame-Options no está presente. + Se encontró un encabezado poco común ‘x-squid-error’, con contenido: ERR_CACHE_ACCESS_DENIED 0 + Se encontró un encabezado poco común ‘x-cache-lookup’, con contenido: NINGUNO de netserv: 8080 Actualizando Nikto
Puede actualizar Nikto. a los complementos. y bases de datos. más recientes automáticamente, simplemente ejecute el comando “-update. .
[[email protected] nikto-2.1.5] # perl nikto.pl-update
Si hay nuevas actualizaciones disponibles, verá una lista de nuevas actualizaciones descargadas.
+ Recuperando ‘nikto_report_csv.plugin’ + Recuperando ‘nikto_headers.plugin’ + Recuperando ‘nikto_cookies.plugin’ + Recuperando ‘db_tests’ + Recuperando ‘db_parked_strings’ + Recuperando ‘CHANGES.txt’ + Mensaje de CIRT.net: envíe los errores de Nikto a http://trac2.assembla.com/Nikto_2/report/2
También puede descargar y actualizar manualmente los complementos y bases de datos de Nikto desde http://cirt.net/nikto/UPDATES/.
Enlaces de referencia
Página de inicio de Nikto