código inyectado dentro del archivo PHP con permiso 777

código inyectado dentro del archivo PHP con permiso 777

Me desperté y descubrí que todas las carpetas de mi servidor web compartido con permiso 777 tenían dos archivos php nuevos. El código dentro del archivo no se pudo leer; aquí está la versión decodificada:http://pastie.org/779226(¿Qué...?) Ese código fue inyectado incluso dentro de algunos archivos PHP.

No sé ¿CÓMO alguien haría esto? Sé que tener el permiso 777 no es lo más inteligente, pero, en primer lugar, ¿cómo entraron a mi sistema de carpetas?

Solo soy un programador del lado del cliente, sería genial si tuviera algún consejo sobre cómo evitar que esto suceda en el futuro.

Salud.

Respuesta1

Aquí está la versión ofuscada del script:http://pastie.org/private/iobgt7aetg8mezoepucsg

El código parece incluir código PHP externo de otro sitio web y recopila información sobre sus visitantes mientras lo hace.

Una forma en que esto podría haber ocurrido es permitiendo la carga de archivos en un directorio accesible desde el exterior. Hacerlo sin la validación adecuada es peligroso ya que un usuario malintencionado puede cargar un archivo PHP (usando la carga de su imagen) con código malicioso. Si el servidor web no está configurado correctamente, el código se ejecutará cuando se solicite.

Para evitar tales problemas, asegúrese de que:

  • Los procesos PHP son ejecutados por un usuario limitado.
  • Los archivos que no necesitan ser editados están configurados para que sólo el propietario pueda escribirlos (0644 o 0744 dependiendo de si necesita el bit de ejecución o no).
  • Configure únicamente el directorio de carga para que se pueda escribir.
  • Intente utilizar un directorio de carga que esté fuera de su raíz web. Entonces usareadfile()para entregar el expediente.
  • Validar los archivos. Si desea que su formulario solo permita imágenes, valide los bits mágicos y asegúrese de que la imagen sea válida. Este es un paso que se pasa por alto en gran medida. Lo mismo se aplica a cualquier otro formato. No confíe en la extensión del archivo ni en el tipo MIME enviado por el cliente. Verifique el contenido real del archivo.

Respuesta2

Hay al menos 2 posibilidades que se me ocurren:

  1. Encontraron tu contraseña FTP
  2. Encontraron una falla en su software PHP

Para evitar que sucedan:

  1. Utilice una contraseña compleja (mínimo 9 caracteres, mayúsculas y minúsculas mixtas, dígitos y caracteres especiales)
  2. Huye del 777 como si fuera el número de la bestia; intenta darle al servidor webno másque leer permisos en sus scripts y otorgar permisos especiales a las carpetas/archivos (con suerte, raros) donde tiene que escribir.

Si tiene acceso a algunos registros (los registros de acceso de Apache y los registros FTP de cualquier servidor FTP que ejecute su sitio web), eso podría resultar útil para ver qué sucedió.

Es dudoso que hayan logrado hacer tantos cambios con una simple falla en sus scripts, a menos que sea una falla muy abierta (como si tuviera un script desprotegido que solo envuelve fopen() sobre lo que le guste al usuario), así que verificaría la prioridad de inicio de sesión FTP.

información relacionada