«WWWBoard» es un script en perl, desarrollado por Matthew M. Wright, que permite la creación de foros de discusión en páginas web (http://www.worldwidemart.com/scripts/wwwboard.shtml). Para la administración del foro se utiliza la autentificación mediante un nombre de usuario y su correspondiente contraseña. Por defecto «WWWBoard» trae como nombre de usuario «WebAdmin» y la contraseña «WebBoard».
Aquí ya encontramos el primer fallo, aunque el programa recomienda el cambio de contraseña nada más entrar, sería más conveniente que forzara a introducir al administrador un nombre de usuario y contraseña en vez de proporcionar éstas por defecto.
Pero esto no deja de ser una anécdota, ya que el principal problema surge cuando, siguiendo las recomendaciones, optamos por introducir un nuevo nombre de usuario y contraseña. Por defecto, «WWWBoard» almacena la información de la cuenta en el fichero «passwd.txt» con la contrase_a cifrada utilizando la funci¢n Unix crypt(3) que utiliza una variaci¢n del DES. Hasta aqu¡ todo correcto, si no fuera porque este fichero es accesible desde un simple navegador con una sencilla URL tipo: http://www.servidor.com/wwwboard/passwd.txt
Una vez accesible la cuenta del administrador del foro, en una l¡nea tipo [usuario]:[contrase_acifrada], el descubrir la contrase_a est al alcance de cualquiera y s¢lo depende de la pericia del atacante y la calidad de la contrase_a. Basta contar con algunas de las moltiples utilidades a tal efecto y un buen diccionario de posibles contrase_as.
La soluci¢n para los administradores se presenta trivial, basta con mover el fichero a otro directorio no accesible desde web, renombrarlo si se quiere, y modificar la l¡nea: [$passwd_file = «passwd.txt»;] para que apunte a la nueva ubicaci¢n.
Recordemos que la funci¢n crypt de Unix utiliza la cadena que se pasa de par metro como clave para realizar el cifrado de un bloque de 64 bits puestos a cero, y repite la operaci¢n 25 veces volviendo a cifrar el resultado. Este proceso nos da 64 bits que se representan con 11 caracteres, a los que hay que sumar lo que se conoce como «salt», que es un nomero de 12 bits que proviene del reloj del sistema, utilizado durante el proceso de cifrado. La «salt» es representada por dos caracteres, y se sitoa delante de la contrase_a cifrada, con lo que el resultado final ser una cadena de 13 caracteres, como por ejemplo: «GiBzoWz4Y6E1A».
En teor¡a no existe forma de poder invertir el algoritmo de cifrado. Para poder descubrir una contrase_a cifrada con esta funci¢n, lo que se hace es comparar el resultado de cifrar posibles contrase_as con la contrase_a cifrada que queremos descubrir. Si el resultado coincide, se habr alcanzado el objetivo. Para realizar esta operaci¢n existen utilidades creadas a tal efecto, que ejecutan a gran velocidad las operaciones, a partir de las posibles contrase_as de diccionarios de palabras y/o haciendo moltiples combinaciones.
M s informaci¢n:
WWWBoard:
http://www.worldwidemart.com/scripts/wwwboard.shtml
BugTraq:
http://www.securityfocus.com/…/100000@puffer.quadrunner.com
Bernardo Quintero
NOTICIAS HISPASEC