2012-06-14 27 views
5

Sé que proteger cualquier sitio web es un tema muy difícil y amplio para ser discutido pero quiero relacionar esta pregunta con mi sitio web específico en el que he estado trabajando. Fue codificado en php por otro programador alrededor de 2004 y soy responsable de su gestión. Mi problema es que es pirateado una y otra vez. Me he dado cuenta de las siguientes cosas cuando ha sido pirateado.cómo proteger mi sitio web

  1. .htaccess archivo ha sido modificado
  2. index.php y config.php archivos fueron modificados
  3. contraseña de administrador se ha cambiado
  4. Carga de archivos en el servidor
  5. cambiantes de permisos de archivo de los archivos y carpetas

He trabajado en el código, se ha escapado correctamente de una y creo que no hay probabilidad de inyección de sql. Como la mayoría del problema está relacionado con archivos y permisos, tengo una duda sobre la seguridad del servidor, pero debido a la razón por la que fue codificado alrededor del año 2004 seguramente carecerá de seguridad, ¿en qué otras cosas necesito trabajar en mi código para evitar que mi sitio sea pirateado por los problemas antes mencionados?

Gracias de antemano.

+1

Pruebe algunas soluciones a esta pregunta: http://serverfault.com/questions/12847/penetration-testing. Hay una serie de herramientas de prueba que le indicarán dónde están los problemas ... – R4D4

+1

¿De qué manera se han modificado? ¿Qué se ha agregado? Debería pedirle al administrador del servidor que realice un análisis de virus en la máquina. También es posible que haya sido afectado por algún ataque de fuerza bruta que haya ingresado al sistema y haya obtenido acceso a la raíz. –

+0

¿cuál es su hosting? ¿Compartido? VDS o dedicado? Si es compartida, entonces la primera parada es tu servidor de Internet. – Nick

Respuesta

5

Como los archivos se han modificado, es poco probable debido a errores de inyección de SQL.

posibilidades para acceder a los archivos:

  • Guess/robar la contraseña FTP
  • Hack el servidor (realmente no se puede hacer nada al respecto)
  • aislamiento insuficiente en el servidor, lo que significa otros clientes pueden cambiar sus archivos (realmente no se puede hacer nada al respecto tampoco)
  • errores de código remoto

Ahora, como dices que el sitio web es de 2004, podría ser que usa eval para plantillas o include para cosas como site.php?section=foo y luego incluir foo.php en el código en algún lugar que se hicieron con frecuencia en 2004. Así que haría un rápido búsqueda de archivos para eval y la expresión regular include(.*\$.*), así como require(.*\$.*). Esos son los principales sospechosos según cómo fueron utilizados.

+2

"No se puede hacer nada", cambiar el alojamiento, informar a su proveedor sobre problemas o arreglar su servidor configuración. –

+0

Me gustaría agregar "o contraseña de SSH" a "Adivinar/robar su contraseña FTP". –

+0

@mensi Tenías razón porque el archivo para incluir se pasa en la url como dijiste y hay algunas funciones 'eval' pero no puedo encontrar' regex' para incluir archivos. De todos modos, gracias por la respuesta, cuidaré el código y espero poder solucionarlo. – uttam

4

Alguien probablemente tenga acceso directo al servidor, en lugar de (a) script (s) en particular. Esto no suena como un problema de seguridad que tiene su origen en la base de código.

Es posible que desee considerar mover todo el sitio a otro proveedor si esto ha sucedido una y otra vez. Comience en otro lugar, con contraseñas nuevas, control de acceso, etc.

2

OWASP top 10 es muy bueno leer. Algunas suposiciones mías.

  • sistema operativo obsoleto que tiene vulnerabilidades.
  • inyección de MySQL y tal vez todas las contraseñas almacenadas en texto plano que es muy, muy malo. Para la autenticación, debería usar algo como openID en su lugar.Además, cuando tiene inyección de MySQL, debe actualizar el código pronto para usar PDO (declaraciones preparadas) si es posible.
  • permisos de lectura/escritura no configurados correctamente o APACHE/PHP ejecutándose en un nivel elevado?

Mi consejo es:

  • leer sobre información sobre OWASP. Luego, busca con claridad los defectos en tu código. Cada línea podría ser un problema de origen. Tal vez deberías abandonar el código viejo, porque es muy inseguro?
  • reinstale su sistema operativo, porque podría tener un rootkit incluso?
+0

PDO o mysqli - Prefiero mysqli yo mismo;) –

1
  • Nunca use solo alojamiento compartido, servidores utilizar al menos administrados/mantener el sistema al día
  • Compruebe su php.ini en materia de seguridad (que puede google)
  • Compruebe su Apache/Nginx/... configuraciones para las anulaciones
  • Nunca se comunican con el servidor sin cifrar (uso de SFTP, SSH, ...)
  • Nunca confíes en valores externos (también de cookies), siempre se evacua/cast los
  • Fi filtro de entrada del usuario (quitar saltos de línea, 0x00 caracteres, etiquetas, ...) donde no deseadas
  • presentarán todas posiblemente existentes cuentas de usuario para el servidor/base de datos/...
  • Compruebe que todos los servicios se ejecutan como el usuario correcto
  • archivo de comprobación (escritura/ejecución) permisos en sus carpetas web
  • escapar de todo lo que se mostrará en la página web, ni siquiera confiar sus datos de bases de datos estén a salvo de cualquier manera
  • Si utiliza software de tercera parte, mirar hacia fuera para advertencias de seguridad
  • reinstalar el servidor, es posible que haya rooteado
  • Uso prepara declaraciones

Eso es todo;) Esto mejorará la seguridad de su mucho, pero los atacantes experimentados son duros.

Cuestiones relacionadas