Seguridad en WordPress

Es común que en el diseño gráfico de los blogs hechos en WordPress, sea código modificado de la instalación original del WordPress que se va a trabajar. Es lo habitual para poder trabajar la imagen gráfica del sitio web, pero tiene muchas más implicaciones de las que se conocen comúnmente.

WordPress es muy personalizable, ya que la modularidad de su código le permite mover a gusto bloques de texto, imágenes, esquematizando la información que se va a mostrar. Muchas veces instalamos plugins que si bien añaden funcionalidad extra al sitio web, también podrían poner en riesgo la seguridad e imagen del mismo.

Cuando modificamos el código de un sitio web, debemos tener precauciones de no dejar agujeros de seguridad de los cuales los atacantes se puedan aprovechar. Sucede mucho que si desarrollamos nuestro propio módulo de comentarios, y no validamos el texto introducido, podemos ser víctimas de ataques XSS o Inyecciones SQL. Lo peligroso de un XSS es que se puede robar la ‘cookie’ del administrador y por lo tanto, tomar control del contenido del portal. Muchos ataques son de carácter difamatorio, ya que introducen texto que insultan el manejo de la seguridad por parte del administrador.

Es indispensable que aquellos diseñadores gráficos o programadores que los asistan, se informen en técnicas de programación segura, para mitigar estos ataques. Una buena fuente de información es Open Web Application Security Project (OWASP), ya que ellos documentan no sólo las estadísticas de los ataques, sino que también tienen manuales teórico-prácticos que te ayudan como programador (a nivel de código), proteger la integridad de sitio web.

Son comunes los ataques a wordpress en los que vemos que se sustituye el código del “title” por una cadena de texto realmente críptica y el cambio de codificación del sitio a UTF-7, además de otras caracterísiticas del ataque.

El culpable parece ser una vulnerabilidad XSS de Apache, que permitiría cambiar la codificación. El caso es que esto está trayendo bastante debate en los foros de Unix y Apache, pues hay quien dice que el problema es de Internet Explorer, pero la realidad es que el sitio te lo hackean, se pongan como se pongan.

La vulnerabilidad sería algo así:
1. Alguien envía un texto de comentario del tipo +ADw-script+AD4-alert(+ACI-Hello+ACI-)+ADw-/script+AD4-. Y pasa cualquier validación.
2. La base de datos espera que todos los datos entrantes sean UTF-8 y los trata como tales. Y como las cadenas UTF-7 también son válidas en UTF-8 esto provoca un error SQL, que ni mysql_real_escape ni htmlspecialchars tocarán.
3. WordPress envía una cabecera text/html;charset=utf-7.
4. WordPress muestra el comentario, esperando los datos, pero como está tratado como un UTF-7 por el navegador se ejecuta el JavaScript.

El caso es que la mayoría de los navegadores no soportan UTF-7, así que mostrarán la cadena como UTF-8 o Windows-1252, pero la realidad es que la posibilidad de que alguien te haga un destrozo a la web ejecutando códigos de este modo está ahí.

¿Hay solución?

Afortunadamente si, y lo primero, es tener WordPress actualizado.

Lo que no arregla el problema es volver a cambiar la codificación en la base de datos a UTF-8, pues aún seguirías sin saber por donde te han entrado.

Recupera una copia de seguridad reciente e instala la última versión desde cero, para asegurarte que tienes el sitio limpio de cualquier código que hayan podido inyectarte mediante JavaScript.

En la parte de Apache, para quedarte más tranquilo, hay varios ajustes que se pueden hacer, así que habla con tu proveedor para que se asegure.

Cuando instalas WordPress, la seguridad en muchas ocasiones es en lo último que se piensa, excepto cuando ya has sufrido un hackeo. Es entonces cuando te das cuenta de lo vulnerable que era tu web y quieres saber como evitar que pase de nuevo.

Para evitarlos (o por lo menos ponerlo mucho más difícil) puedes seguir los siguientes consejos:

1. Utiliza contraseñas seguras. Utilizar el nombre de tu mascota o tu fecha de nacimiento es poner una alfombra roja a los hackers, ya que esta información se puede conseguir fácilmente en Internet. Lo sensato es utilizar una contraseña alfanumérica (letras y números combinados) y, si se puede, incluir caracteres no habituales como “@#$^”.

2. No utilices la misma contraseña para todo. Aunque requiere un esfuerzo adicional, te ahorrará muchos disgustos. Todos conocemos casos de hackeos masivos de cuentas como el que sufrió Sony en sus cuentas de PlayStation. Ahora imagina que los hackers entran, además de en tu cuenta Sony, en tu correo, en tu web, en tu PayPal y en todo lo que utilizas la misma contraseña. ¿Todavía piensas que es mucho esfuerzo?

3. Configura correctamente los permisos de los archivos del servidor. La única carpeta que tiene que tener permisos de escritura por el usuario del servidor web es /wp-content. (Si no sabes de que estoy hablando, habla con tu proveedor de hosting o pide ayuda profesional)

4. Limita los permisos del usuario de la base de datos. Cuando hagas la instalación, no utilices un usuario root de la base de datos, crea uno que solo tenga acceso a las tablas de WordPress. Con esto no evitarás que puedan controlar tu WordPress, pero si evitar que puedan acceder al resto de datos que tengas en el servidor.

5. No utilices el usuario “admin”. La mayoría de atacantes intentarán primero acceder con el usuario por defecto de la instalación, por lo que si eliges otro pondrás un obstáculo más a superar.

6. Mantén WordPress y sus plugins actualizados. La mayoría de los hackeos a webs desarrolladas en WordPress se aprovechan de vulnerabilidades que se han corregido en las versiones actuales, por lo que debes de estar muy atento de las nuevas versiones, sobre todo si estas contienen actualizaciones de seguridad.

7. No utilices más plugins de los imprescindibles. Es cierto que mediante plugins se puede configurar prácticamente cualquier funcionalidad, pero con cada plugin que instalamos estamos poniendo un nuevo posible punto de acceso para un atacante. Esto no quiere decir que no haya que instalar plugins, sino ser más selectivo y evitarlos cuando la funcionalidad puede conseguirse con un puñado de líneas de código.

Para finalizar os dejo una lista de reproducción donde se muestran algunos consejos de seguridad en WordPress:

Y un enlace donde podéis consultar más temas relacionados con la seguridad de WordPress:

http://seguridadwordpress.net/

pdiaz

Anuncios

Acerca de sadcastelao

Blog Seguridad Informática

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: