lunes, 27 de agosto de 2007

Rainbow Tables......

Primero reconocer que he sido un 'Script Kiddie', al menos en este caso.

El otro dia comente los website politicos, y deje caer que dos usaban el CMS Joomla, he aqui que vi un exploit el otro dia, y decidi probarlo....

?option=com_simplefaq&task=answer&Itemid=9999&catid=9999&aid=-1/**/union/**/select/**/0,username,password,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/**/from/**/jos_users/*

Y si, funcionaba....


El uso de gestores de contenido opensource, tiene un problema, y es que cuando se describe una vulnerabilidad, lo normal es que haya centenares de sitios que tras su puesta en marcha se dejan a su aire, y estas vulnerabilidades estan accesibles en estos websites... hasta que llega alguien que las explota.

En los gestores propietarios, como no hay auditoria de codigo posible, pues solo es el uso de herramientas de injeccion de codigo, y estudiar los resultados. SQLNinja.. buena herramienta,

Un consejo, el truco no esta en injectar codigo correcto, sino en generar errores que permitan identificar el funcionamiento, y ha partir de la informacion recolectada generar la injeccion correcta. Vamos que en vez de intentar ejecutar un SQL correcto, lo primero que hay que hacer es generar sentencias incorrectas, para que los posibles errores mostrados den pistas de la estructura, tablas, tuplas, etc. En los ASP es una maravilla, aunque con los .NET hay ahora restricciones para no generar codigo de error, y por supuesto no usar IE, que enmascara los errores, FireFox u Opera.

En este caso el exploit, 'solo' y repito lo de 'solo', muestra el listado de usuarios y sus hash (MD5) de sus contraseñas. Al menos en estos CMS, la codificacion de los passwords esta encriptada, es muy habitual sin embargo en los desarrollos no OpenSource que el almacenamiento de los passwords sea en texto plano, no se piensa en la seguridad, no conoces las tecnicas de injecion de codigo Sql... etc.

En cualquier buscador probar ha buscar '%', meter un 'union y sentencias SQL', es de cachondeo, cuando no pasan como parametro el numero de registros a devolver por pagina, esto es habitual en Navarra Diario..

Volviendo al tema y titulo.

Tras verificar la posibilidad de recuperar esa informacion de usuario/hash, entra en accion las Rainbow Tables. Estas es realmente una base de datos de hash ya calculados, y se basa en disponiendo del hash, buscar en las tablas la clave que ha generado el Hash. Ocupan un poco de espacio (hablamos de Gbytes), pero funcionan ahorrando tiempo de computacion.

En el website que era accesible, la de administrador era fuerte, ya que no aparecia calculada, todavia..., pero el resto de usuarios eran sencillas, por no decir otra cosa, asi que siempre el problema esta en los usuarios, la fortaleza de sus contraseñas. Yo no permitiria que un usuario se asignase su contraseña, se la generaria, asignaria y si quiere cambiar, que esta sea robusta, al tipo que actualmente hay formularios que via JavaScript te validan esa 'robustez'. Solo verifican que el campo de password, tenga xx letras y xx numeros, siendo bueno tambien que se añadan caracteres tipograficos "asin" _-./($) Que tambien tienen su problema, cuando ves al usuario su teclado. Es mejor una contraseña larga, y rapida de teclear tambien. No vale una contraseña con simbolos raros, que obliga al usuario a tenerla apuntada en el monitor, raton o teclado, que las hay. ¿Conoceis el termino 'mesa despejada' en seguridad informatica? ...

Hay diversos websites que permiten la consulta de los hash, asi como herramientas que con tus propias tablas generadas/compartidas buscar el resultado.

Para que nos pueden servir las Rainbow Tables, pues para recuperar password perdidas, tanto en un sistema Windows, Linux, MySql, siempre claro que tengamos disponibles el acceso a los fichero SAM, o HASH de las contraseñas. Como hay diversos algoritmos de calculo, obviamente hay diversos tipos de tablas calculadas para cada tipo de metodo, MD5, LM, etc...

Peticiones a San Google....

Ya no esta accesible la vulnerabilidad, asi que por eso la publico, no perdais el tiempo, buscar otros websites.

No hay comentarios.:

Publicar un comentario