FIX DE SEGURIDAD EN MODULO DE REGISTRO EN MU CORE
Paso 1:- Nos dirigimos a la carpeta donde tienen su MU Core.
- Ingresamos a la carpeta Engine y abrimos el archivo php de nombre global_fuctions.
- Presionan Ctrl + F o seleccion la herramienta Buscar y buscan lo siguiente "uss_login_check" sin las comillas.Paso 2:Reemplazamos esta parte del codigo:function uss_login_check($uss_id, $uss_password) {
function delete_variable_core($file, $line, $id, $explode) {
$p_file = file($file);
$new_db = fopen($file, "w");
foreach ($p_file as $new_db_line) {
$db_line = explode($explode, $new_db_line);
if ($db_line[$line] != $id) {
fwrite($new_db, $new_db_line);
}
} fclose($new_db);
}
global $core_db2, $core;
$uss_password = safe_input((md5_decrypt($uss_password)), "\_");
$uss_id = safe_input($uss_id, "\_");
$lg_cache_file = 'engine/cache/login/login_cache.txt';
$login_cache = file($lg_cache_file);
foreach ($login_cache as $login_info) {
$login_info = explode("|", $login_info);
if ($login_info[0] == $uss_id && $login_info[1] == md5($uss_password) && $login_info[2] - time() > 0) {
$login_cache_found = 1;
break;
}
}
if ($login_cache_found == '1') {
return true;
} else {
if ($core['config']['md5'] == '1') {
$uss_r = $core_db2->Execute("SELECT memb___id FROM MEMB_INFO where upper(memb___id) = upper(?) and memb__pwd = [dbo].[fn_md5](?,?) and bloc_code='0'", array($uss_id, $uss_password, $uss_id));
} else {
$uss_r = $core_db2->Execute("SELECT memb___id FROM MEMB_INFO where upper(memb___id) = upper(?) and upper(memb__pwd) = upper(?) and bloc_code='0'", array($uss_id, $uss_password));
} #echo $uss_r->RecordCount();
if ($uss_r->RecordCount() > 0) {
$delete_old_cache = delete_variable_core($lg_cache_file, 0, $uss_id, "|");
$open_lg_cache = fopen($lg_cache_file, 'a');
$write_lg_cache = fwrite($open_lg_cache, "" . $uss_id . "|" . md5($uss_password) . "|" . (time() + 600) . "|\n");
$close_lg_cache = fclose($open_lg_cache);
$login_success = 1;
} else {
$login_success = 0;
} return $login_success > 0 ? true : false;
}
}
Por este codigo:function uss_login_check($uss_id, $uss_password) {
global $core_db2, $core;
$uss_password = safe_input((md5_decrypt($uss_password)), "\_");
$uss_id = safe_input($uss_id, "\_");
#Usando MD5 En la DB
if ($core['config']['md5'] == '1') {
$uss_r = $core_db2->Execute("SELECT memb___id FROM MEMB_INFO where upper(memb___id) = upper(?) and memb__pwd = [dbo].[fn_md5](?,?) and bloc_code='0'", array($uss_id, $uss_password, $uss_id));
} else {
#DB Sin MD5 (Mejor a Mi Gusto XD)
$uss_r = $core_db2->Execute("SELECT memb___id FROM MEMB_INFO where upper(memb___id) = upper(?) and upper(memb__pwd) = upper(?) and bloc_code='0'", array($uss_id, $uss_password));
}
if ($uss_r->RecordCount() > 0) {
$login_success = 1; #Indica QUE LOGIN EXISTE -> Permite Acceso a la web
} else {
$login_success = 0; #Lo Contrario a lo anterior.... OBIO
}
return $login_success > 0 ? true : false;
}
Explicación de Reemplazo:
- Reemplazando el codigo original por este ultimo lo unico que estamos quitando del global_functions es el guardado de caché de la mucore, es decir, cuando un usuario se loguea su cuenta queda guardada en un .txt y ese .txt es descargable y por ahí les roban las cuentas. Lo que estamos haciendo basicamente es borrar esa funcion.Paso 3:- Borrar el archivo login_cache.txt de la carpeta engine/cache/loginEspero que les sea de ayuda! Saludos!!