El Tamiz

Antes simplista que incomprensible

Sin foro

Como puede que os hayáis dado cuenta, el foro no está activo, y hemos retirado el enlace de la barra de navegación. Esta breve entrada es para explicar por qué. La razón es que, al parecer, la extensión que utilizaba el foro tenía una vulnerabilidad y mi estupidez en la elección de contraseña (que no tenía mayúsculas ni caracteres especiales, por ejemplo) ha supuesto que fuera posible conseguirla.

Fabio, un lector habitual de El Tamiz, nos ha mostrado esta vulnerabilidad de la manera más clara: entrando con mi usuario en el panel de control del blog y escribiendo el borrador de un artículo que explica cómo lo ha hecho (aunque, francamente, a mí la explicación me supera). Afortunadamente la intención era sólo avisarnos del problema, de modo que ya he desactivado el foro, responsable del “agujero” de seguridad, y he elegido una contraseña más segura.

Os dejo aquí el borrador que escribió Fabio explicando la naturaleza del “agujero”, del que me avisó, por otro lado, a través del correo electrónico:


_Hola lectores, estoy escribiendo esto desde el dashboard como si fuera Pedro (Querido Admin de El Tamiz) pero no soy el, soy un lector anonimo desde hace mucho tiempo ya de El Tamiz y aficionado a la seguridad informatica.

He logrado llegar hasta este campo de texto donde estoy escribiendo explotando un bug de las variables php que usa el foro del tamiz.

WordPress forum plugin by Fredrik Fahlstad. Version: 1.7.4.

Mediante SQL Injection logre listar elcampo user_pass de la tabla wp_users cuyo id=1 (lo normal esque el primer usuario sea el administrador), la salida de dicha consulta fue la hash md5 del password de administrador, con un diccionario y el programa crackeador Cain logre romper la hash

fue muy facil porque el admin no usaba MAYUSCULAS minusculas %$/&/($! y numeros, se que cuesta cambiar, pero intentad memorizar aunque sea siempre el mismo que sea un buen password, por teclear facilmente suceden estas cosas.

Lo demas es todo como si yo fuera el admin de wordpress asi que aqui acabo. Os mando a todos los lectores amantes de la ciencia un fuerte saludo, y os animo a que veais a la informatica no solo como una herramienta, conlleva una ciencia amplisima desde hace relativamente poco tiempo._


En fin, que lamentablemente nos quedamos sin foro hasta que encuentre una solución aceptable que no suponga un problema de seguridad. Sentimos las molestias (aunque el foro no tuviera un uso demasiado intenso), y gracias, Fabio, por avisarnos de este problema. Menos mal que hay tamiceros que saben de todo…

Blog

6 comentarios

De: Dubitador
2007-12-06 19:17:51

Ha sido una suerte que el intruso haya sido un simpatizante.

Me parece que la decision de cerrar el foro obedece antes al susto y disgusto que a la necesidad, ya que el simpatico intruso sugiere cual es la solucion respecto al problema que el aprovechó para descubrir tu contraseña de admistrador.

Sencillamente tienes que poner una contraseña mas fuerte.

GMail por ejemplo te testea la contraseña cuando abres una cuenta de email, e incluso se ofrece a generarte una.

Lo del SQL inyection es un problema de WordPress y a ese respecto solo los de WordPress pueden proveer solucion.


De: Morti
2007-12-06 21:03:02

Una suerte que haya sido un amigo del foro.

Voy a intentar explicaros con palabras sencillas cómo lo ha hecho. Lo primero ha sido conseguir el 'hash' (es decir la firma) de la contraseña a partir de la vulnerabilidad, en este caso para hacer que nos la dé el sistema se hace incluyendo en un campo de un formulario un parámetro especialmente construido para modificar los comandos que llegarán hasta la base de datos. Normalmente, tódo lo que llega desde el exterior a un servidor es filtrado y comprobado, pero a veces quedan agujeros.

Un 'hash' es un resumen generado a partir de algún contenido. Siempre un mismo contenido genera el mismo hash, pero a partir de un hash es muy difícil deducir el contenido. Primero porque el algoritmo usado busca eso, y segundo, porque cómo los hash tienen una longitud fija y funcionan sobre cualquier longitud de contenido, hay infinitos contenidos que equivalen a cada firma. Os pongo un ejemplo:

hash(HOLA)=d54eas,
hash(pedro)=sy65s2,
hash(En un lugar de la mancha)=sy65s2.

Siempre HOLA dará ese hash, y a partir de d54eas es muy difícil conseguir el contenido original. Además, hash de distintos mensejes pueden coincidir, en la jerga se le llama 'colisión'.

La razón de almacenar los hash en lugar de las contraseñas es doble, por un lado, garantiza que ni siquiera alguien con acceso a la base de datos obtenga la contraseña, y por otro, ayuda a la seguridad en las comunicaciones, porque para comprobar la contraseña, yo no tengo que enviarla en claro, basta con que envie el hash y el servidor lo compare con el otro hash. Aunque hay una pequeña posibilida de colisión suele ser despreciable.

Hasta aquí, aunque hubiéramos tenido el hash no hubiéramos podido entrar, pero si la contraseña es débil, se puede intentar usar fuerza bruta, es decir, probar si el hash que tenemos corresponde a A, B, C.... AA, AB, AC... ZA, ZZ, AAA. Cuánto más sencilla sea la clave, antes daremos con ellas. En este caso, para hacerlo rápido, se ha recurrido a un diccionario de hashes, algo así cómo una guia telefónica inversa, dónde ya están introducidos todos los casos típicos (pocas letras, palabras de diccionarios...) de hash.

Espero haberme explicado.

Saludos


De: joel
2007-12-07 17:30:28

Estoy de acuerdo con Dubitador, a no ser que el fallo de seguridad del plugin comprometa la privacidad de los usuarios de eltamiz (es decir, sus contraseñas).

De monento no está de más que por precaución cambiemos las contraseñas (especialmente si son débiles) como ha hecho pedro.


De: Pedro
2007-12-07 18:09:24

Probablemente tenéis toda la razón y soy un gallina, pero hasta que discuta el asunto con Geli y pasen unos días voy a dejar las cosas como están, por una razón totalmente clara: ¡tengo miedito! ;)


De: Ferran Ferri
2007-12-10 09:46:43

A proposito del Hash, empiezan a haber grandes diccionarios de hash que estan convirtiendo esta encriptacion en algo inutil, a menos que tenga caracteres alfanumericos por encima de 13 caracteres (creo que ese era el dato).

El gran problema contra el que habria que luchar no es este sino el SQL injection. En mi empresa tenemos expertos en este tipo de ataque precisamente por que se considera muy peligroso. Una vez tienes los datos el mal ya esta hecho por mucho que esten encriptados.

Ademas, el SQL injection no solo permite ver sino cambiar o borrar. Por eso creo que Pedro hace lo correcto al desactivar el foro. De hecho yo empezaria a pensar en substituir el sistema de foros por otro mas seguro.


De: Fabio
2007-12-10 16:28:48

Se pueden hacer muchas cosas para arreglar bugs, pero os puedo comentar que una contraseña de 8 caracteres o mas (con todo tipo de caracteres) es muy complicado romper.
Visitad en wikipedia el articulo Rainbow Tables, es muy interesante desde el punto de vista matematico-criptografico


Escribe un comentario

Todos los comentarios deben ser aprobados por un moderador antes de ser publicados. Si quieres puedes usar markdown. Todos los campos son opcionales excepto el cuerpo del comentario, claro:

Nombre:
E-mail: (privado, para que aparezca tu gravatar)
Sitio web:

« La vida privada de las estrellas - Supernovas de tipo II Durante la semana - Monográfico sobre informe de FECYT »