Crawling pasivo usando Google Hacking

A la hora de auditar una aplicación web son muchos los recursos que nos ayudan a hacernos un mapa mental de la web que debemos investigar. Muchas de estas herramientas generan mucho ruido en los logs ya que utilizan fuerza bruta y un listado de directorios/archivos, esto puede hacer saltar las alarmas de un administrador, por lo que yo no suelo utilizarlas (La fuerza bruta es siempre mi último recurso). En este caso vamos a ver como utilizando dorks de Google podemos conseguir muy buenos resultados y descubrir lugares que a priori estaban ocultos en la aplicación.

Aclarar que este post se basa en como yo lo hago y que como en todo cada maestrillo tiene su librillo, así que si utilizas otras técnicas te animo a compartirlas en los comentarios.

Para este ejemplo utilizaremos como objetivo la web del congreso de los diputados ( www.congreso.es ) y partiremos de la base de que desconocemos totalmente la tecnología que usa, sus subdirectorios, subdominios, etc...



Identificación de tecnología/as que utiliza la aplicación:



Un paso importante en la fase de reconocimiento es conocer la tecnología que utiliza la aplicación. Para estos casos un operador muy útil que nos ofrece Google es 'ext', su uso es muy simple 'ext:[extensión_archivo]'.



Como se puede ver en la imagen buscando por la extensión php no encontramos ningún resultado, por lo que seguimos probando con diferentes extensiones hasta que se muestre lo que buscamos (asp, aspx, html, jsp, jsf...). En este caso Google nos devuelve resultados para jsp y html:


Con esta información ya podemos hacernos una idea de la tecnología que usa, una aplicación java con vistas en html corriendo en un servidor de aplicaciones que pasaríamos a identificar.

Listado de subdominios



Para listar los subdominios la forma mas sencilla es buscar en el sitio todo lo que tenga la estructura .dominio.com y excluir www, para esto haremos uso del operador ' - ' que nos sirve para excluir resultados de la búsqueda. Consiguiendo así listar todas las URL que sigan la estructura deseada y descartando www.


Para mayor comodidad podemos ir eliminando los resultados que ya hemos encontrado para asegurarnos que hemos anotado todos los subdominios relacionados a un dominio, para esto simplemente tendríamos que ir descartando los resultados ya conocidos con el operador ' - ', por ejemplo si ya conocemos los subdominios movil, serviciosdocumentales e intranet el dork sería el siguiente:




Y seguiríamos el proceso hasta que ya no encontremso nuevos subdominios.

Listado de páginas, archivos y directorios


Siguiendo el método anterior de listado y descarte podemos extraer todas las páginas que utiliza la aplicación, ademas utilizaremos el operador inurl para mostrar los archivos bajo un determinado directorio, por ejemplo partiendo del dork del primer apartado vamos a extraer todos los archivos con esta extensión bajo el dominio principal (Y se haría lo mismo para cada subdominio). Añadir que si somos meticulosos con nuestra búsqueda podemos conseguir un mapa de directorios y archivos sin haber hecho ni una sola request a la aplicación web.

El procedimiento que yo sigo consiste en listar en primer lugar todos los archivos como en el primer apartado. A continuación anotar todos los directorios principales dentro del webroot e ir profundizando en cada uno de ellos hasta que tengo una lista de directorios y subdirectorios. Por último empezar las búsquedas de forma inversa pero esta vez anotando los archivos.

Para poner un ejemplo partimos del primer resultado del dork site:www.congreso.es ext:jsp el cual nos devuelve la url www.congreso.es/consti/portal/enlaces.jsp‎ como en este primer paso nos vamos a fijar exclusivamente en los directorios dejando a parte los archivos anotamos la url hasta el primer directorio www.congreso.es/consti/ y procedemos a construir el nuevo dork que nos devolverá los resultados con el contenido de este directorio site:www.congreso.es ext:jsp inurl:/consti/


A partir de aqui es cuestión de ir copiando, ordenando y descartando resultados repetidos hasta conseguir una lista de todos los directorios con una estructura similar a la siguiente:



Finalmente para listar ademas todos los archivos podemos construir dorks que nos listen el contenido general de cada uno de los directorios o apuntarlo a archivos con una extensión concreta:
site:www.congreso.es inurl:/dir1/dirD/dirAB/ [ext:<extensión_a_buscar>]


Por último decir que todos estos datos se pueden combinar con las búsquedas en otros buscadores como bing o archive.org y el análisis del archivo robots.txt que siempre esconde alguna sorpresa.

Espero que os sea de utilidad.




0 comentarios:

Publicar un comentario en la entrada

ShellShock Labs es un blog dedicado a seguridad y hacking en general, un lugar donde buscamos que la gente participe con sus opiniones.

Síguenos




Posts Populares