skipfish
DESCRIPTION
Skipfish es una aplicación que sirve para analizar plataformas web en busca de posibles vulnerabilidades. Trataremos Skipfish desde el punto de vista de sus funcionalidades, principales características y expondremos varios casos prácticos.TRANSCRIPT
![Page 1: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/1.jpg)
Sistemas de la Información Grado en Ingeniería Informática
Práctica 1: Skipfish
Jorge Colmenar Casas
Juan Sopale Thompson Víctor Puerta Rodríguez
![Page 2: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/2.jpg)
2
ÍNDICE
1. ¿Qué es Skipfish?
2. Funcionalidades
3. Características principales
4. ¿Cómo usar/ejecutar Skipfish?
5. Casos prácticos
6. Limitaciones y/o problemas encontrados
7. Conclusiones
8. Bibliografía
![Page 3: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/3.jpg)
3
1. ¿Qué es Skipfish?
Nombre: Skipfish
Version: 2.10 beta
Licencia: Apache License 2.0
Plataforma: GNU/Linux, FreeBSD, Mac OS X y Windows (mediante cygwin)
Idioma: Inglés
Web oficial: http://code.google.com/p/skipfish/
Manual: http://code.google.com/p/skipfish/w/list?can=1
Descripción básica
Skipfish es una aplicación de seguridad web desarrollada por Google con la intención
en encontrar posibles vulnerabilidades. Genera un mapa interactivo para el sitio
especificado mediante un rastreo recursivo y un diccionario basado en sondas.
Posteriormente el mapa resultante pasa por diversos controles de seguridad. El informe
final generado por la herramienta está destinado a servir como una base para la
evaluación profesional de la seguridad de aplicaciones web. Con esto Skipfish tiene
como objetivo verificar si el acceso a una determinada página es o no seguro. Skipfish
promete mucha fiabilidad debido a la poca tendencia a dar falsos positivos.
A pesar de ser multiplataforma, Skipfish está más orientado para uso en distribuciones
Linux. De hecho la distribución Backtrack 5 incorpora la herramienta como parte de sus
aplicaciones de seguridad. Por tanto este tipo de aplicación suele estar más orientado al
experto en seguridad más que a un usuario convencional.
Otro de los objetivos de la aplicación reside en ayudar al desarrollador web a realizar
aplicaciones más seguras teniendo en cuenta las consideraciones de Skipfish.
Sin embargo, Skipfish es un arma de doble filo debido a que para un atacante la
información, sobre los agujeros de seguridad de una aplicación web, proporcionada por
Skipfish puede ser muy valiosa.
![Page 4: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/4.jpg)
4
2. Funcionalidades
Realización de test para detectar defectos de bajo, medio y alto riesgo.
o Defectos de riesgo alto. Los test permiten analizar bases de datos
utilizadas por el sitio web para revisar los parámetros configurados. Del
mismo modo permite detectar errores de formato en el código del sitio
web y comprobar las conexiones http generadas.
o Defectos de riesgo medio. Test que se encargan de analizar las directivas
de cookies almacenadas en caché y los scripts CSS generados por el
usuario y que puedan generar conflictos con la visualización de la
página.
o Defectos de riesgo bajo. Test que tratan la realización análisis
relacionados con el almacenamiento de credenciales de usuarios en el
sitio web y la validez de los certificados SSL utilizados.
Detección de alertas internas.
Las alertas internas se encargan de detectar errores de búsqueda de ficheros
pertenecientes a recursos de la aplicación web y realizar filtros por IP en el
propio sitio web.
Detección de fallos en enlaces.
Facilita al usuario la búsqueda de servidores o enlaces que ya no se encuentran
disponibles o que han sido re direccionados a otro lugar y utilizando un
protocolo desconocido para el desarrollador de la web.
Análisis de seguridad de la información
Analiza el propio sitio web para buscar vulnerabilidades en los recursos
utilizados por los usuarios que acceden al portal. Se buscan irregularidades
internas en el servidor: ficheros del sitio web que no pueden ser accedidos por
los usuarios o cuya seguridad puede verse comprometida cuando es éste quien
envía dichos ficheros al portal, direcciones de correo externas que podrían no
pertenecer a un usuario de la propia aplicación, etc. Verifica la integridad y
confidencialidad de la información.
![Page 5: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/5.jpg)
5
Capacidad para evitar ataque a claves por fuerza bruta
La herramienta es capaz de detener ataques por fuerza bruta que comprometan la
seguridad de las claves de los usuarios. Por consiguiente, esta aplicación posee
mecanismos para analizar los campos de entrada de contraseñas y formularios y
evitar así los ataques.
3. Características Principales
Alta velocidad
Skipfish está desarrollado en C por lo que tiene un uso de CPU bajo. Sin
embargo, hay otros factores que aumentan la lentitud, como son el tamaño de la
página o aplicación web, la velocidad de Internet o el uso extenso de
diccionarios que son usados para rastrear cualquier directorio o fichero ubicado
en el servidor. Skipfish mejora el uso de los diccionarios.
Diseño de la interfaz
Skipfish no posee interfaz gráfica, por lo que el usuario necesita abrir una línea
de comandos para ejecutarlo. De este modo, el usuario debe conocer todos los
comandos y opciones necesarios para realizar cualquier tarea de análisis de
seguridad en su página web. Está orientado a un tipo de usuarios más avanzados,
más que al usuario convencional.
Facilidad de uso
Para comenzar, Skipfish debe ser compilado antes de proceder a su instalación.
Este proceso necesita de una serie de librerías, dependencias de la aplicación, y
esto resulta de una dificultad añadida para usuarios inexpertos acostumbrados
más a las instalaciones a base de ‘clicks’. Las librerías no son mencionadas en la
página web de Skipfish. Aunque en tutoriales de Internet si muestran las
librerías necesarias para Skipfish.
![Page 6: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/6.jpg)
6
Una vez compilado e instalado, Skipfish se ejecuta a través de comandos
introducidos por consola. Un ejemplo seria el siguiente (en Linux):
./skipfish -o <salida> -S dictionaries/<diccionario>.wl <URL>
Skipfish analizando la URL
Accesibilidad
Esta aplicación no cuenta con herramientas que ayuden a la accesibilidad de los
usuarios. Tan sólo es posible utilizar las herramientas que el sistema operativo
ofrece para tal fin. Es decir está enfocado a un tipo de usuario más avanzado y
concreto.
Multiplataforma
Puesto que Skipfish debe ser compilado antes de ser ejecutado y se encuentra escrito
en un lenguaje de programación como es C, la aplicación se encuentra disponible
para GNU/Linux, FreeBSD, Mac OS X y Windows, por lo que los usuarios podrían
utilizar este conjunto de herramientas en cualquier máquina sin ningún tipo de
problemas.
![Page 7: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/7.jpg)
7
4. Como ejecutar Skipfish
Primero son necesarias unas librerías que hay que instalar. Estas son libidn11-dev,
zlib1g-dev, libssl-dev y libcre3-dev. Después, se compila con make. Y para ejecutarlo,
le pasas como entrada el diccionario que quieres que utilice, el fichero de salida donde
quieres que guarde los resultados obtenidos y la URL de la web que quieres analizar:
./skipfish -o <salida> -S dictionaries/<diccionario>.wl <URL>
ó
./skipfish -o <salida> -W <diccionario> -S <diccionario de solo lectura>.wl <URL>
En la ayuda de la aplicación (./skipfish –h) se muestran más opciones.
5. Casos prácticos
Antes de comenzar con los casos prácticos que hemos probado, vamos a comentar
brevemente como muestra los resultados Skipfish.
Cuando la aplicación finalmente termine nos mostrará los siguientes mensajes:
Los resultados se almacenan en la carpeta que se haya especificado, solo hay que abrir
el archivo index.html para verlos, se recomienda abrir con Firefox ya que con Google
Chrome no se muestra la primera sección (Crawl results). En la parte superior derecha
tenemos más información como el tiempo que ha estado trabajando, la fecha, la versión
de Skipfish y la semilla utilizada. Un ejemplo es el siguiente:
![Page 8: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/8.jpg)
8
Podemos ver como los resultado se agrupan en 3 áreas. La primera es Crawl results, nos
permite “navegar” por el sistema de ficheros:
![Page 9: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/9.jpg)
9
Y ver donde se encuentran las mayores vulnerabilidades.
El siguiente área es “Document type overview” que nos permite ver qué tipos de
ficheros hay en el sitio web, lo más común son los ficheros html, pero también podemos
encontrar swf (flash), pdf etc.
La última área agrupa los ficheros por vulnerabilidades, desde las más graves hasta las
notas, con una pequeña explicación de la posible vulnerabilidad encontrada. Para ayudar
a la comprensión y resolución de la vulnerabilidad podemos ver cuál ha sido la petición
y cuál la respuesta del servidor dando al enlace “show traces +”. Por ejemplo esta es la
petición de la posible vulnerabilidad grave del sitio web:
Caso www.iesdionisioaguado.com
Con esta página hemos tenido una curiosa experiencia, dos de nosotros hemos probado
Skipfish contra este sitio web, y los resultados obtenidos han sido distintos, esto se ha
debido a que Skipfish detectó un error mientras trabajaba, y no entró a la sección del
departamento de matemáticas mientras que el otro de nosotros Skipfish si entró (y
encontró una vulnerabilidad grave) pero tras 10 horas de ejecución paró el programa ya
que el sitio web es muy grande. Para poder sacar los resultados de la sección de
matemáticas sin repetir todo el análisis hemos utilizado la opción “-I
http://www.iesdionisioaguado.com/matematicas” que permite que solo analice aquellos que
solo tengan en su URL el termino definido, en este caso es una URL completa por lo
que solo analizará dentro de ese directorio.
Caso http://www.urjc.es/
A continuación hemos analizado la web de nuestra Universidad. Al ser una web muy
grande, Skipfish ha estado mucho tiempo analizándola. Los resultados obtenidos son
estos:
![Page 10: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/10.jpg)
10
Para la web de la universidad, Skipfish ha detectado 4 errores graves de seguridad, 6
riesgos medios y 9 de riesgo bajo. Centrándonos primero en los riesgos graves, se
puede ver que son Shell injection. Esto significa que cualquier persona con malas
intenciones podría introducir comandos o código malicioso poniendo en serio peligro la
seguridad de la web. Más concretamente si abrimos uno de los 4 riesgos graves:
Vemos como hubo un error interno que no pudo completar la petición. En esta petición
podría haber sido ejecutado un script, comando o consola que hubiera dejado a la página
web a expensas de cualquier atacante, poniendo en compromiso el sistema entero.
Siguiendo con los riesgos medios, existen contenidos externos a la página web como
puedan ser videos, imágenes,…, que Skipfish ha considerado como riesgo. Aquí
pensamos que se da un falso positivo ya que son contenidos de la propia universidad, en
particular la unidad de prácticas externas, por lo que no son externos a ella.
![Page 11: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/11.jpg)
11
Caso www.campusvirtual.urjc.es
Nuestro tercer caso ha sido el Campus Virtual de nuestra Universidad. Los resultados
que hemos obtenido son los siguientes:
Se han encontrado 25 vulnerabilidades de riesgo medio y 283 de riesgo bajo, el campus
podría ser vulnerable a XSS (Cross-site scripting), analizando los resultados se observa
como realmente no lo es ya que lo que se trasmite es lo siguiente:
GET /webct/.htaccess.aspx-->">'>'"<sfi000097v040026>
![Page 12: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/12.jpg)
12
Sin embargo la aplicación web no coge los símbolos especiales de forma literal sino que
los transforma: /webct/.htaccess.aspx-->">'>'"<sfi000097v040026> de
forma que los símbolos necesarios para introducir código como < o > se pierden y por
tanto un intento de incorporar código al sitio web de forma ilegítima no es posible.
Caso Drupal recién instalado.
Un caso que podía ser interesante era probar un CMS recién instalado, para probar la
seguridad del CMS con la configuración por defecto.
En el resultado se nos muestra que sería posible tanto inyección SQL como inyección
por Shell, por tanto sería necesario comprobar si realmente lo es y solucionarlo para
evitar ataques maliciosos.
Caso Ministerio de Educación, Cultura y Deporte (MECD):
![Page 13: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/13.jpg)
13
En los resultados procesados por Skipfish, en el index.html, se puede apreciar todas las
posibles vulnerabilidades en la página analizada. Centrándonos en los problemas de
riesgo algo alto se puede entrever diferentes tipos de ‘inyecciones’ que pueden poner en
peligro la seguridad de la página web.
Por un lado nos encontramos que la web está expuesta a inyecciones SQL. Esto
significa que una consulta maliciosa puede poner en riesgo la integridad de la base de
datos usada por el MECD.
Al abrir una de las trazas nos encontramos con lo siguiente:
Lo anterior representa la petición realizada al servidor y la respuesta de éste. La
respuesta recibida se corresponde con un error interno generado en el servidor debido a
la prueba de inyección realizada por Skipfish. Esto puede dejar entrever que realmente
puede haber un agujero de seguridad en el aspecto de las consultas.
![Page 14: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/14.jpg)
14
Por otro lado, también encontramos posibilidad de inyección XML y Shell:
En los riesgos de nivel medio nos encontramos con lo siguiente:
No cumple con las directivas de control de la cache:
Y aquí ocurre lo mismo que en el caso de la urjc, que es un falso positivo ya que el
contenido embebido externo en principio no puede ser considerado una amenaza ya que
es de google:
![Page 15: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/15.jpg)
15
A continuación hablaremos de los warnings y las notas que salen al final del listado de
errores. Ya que en ningún ejemplo hemos hablado de ellos pero en todos significan lo
mismo.
Los warnings y las notas serian recursos no accesibles directamente, archivos ocultos, y
otros errores menores que no serían culpa de la web sino del propio skipfish que no
pudo abrir ficheros, o acceder a recursos, etc. No serian errores de seguridad
propiamente dichos sino fallos del skipfish al analizar.
6. Limitaciones y/o problemas encontrados
Una vez que aprendes los comandos de ejecución es sencillo el uso. No es intuitivo a
primera vista.
Por otro lado, otra de las grandes carencias reside en que no es fácil encontrar manuales
de uso, o al menos una guía de la aplicación para usuarios convencionales.
Depende de la conexión a Internet, de lo ocupada que esta la red, del propio pc que este
ejecutando Skipfish.
Si se cae la conexión a Internet o se produce un error al analizar se perderá el análisis y
habrá que empezarlo de nuevo.
No se pueden visualizar los resultados obtenidos hasta el momento, es necesario esperar
hasta la finalización del análisis (lo cual puede tardar horas, incluso días).
7. Conclusiones
De las ventajas de Skipfish aparte de su rendimiento y mayor fiabilidad, está en que es
multiplataforma y de código abierto. Esto supone que cualquier usuario podría realizar
mejoras sobre el código. El resultado de probar la aplicación ha sido muy satisfactorio
ya que con un simple comando y gran rendimiento somos capaces de llevar a cabo un
examen exhaustivo a una aplicación/sitio web.
Creemos que Skipfish es muy útil para buscar posibles vulnerabilidades en tus propias
aplicaciones web y de ese modo ofrecer al cliente una mejor experiencia otorgándole
una aplicación mucho más segura. Es una forma de ganarte la confianza del cliente.
![Page 16: Skipfish](https://reader034.vdocuments.co/reader034/viewer/2022052321/548632e95806b590588b4879/html5/thumbnails/16.jpg)
16
8. Bibliografía
Interpretation - The H Security: News and Features
lcamtuf’s blog: Understanding and using skipfish
skipfish: Web Security Reconnaissance Tool | Anestis Bechtsoudis
A quick-start guide to SkipFish — jumboframe.net
Analizar la seguridad de un sitio usando Skipfish | El blog de Federico Hlawaczek
Skipfish, escáner de seguridad para aplicaciones web
Skipfish Web Application Security Scanner
Skipfish Web Application Security Scanner
sectools: "Skipfish" Tester de Vulnerabilidades Web de Google!"
SkipfishDoc - skipfish - Project documentation - web application security scanner -
Google Project Hosting
[In]Seguridad Informática: Skipfish Web Application Security Scanner