domingo, 19 de septiembre de 1999

Cientos de sitios web afectados por una vulnerabilidad en WWWBoard

Una vulnerabilidad en "WWWBoard" permite acceder a las
contraseñas de los administradores de estos foros a
través de una sencilla URL. A pesar de que este fallo ha
saltado a la luz en distintas listas de seguridad, hemos
podido comprobar como a día de hoy la gran mayoría de los
sitios siguen vulnerables.
"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 múltiples 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 número de 12 bits que proviene
del reloj del sistema, utilizado durante el proceso de cifrado.
La "salt" es representada por dos caracteres, y se sitúa 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 múltiples combinaciones.

Más información:
WWWBoard
Bugtraq



Bernardo Quintero