elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 05:45  


Tema destacado: Nueva página de elhacker.net en Google+ Google+

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits
| | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | |-+  (In)seguridad en los foros [SMF]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: (In)seguridad en los foros [SMF]  (Leído 6,951 veces)
‭lipman


Desconectado Desconectado

Mensajes: 2.872



Ver Perfil WWW
(In)seguridad en los foros [SMF]
« en: 14 Julio 2010, 10:23 »

Los foros de la gente de simplemachines son de los más usados actualmente. No me extrañaría que fuese por la combinación diseño-características-gratis que reune este tipo de foros. Pero, ¿que hay de la seguridad?



Actualmente, la gran mayoria de personas asegura que usa la misma contraseña para todo (correo, registros de foros, y otras cuentas de mayor importancia como eBay o Paypal/Alertpay, etc) debido a la dificultad que supone tener que cuidar y guardar las diferentes contraseñas. Sin embargo, a pesar de esta incomodidad, la seguridad siempre debería de ser lo primordial para el usuario, sobre todo para el más inexperto (osease, la inmensa mayoria de usuarios).

Cuando instalamos en un servidor un foro (en este caso del tipo SMF) lo primero que hace es mirar la base de datos, y crear allí un registro, en donde a lo largo de la vida del foro se guardarán los posts, los subforos, las configuraciones, y los datos de los usuarios.

¿Los datos de los usuarios? Si. Esto es, los datos que tenemos en nuestro perfil del foro, como el avatar, el nickname, el nombre, la fecha de nacimiento, la firma, y la contraseña.

El administrador de cualquier foro puede acceder a la base de datos y ver/modificar/eliminar cualquiera de los datos anteriormente citados. Simplemachines piensa en todo (al igual que todos las empresas de ese estilo) y la mejor solución que le pone a esto es, cifrar la “contraseña”. Le pongo comillas, porque en realidad, no se guarda la contraseña, sino que se guarda un hash, generado mediante el nombre de usuario y contraseña. Esto quiere decir que, cuando nos registramos, se guarda en la base de datos la cifrado mediante SHA1 del nombre de usuario junto con la contraseña.

Por ejemplo, si me registro, y pongo de usuario lipman y de contraseña password, en la base de datos se guarda la cifrado de lipmanpassword, de la siguiente simple manera:

Código
sha1($nombreUsuario . $password)

Por lo que, cuando un administrador acceda a la base de datos, le será imposible obtener la contraseña de ese usuario. La única solución seria desencriptarlo mediante fuerza bruta, pero descartamos esta opción debido al inmenso tiempo que se tomaria.

¿Quiere decir esto que nuestra contraseña está a salvo?
Absolutamente no.

Se podrían hacer cientos de métodos distintos e incluso combinarlos, para averiguar las contraseñas de los usuarios que se registren. El más sencillo que se me ocurre es: justo al registrarse un usuario, guardar en la base de datos su contraseña sin cifrar. A continuación describiré cómo se podría realizar.



Lo primero de todo, tenemos que crear en la base de datos la columna en la que guardaremos estas contraseñas sin cifrar:

Código borrado por el autor



Queremos que este código se ejecute una sola vez, por eso, este código se encarga de buscar un archivo que no deberia de existir, y si no lo encuentra, realiza esa alteración en la base de datos y posteriormente lo crea (para que lo encuentre y no se ejecute esto nada más que una sola vez)



Las variables $db_server, $db_user, $db_name y $db_passwd son variables que contienen, como propiamente dan a indicar, el nombre del servidor, de usuario, de la base de datos y la contraseña respectivamente. Ya se encuentran con los valores, ya que estos se guardan en Settings.php

La línea interesante es la sexta: $consulta = “ALTER TABLE `$db_name`.`smf_members` ADD COLUMN `pwdlol` TEXT AFTER `memberName`;”;

Esto crea en la tabla smf_members una columna llamada pwdlol después de la columna memberName (así tendremos la contraseña al lado del usuario, por comodidad)



Sigamos…

Código borrado por el autor

Este código simplemente guarda en las variables $contrasenha y $miembrouser la contraseña y el nombre de usuario (todo sin cifrar) y luego, introduce la contraseña en la tabla de pwdlol, en donde el memberName sea el mismo que el miembro registrado.



Preocupamente tengo que decir: ya está. Así de simple es obtener la contraseña de cada usuario que se registre en tu propio foro SMF.



¿Es esto preocupante? Personalmente, solo espero que cada vez que os registreis en un foro la próxima vez, penseis en ponerle otra contraseña que la de vuestro correo.

Próximo análisis: PhpBB

Fuente: http://delanover.com/2010/07/14/inseguridad-en-los-foros-smf/

Agradezco cualquier opinión, comentario, duda o sugerencia.
« Última modificación: 19 Julio 2010, 12:50 por ‭lipman » En línea

Twitter: jmlipman

http://delanover.com

Busco redactores para mi blog.
madpitbull_99
Moderador Global
***
Desconectado Desconectado

Mensajes: 1.898



Ver Perfil WWW
Re: (In)seguridad en los foros [SMF]
« Respuesta #1 en: 14 Julio 2010, 11:33 »

Si quieres ver la seguridad en foros SMF solo mira la auditoria de seguridad que se hizó aqui en elhacker.net : Simple Audit

PD: por que citas como fuente tu proprio blog ? xD
« Última modificación: 14 Julio 2010, 11:35 por madpitbull_99 » En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
‭lipman


Desconectado Desconectado

Mensajes: 2.872



Ver Perfil WWW
Re: (In)seguridad en los foros [SMF]
« Respuesta #2 en: 14 Julio 2010, 11:37 »

Tal vez porque lo he escrito yo?
En línea

Twitter: jmlipman

http://delanover.com

Busco redactores para mi blog.
invisible_hack


Desconectado Desconectado

Mensajes: 981


Invisible_Hack™ Nick Registrado ^^


Ver Perfil WWW
Re: (In)seguridad en los foros [SMF]
« Respuesta #3 en: 14 Julio 2010, 22:30 »

En cuanto al tutorial, muy bien hecho, muy currado y bien explicado, se entiende muy fácil  :D

Pero, no creo que esto pudiese considerarse un "bug" de SMF (ya que lo posteaste en esta sección), porque en realidad lo que estás haciendo es modificando el código fuente del SMF para que te de la password del usuario descifrada y tal, pero no es un bug en sí mismo...

No sé si me entiendes...

Aunque quizás, tiene que ver con la seguridad de SMF...pero no sé, yo no lo consideraría bug... :P

Por otra parte, si realmente lo que quieres es ver lo que tiene el usuario en su cuenta, puedes cambiarle su password por otra que tu quieras, y listo...

Pero evidentemente, sin saber su password anterior...

De todos modos, lo único para lo que se me ocurre que podría valer esto es para hacer un "scam", y si queremos sacarle la password en cuestión al usuario, por si usa la misma password en otro sitio...

Pero nah, tendría que ser un usuario muy desprevenido para usar la misma password en varios sitios... :xD
« Última modificación: 14 Julio 2010, 22:32 por invisible_hack » En línea

"Si no visitas mi blog, Chuck te dará una patada giratoria"
Debci
Wiki

Desconectado Desconectado

Mensajes: 1.945


Actualizate o muere!


Ver Perfil WWW
Re: (In)seguridad en los foros [SMF]
« Respuesta #4 en: 14 Julio 2010, 22:34 »

Asi cualquier foro es inseguro xD

Saludos
En línea

braulio--
Wiki

Desconectado Desconectado

Mensajes: 889


Imagen recursiva


Ver Perfil WWW
Re: (In)seguridad en los foros [SMF]
« Respuesta #5 en: 14 Julio 2010, 22:42 »

Si esto es una vulnerabilidad, la tienen todos los CMS que existen.
En línea

‭lipman


Desconectado Desconectado

Mensajes: 2.872



Ver Perfil WWW
Re: (In)seguridad en los foros [SMF]
« Respuesta #6 en: 14 Julio 2010, 23:18 »

@invisible_hack

Con respecto lo primero xD en realidad lo posteé en el subforo de Seguridad ^^u me lo movieron a este, ya que como dices, es una modificación del propio código y yo tampoco consideraria bug esto, pero weno ^^

Con respecto lo segundo... no es que "queramos" saber lo que tiene dentro, como los mensajes privados y tal (que entonces, sí que podriamos hacer eso que tu dices de cambiarle la contraseña) El objetivo es averiguar la contraseña con la que nuestro usuario se registra, para poder verla y así, poder usarla en un futuro.

Todos sabemos lo fácil que es rastrear a una persona a partir de nick, correo, nombre-apellido, etc, y una vez rastreada la persona, esta puede tener cuentas de facebook, en foros, en blogs, etc. Y, el problema de la gran mayoria de users, es el uso que le dan a la contraseña, que ponen en todos lados la misma ^^ Simplemente queria demostrar (algo obvio por otra parte) otro modo de ver lo inseguro que es registrarse en un varios sitios con la misma contraseña, porque te la pillan en uno, y se pueden meter en todos =P

@Debci @braulio
Si.. es obvio xD el administrador puede modificar a su antojo absultamente todo, pero mi objetivo con es te (y los posteriores que haga) no es mostrar propiamente la inseguridad de un foro smf sin más, sino el objetivo es concienciar, de lo fácilmente que un administrador de cualquier sistema que requiera un registro, puede obtener la contraseña. De esta manera, nos concienciamos un poco todos en dejar de usar la misma pass para todo ^^
En línea

Twitter: jmlipman

http://delanover.com

Busco redactores para mi blog.
braulio--
Wiki

Desconectado Desconectado

Mensajes: 889


Imagen recursiva


Ver Perfil WWW
Re: (In)seguridad en los foros [SMF]
« Respuesta #7 en: 14 Julio 2010, 23:30 »

Me conformo, está muy bien explicado.
Buen trabajo.
En línea

Debci
Wiki

Desconectado Desconectado

Mensajes: 1.945


Actualizate o muere!


Ver Perfil WWW
Re: (In)seguridad en los foros [SMF]
« Respuesta #8 en: 14 Julio 2010, 23:34 »

Que conste que en ningun momento he querido ofender a nadie, no me tienes que convencer de que es inseguro, ni de que es un exelentisimo tutorial ;)

Saludos
En línea

‭lipman


Desconectado Desconectado

Mensajes: 2.872



Ver Perfil WWW
Re: (In)seguridad en los foros [SMF]
« Respuesta #9 en: 14 Julio 2010, 23:40 »

Que dices! ^^ nadie se ha ofendido  :)

Gracias por los comentarios!
En línea

Twitter: jmlipman

http://delanover.com

Busco redactores para mi blog.
jdc


Desconectado Desconectado

Mensajes: 3.253


janito dos cuatro...


Ver Perfil WWW
Re: (In)seguridad en los foros [SMF]
« Respuesta #10 en: 15 Julio 2010, 01:33 »

Lipman bastante simpático, pero creo que sería mejor que no hicieras un tutorial xD por último omite el código para que sí algún pelotudo sigue tu idea por lo menos tenga que pensar algo.
 
Ahora, algún tiempo he administrado foros y creo firmemente que la confianza es lo principal y este tipo de cosas hace que se pierda. Mucha gente en sus sistemas guardan la contraseña sin cifrar y sí smf la cifra por defecto, no deberías enseñar como no hacerlo.
 
Ojo te lo digo con harto respeto.
 
Saludos
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: (In)seguridad en los foros [SMF]
« Respuesta #11 en: 15 Julio 2010, 02:11 »


Citar
Por ejemplo, si me registro, y pongo de usuario lipman y de contraseña password, en la base de datos se guarda la cifrado de lipmanpassword, de la siguiente simple manera:


Código
sha1($nombreUsuario . $password)

Por lo que, cuando un administrador acceda a la base de datos, le será imposible obtener la contraseña de ese usuario.

Y que pasa si otro usuario accede a la DB, quisieras que tenga todas las contraseñas, asi de facir?


Citar
Se podrían hacer cientos de métodos distintos e incluso combinarlos, para averiguar las contraseñas de los usuarios que se registren. El más sencillo que se me ocurre es: justo al registrarse un usuario, guardar en la base de datos su contraseña sin cifrar
No funcionara ya que lo que hace es comparar el dato con el que esta en la DB...
Osea, se ingresa el password a la DB sin cifrar y cuando el usuario digita su password se pasa a md5 y se verifica si los dos datos son iguales, si tienes tu password registrado en la DB sin cifrar, al comprobarlo no seran lo mismo, salvo que no use ningun tipo de encriptacion xD...
Ej:
Código
<?php
$valordelusuario = md5(123456);
$valor_sin_sifrar_de_la_db = 123456;
if($valordelusuario == $valor_sin_sifrar_de_la_db){
echo "Password Correcto";
exit;
}
echo "Password Incorrecto";
exit;
 
?>

Siempre los password serán incorrecto...
En línea

jdc


Desconectado Desconectado

Mensajes: 3.253


janito dos cuatro...


Ver Perfil WWW
Re: (In)seguridad en los foros [SMF]
« Respuesta #12 en: 15 Julio 2010, 06:40 »

Claro, la idea sería agregar un nuevo campo a la db y guardar en ese la clave, asi se tendría en la db el usuario, el pass cifrado y el pass sin cifrar, pero como dijeron por ahí esto se puede hacer en cualquier cms abierto en el cual el usuario tenga acceso a la db y a los archivos fuente del sistema.
 
Insisto en que es mejor no facilitar el trabajo a gente sin ética, lo mejor es que sí quieren hacer pelotudeses que se quiebren el coco
En línea

madpitbull_99
Moderador Global
***
Desconectado Desconectado

Mensajes: 1.898



Ver Perfil WWW
Re: (In)seguridad en los foros [SMF]
« Respuesta #13 en: 15 Julio 2010, 10:32 »

Tal vez porque lo he escrito yo?

Da igual , no lo has entendido...
En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
‭lipman


Desconectado Desconectado

Mensajes: 2.872



Ver Perfil WWW
Re: (In)seguridad en los foros [SMF]
« Respuesta #14 en: 15 Julio 2010, 10:34 »

@Yoya
El código funciona perfectamente, he hecho muchísimas pruebas y es indiscutible su funcionamiento xD

Fíjate, que hago 2 cosas:
-La primera, creo en la base de datos una fila nueva (para meter ahí la contraseña sin cifrar)
-La segunda, hago que se guarde (junto con la contraseña cifrada) la contraseña sin cifrar.

Si no hiciera esto, tendría que cambiar el método que usa SMF para loguearse también, y esto es más complicado (pero se podría hacer)

@Janito
Tienes toda la razón, me hiciste recapacitar un poco, y he decidido quitar los códigos el lunes que viene (para que así vean aunque sea el trabajo que hice durante unos dias) y lo mismo haré cuando postee los siguientes  :D

Un saludo y gracias!

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

@madpitbull_99
Es fácil de entender, al ser el autor del post, lo pongo de primeras en mi página y luego aquí. Por otro lado, está el tema de la "responsabilidad" y prefiero que caiga la responsabilidad de este post en mi, que en este foro. No te lo digo con mala intención ^^

Saludos!
En línea

Twitter: jmlipman

http://delanover.com

Busco redactores para mi blog.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Foros seguridad informática?
Seguridad
gregory90 2 659 Último mensaje 7 Junio 2011, 01:18
por gregory90
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines