jueves, 25 de agosto de 2011

CMS Fingerprinting – II


En el anterior post vimos cómo tratar de identificar un portal web y su versión, principalmente mediante análisis de contenido dinámico como metatags y cookies. En esta ocasión vamos a ver cómo funciona el fingerprinting web basado en contenido estático.

El fingerprinting web de contenido estático se basa en los directorios y ficheros estáticos, como imágenes, txt, html, JavaScript, etc, así como en sus hashes. ¿Qué es un hash? Un hash no es más que el resultado de una serie de operaciones matemáticas cuya finalidad es identificar de forma casi unívoca a un único documento, texto, etc. Se basan en que, para una única salida, no deberían existir dos entradas distintas. Esto quiere decir que, un hash dado, identifica únicamente a un fichero concreto.

Para poder identificar las distintas versiones de un sistema CMS primero es necesario realizar diversas acciones:
  • Descargar las versiones de las que se desea realizar la tabla de fingerprinting
  • Calcular los hashes de los ficheros estáticos, preferiblemente de aquellos que aparezcan de forma más específica y, por tanto, más significativa según la versión
  • Intentar limpiar recursos no accesibles normalmente, como aquellos correspondientes a zonas de administración
Una vez se haya realizado dicha acción se tendrá algo parecido a lo siguiente (la imagen es de Patrick Thomas, autor de BlindElephant):


Disponiendo ya de la tabla de directorios, recursos y sus respectivos hashes, sólo queda intentar obtener los ficheros que sean necesarios para identificar correctamente la versión, tal y como se ve en la siguiente imagen:



Como ejemplo, vamos a utilizar blind elephant para tratar de identificar la versión de Wordpress utilizada por un sitio aleatorio.

Lo primero que haremos será listar los CMS que BlindElephant es capaz de detectar, para ello podremos ejecutar z0mbiehunt3r@ph0b0s:~/pentesting/www/blindelephant/$ ./BlindElephant.py -l y veremos dicha lista. 
Para intentar detectar la versión de Wordpress utilizada de la forma más exacta posible ejecutamos BlindElephant con el comando z0mbiehunt3r@ph0b0s:~/pentesting/www/blindelephant$ ./BlindElephant.py http://tastykitchen.com/ wordpress

Después de obtener unos pocos ficheros, 15 por defecto, comportamiento que podemos cambiar mediante el argumento -n , se nos muestran los resultados obtenidos mediante análisis de ficheros estáticos, tal y como vemos a continuación:


Como hemos visto, BlindElephant es una buena opción a la hora de tratar de identificar la versión de algunos gestores de contenido. Espero que os sirva.

No hay comentarios:

Publicar un comentario