Muchos programadores se enfocan en la seguridad en el código que escriben y ésto en ocasiones hace que pasen por desapercibidos otros elementos que hay que tomar en cuenta.
Sobre todo en la administración del servidor donde residirá dicho sistema como en el caso de OEIDRUS.
Nota: No se darán detalles completos de la vulnerabilidad hasta que los administradores corrijan los fallos.
Objetivo: La Oficina Estatal de Información para el Desarrollo Rural Sustentable de Baja California Sur (OEIDRUS de BCS) y el Sistema Nacional de Trámites de la Secretaría de Medio Ambiente y Recursos Naturales (SINAT de SEMARNAT)
Herramientas: Google y un pseudo-decodificador sencillo de md5.
Alcances: Acceder a respaldos de todas las tablas de la base de datos del sistema, y decodificar las contraseñas de los usuarios.
OEIDRUS
Buscando un poco en un rato de ocio, he dado con las 5 tablas de la base de datos (ignoro si tienen más) que usa la OEIDRUS, que es la Oficina Estatal de Información para el Desarrollo Rural Sustentable de Baja California Sur.
En alguna de esas bases de datos me he encontrado con las tablas que contienen la información de usuarios y contraseñas, aunque éstas últimas están codificadas en (un débil) md5, he llegado a observar contraseñas en texto plano.
Pasando por alto toda la información que puede ser accedida, cabe denotar y es un punto vital que las contraseñas tienen una encriptación simple, el sistema está hecho en php, y éste permite encriptar con su propio código a md5 y sha1. md5 es una encriptación simple, y desde hace años se le considera muerto, mientras que sha1 es un poco más fuerte, pero aunque no se le considera muerto, si moribundo.
Aunque no se tenga herramientas para encriptar en otros métodos, se puede usar algo de imaginación, como encriptar a md5, tomar el resultado y encriptarlo de nuevo, y concatenar los 2 resultados.
Ésto al menos haría más difícil dar con la contraseña.
Los hashes
Las colisiones de hash, aunque no fueron usadas en éste caso, nos demuestran que varias palabras pueden dar como resultado el mismo hash, dando la oportunidad de acceder sin conocer la contraseña original, es por ello que un buen método sería para encriptar las contraseñas 2 tipos de encriptacion.
Pudiendo quedar por ejemplo un hasheo de md5 concatenado a un hasheo de sha1, o tomando la mitad de cada uno, o por ejemplo invertir la contraseña y después hashearla y concatenarla, disminuyendo con ésto la posibilidad de una colisión.
En éste caso se encontraron codificaciones simples, y usando un pseudo decodificador me ha permitido conocer la contraseña de la mayoria de los usuarios pues éstos usaban palabras de 4 caracteres, además de que eran palabras comunes, y en algunos casos, palabras comunes cambiando una letra (como por ejemplo casa cambiada a kasa).
Las contraseñas que no pudieron ser decodificadas por el método simple fueron aquellas de los administradores del mismo sistema, aunque en total estuve 1 hora haciendo pruebas, si se intenta por más tiempo ¿tales contraseñas llegarán a resistir?
Una vez más el eslabón débil fue el usuario común, aunado a errores de los administradores.
Otra cosa a tomar en cuenta es que nunca se debe colocar información sensible en los directorios que son accedidos al sistema, pues aunque no se vinculen desde la página, éstos son indexados por los buscadores, y en ocasiones no sirve de mucho agregar un disallow al robots.txt si se dejan otros rastros de información.
Notificación sin respuesta
He enviado un mensaje a los administradores del sistema, ignoro si lo recibieron pues usé el formulario que la misma página tiene, y al darle enviar… el frame se ha quedado en blanco, las 2 veces.
En cuanto al Sistema Nacional de Trámites solo ha tenido el problema principal que el OEIDRUS pero sin los problemas de las bases de datos.
Cuándo uno entra al sitio del Sistema Nacional de Trámites, se encuentra con una página para iniciar sesión, utilizando una simple búsqueda de Google, podemos acceder vía la vulnerabilidad anteriormente usada, que aunque en éste caso no da acceso a información de la base de datos, si nos muestra todas las carpetas de los estados, así como los documentos que en ellas residen.
En cuanto sea solucionado publicaré los métodos usados en éste ejemplo.
Y en ningún caso publicaré los datos a los cuales tuve acceso.
Solo dí con ésto, avisé, y lo tomaré como ejemplo con motivos educativos.
5 Comentarios
Anonymous · 11 abril, 2010 a las 00:33
Ni a quien le interese meterse a ese sistema feo. Te sorprenderias si supieras cuantos sitios de gobierno son vulnerables, sobretodo porque no los mantienen. Nada del otro mundo amigo. Pero que bueno que te emociones.
Angelinux Slack · 11 abril, 2010 a las 00:46
La sorpresa radica en el error que cometieron, y no se cuantos sitios del gobierno son vulnerables, si sabes la cantidad exacta, explicación y demostración de los fallos te lo agradecería, junto con los pocos que se lleguen a interesar a meterse en los sistemas que llamas feos.
Agradezco tu visita y tu comentario.
NaCL-u2
Oscar · 22 septiembre, 2010 a las 13:14
Y no han corregido los fallos?
Me interesa saber cómo es que se hallan estos errores, y no por ser un rata o algo asi, sino más bien por aprender.
Saludos
Angelinux Slack · 22 septiembre, 2010 a las 14:30
Pues por lo que veo, aún no.
En éstos días haré un espacio y mostraré el método, que por cierto es muy simple.
Oscar · 30 septiembre, 2010 a las 16:19
ok, estaré pendiente
😀