Decodificación de código PHP malicioso inyectado en mi servidor

3

Encontré problemas similares en Internet y comparé el código. Este es diferente.

Hace poco descubrí que el servidor web CentOS LAMP que usamos para el desarrollo en nuestra oficina se infectó con una pieza de código PHP inyectada al principio de todos nuestros archivos .php .

Pongo el código en Gist/Github , porque es largo, pero lo describo y lo que hice a continuación.

enlace

Estoy tratando de desenfocar el código fuente para entender el daño y ver lo que realmente hace el script malicioso. Pude decodificar un texto escapado de HEX, pero hay una parte que es más complicada.

Cambié el nombre de todas las variables y hay una cadena codificada en una variable llamada $foo , que se decodifica mediante una función llamada mistery_f , con una matriz austera que contiene una larga lista de números (variable $bar_arr ) .

Luego, hay incluso un fragmento de texto en una cadena, que contiene dos comentarios "extraños" confusos, un eval() , un str_replace y una llamada a la función mistery_f() .

Pero no obtengo la última parte, me parece que esta cadena nunca se evalúa para ejecutar el código, y en la última parte posiblemente hay algunas variables basura que hacen algo de aritmética y luego se ignoran.

Tal vez falte algo de código y no se haya inyectado.

Muchos de nuestros sitios web utilizan WordPress , que puede ser parte del problema. ¿Posiblemente algo relacionado con algún texto publicado y guardado en la base de datos MySQL , en un campo que no era lo suficientemente grande y truncado parte del código malicioso?

Intentaré ver y obtener algunos registros, si aún hay alguno, para ver cómo se explotó / penetró el servidor.

No pregunto porque es una prueba de producción. Afortunadamente, solo afectaría (probablemente), es decir, a los navegadores, pero no podemos hacer que los sitios web de vista previa del cliente en este servidor.

Me temo que podría ser una parte que no noté, y tal vez un desbordamiento de búfer, o algo que pueda dañar al resto del servidor.

También estoy tratando de averiguar por qué estaba infectado y cómo proteger los datos de nuestro sitio web en desarrollo.

Cualquier ayuda es bienvenida. Gracias

    
pregunta Zorgatone 04.12.2015 - 13:05
fuente

2 respuestas

3

Este código carga el contenido de un servidor remoto y lo inyecta en su sitio web, pero no cuando el agente de usuario es un robot del motor de búsqueda o no se configuran las variables $ _SERVER específicas.

Pregunta relacionada sobre SO:
enlace

Y algunos detalles más: enlace

Esta parece ser la carga útil final que puede cargar cargas útiles adicionales desde el servidor C & C: enlace
enlace

También relacionado: enlace

En general, pueden hacer cualquier cosa con este shell web e inyectar contenidos de los servidores remotos en su sitio web.

Este código webshell no ayuda mucho. Su sitio web está comprometido. Recomiendo eliminar el sitio web (archivos + base de datos) e instalar una copia de seguridad limpia, revisar los registros de acceso y solucionar el problema de seguridad.

Después de que entraron, podrían haber hecho mucho más, al eliminar también las cargas útiles y las aplicaciones web después de ejecutar el código.

A menudo, el problema son los complementos y temas inseguros. Hay muchas vulnerabilidades. enlace

Se recomienda encarecidamente instalar todas las actualizaciones (incluso para temas pagados) e instalar alguna solución como NinjaFirewall enlace

    
respondido por el Daniel Ruf 04.12.2015 - 13:36
fuente
1

Si observa $baz; // Added by me , verá que contiene '/(.*)/e': esto, cuando se pasa a una función preg_, hace que el sujeto se evalúe como código PHP. Pero si este es el código original, yo tampoco veo el punto de entrada al código confuso.

¿Estás seguro de que este es el código de la infección? Tal como está, el código que ha publicado fallará en la primera ronda de análisis debido a la comilla simple no coincidente en

$codestr = " /* weirdcomment_1 */ eval(str_replace('%', '\', mistery_f($bar_arr, $foo))); /* weirdcomment_2 */ ";

Sospecho que ha sustituido el contenido de lo que cree que son comentarios incorrectamente.

    
respondido por el symcbean 04.12.2015 - 13:31
fuente

Lea otras preguntas en las etiquetas