Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: Fix de Seguridad en Modulo de Registro en MU Core  (Visto 2247 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline Joaquin Posteado: June 09, 2016, 11:49:29 AM

  • MAESTRO

  • US. DE HONOR

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 2
  • Gracias recibida: 27386
  • ar
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:

Code: [Select]
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:

Code: [Select]
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/login

Espero que les sea de ayuda! Saludos!!

Gracias:


Offline ZabiinoOo #1 Posteado: June 09, 2016, 06:25:53 PM

  • MAESTRO

  • US. DE HONOR

  • LEYENDA

  • Administrador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 7.270
  • Gracias recibida: 125209
  • pe
Muy buena guia la verdad para quienes quieran hacer sus propios fixs de seguridad, paso a comentar que ese fix y muchos otros yo me tome el tiempo de implementarlos a esta mucore: http://tuservermu.com.ve/index.php?topic=5.0 asi que si desean saltarse este y otros pasos y quieren tener su mucore con todos los fixs tanto de htaccess, este de la guia y demas pueden descargase esa mucore que la trabaje porque es la version que usaba, saludos y gracias por compartir esto con la comunidad relax




Prohibido pedir soporte via MP
Leer las reglas de cada seccion
we trust god

Gracias:


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
11 Replies
4190 Views
Last post April 08, 2020, 10:32:13 PM
by matiman08
2 Replies
954 Views
Last post July 29, 2018, 09:13:26 AM
by Deidad
1 Replies
848 Views
Last post November 25, 2018, 07:12:59 PM
by Azzlaer
2 Replies
783 Views
Last post June 27, 2019, 07:35:32 AM
by Gaboo;
0 Replies
610 Views
Last post January 26, 2020, 07:35:35 PM
by ghostx