¿Cómo puede alguien insertar código en mi servidor sin mis credenciales de servidor?
Uso de claves robadas SSH, conexión anónima FTP o archivos ejecutados por el servidor (es decir, archivos PHP que escriben en el FS del servidor)
¿Cómo puedo saber de dónde se inyectó este código?
Vea los registros (bash / FTP / su sistema de registro de código de servidor, si lo hay). Puede buscar cuándo se escribió (usando la fecha de modificación del archivo o comparar copias de seguridad) y consultar los registros de acceso de su servidor para averiguar qué IP y cómo inyectaron el código. Además, como los servidores ahora están vinculados a la base de datos, tal vez fue una inyección de dos pasos: inyecte el código en la base de datos y deje que otra llamada (visita CRON o HTTP) escriba el contenido de la base de datos en un archivo.
¿Cómo prevenir inyecciones futuras?
Renueve las credenciales del servidor (incluida la base de datos) y no escriba ningún archivo desde su código ejecutado. Además, no llame a ninguna función de ejecución de shell desde el código de su servidor (es decir, un exec
de PHP puede escribir cosas en los archivos). Favorecer el trabajo comunitario (es decir, soluciones de código abierto) en lugar de cosas personalizadas: a menudo son más seguras.