24 Jul Limpiar malware de RR.NU de WordPress
Si tienes un sitio WordPres ya sabrás que es sumamente importante mantener todo actualizado, tanto la versión de WordPress como los themes y plugins que utilices, siempre que sea posible. Esto es por seguridad, ya que no mantener las actualizaciones son blancos potenciales para los ataques maliciosos. Bien, sabemos que es mejor prevenir que curar pero… ¿qué hacemos cuando ya hemos sufrido un ataque? Una opción rápida, sencilla y eficaz sería restaurar la última versión de una copia de seguridad que estés seguro que no esté infectada. Esto te permitirá que tu sitio no este fuera de linea o sea penalizado por la infección. Siempre recuerda hacer copias de seguridad tanto del sitio cuando está limpio como cuando está infectado para restaurar el antiguo sitio. Otra alternativa sería realizar la limpieza del sitio infectado para intentar eliminar el código inyectado.
Veamos los pasos para realizar esta limpieza:
- Cambiar contraseñas y datos de accesos. La del administrador de WordPress, la del servidor FTP y la de la base de datos. Esto no limpiará nuestro sitio de la infección, pero sí evitará nuevos intentos.
- Somos insistentes con esto pero… Haz una copia de seguridad de todo, por si surge cualquier error y no se obtiene el resultado que deseábamos o el script de limpieza borra algo que no debería.
- Copia el siguiente código y pégalo en un nuevo archivo vacío. Usa un editor de texto plano para ello.<!–?php
class rrnuMalware {private $directory;
private $counter;
private $log = »;
private $pattern = ‘(\<\?php \/\*\*\/ eval\(base64_decode\(«aWYoZnVuY3Rpb25fZXhpc3RzKCdvYl9zdGFydCcpJiYhaXNzZXQoJF9TRVJWRVJbJ21yX25vJ10pKX.*»\)\);\?\–>)’;private function __construct() {}
public static function create() {
return new self();
}public function setDirectory($dir) {
$this->directory = $dir;
return $this;
}private function getDirectory() {
return $this->directory;
}private function validate() {
if (is_null($this->getDirectory())) {
throw new exception(‘Define the root directory to Malware!’);
}
}private function startup() {
$this->counter = array(
‘free’ => 0,
‘infected’ => 0,
‘disinfected’ => 0,
‘total’ => 0,
);
}private function Malware($directory) {
$currentDir = dir($directory);while (false !== ($entry = $currentDir->read())) {
$file = $directory . DIRECTORY_SEPARATOR . $entry;if ($entry != «.» && $entry != «..» && is_dir($file)) {
$this->Malware($file);
} else if (pathinfo($entry, PATHINFO_EXTENSION) == ‘php’) {
$fileContent = preg_replace($this->pattern, », file_get_contents($file),-1,$detected);
if($detected === 0){
$status = ‘<em style=»color: darkblue;»>free</em>’;
$this->counter[‘free’]++;
} else {
if (false === file_put_contents($file, $fileContent)) {
$status = ‘<em style=»color: darkred;»>infected!</em>’;
$this->counter[‘infected’]++;
} else {
$status = ‘<em style=»color: darkgreen;»>disinfected!</em>’;
$this->counter[‘disinfected’]++;
}
}
$this->counter[‘total’]++;
$this->log .= $file . «[» . $status . «]
\n»;
}
}
$currentDir->close();}
public function execute() {
$this->validate();
$this->startup();
$this->Malware($this->getDirectory());$result = array();
foreach($this->counter as $key => $value){
$result[] = «<b>{$key}</b>({$value}) «;
}return «</pre>
<h2>».implode(‘ | ‘,$result).»</h2>
<pre>\n». $this->log;
}}
echo ‘</pre>
<div style=»color: #333; font-family: Verdana; font-size: 11px;»>’; echo ‘<hr />
‘; echo rrnuMalware::create() ->setDirectory(realpath(getcwd())) ->execute(); echo ‘</div>
<pre>’; - Guarda el archivo como remove-rr-nu-virus.php
- Sube este archivo en la misma ruta de la carpeta principal de WordPress y ejecútalo en tu navegador: http://www.tusitio/remove-rr-nu-virus.php
Esta es una manera de hacer una limpieza de RR.NU de WordPress, claro que si conoces otra puedes compartirlo con nosotros! Saludos!
Sin comentarios