Errores comunes en los CMS

viernes, 6 de febrero de 2015

CMS (Content Management Systems o sistemas de gestión de contenidos) son herramientas, generalmente web, que permiten que usuarios puedan crear, modificar y publicar contenido desde una interfaz. Suelen centrarse en la usabilidad y ser por tanto muy intuitivas para que cualquier perfil de usuario pueda crear el contenido. Como de costumbre, la facilidad de uso está reñida con la seguridad en muchos aspectos. Veamos algunos errores comunes que se suelen cometer a la hora de gestionar CMS populares.

Existen cientos de sistemas CMS, entre ellos varios muy populares como Wordpress, Drupal, Joomla, PhpBB....

Aunque la estructura varía de uno a otro, la idea fundamental es disponer de un sistema de gestión del contenido (sea cual sea) almacenado y que el acceso se consiga mediante una interfaz sin (por lo general) tener que acceder al código/base de datos en los que se almacena todo. En resumen, facilitar esa interacción para que la gestión del contenido (multimedia, texto, etc) sea totalmente transparente. La idea es que esta interfaz cumpla la función de puerta de entrada a la edición del contenido y, por tanto, sea similar entre roles: ya se trate de un administrador o un editor el que acceda a ella.

Esquema básico de cualquier CMS
En el diagrama se puede ver esta sutil pero crucial diferencia: la irrupción de un componente intermedio, hace que el precio a pagar por esta conveniencia sea un incremento en el número de puntos de acceso potencialmente vulnerables al sistema.

Fallos comunes

Los CMS no se usan solo en entornos pequeños o están destinados a usuarios. Se encuentran muy extendidos y suelen usarse por una gran cantidad de páginas web e infraestructuras muy conocidas (Ebay, Flikr, Samsung o Yahoo entre otras). Las vulnerabilidades relacionadas con sistema CMS podrían ser categorizadas de la siguiente forma:

  • Búsqueda de versiones antiguas: Aunque a veces resulte tedioso, es muy importante tener los últimos parches de seguridad de las aplicaciones. Es mucho más probable que una versión antigua contenga vulnerabilidades descubiertas y públicas.
  • Copias de seguridad: Hacer copias de seguridad periódicamente es necesario, pero se convierte en una trampa cuando algunos plugins de CMSs guardan estas copias en directorios públicos y en ocasiones predecibles. Los atacantes los conocen y podrían hacerse con ellas.
  • Copias de archivos de configuración: Es también muy común el duplicar un archivo de configuración a modo de copia de seguridad (como por ejemplo wp-config.php a wp-config.bak) mientras se modifican parámetros en el archivo principal. Si estas copias no se eliminan y permiten la lectura por un posible atacante, exponen cadenas de conexión, contraseñas y otra información crítica.
  • Plugins inseguros: La mayoría de los CMS utilizan plugins o extensiones para mejorar su funcionalidad o añadir alguna nueva (el ejemplo por excelencia es Wordpress, con más de 35000 plugins). También son populares los temas o reskins que contienen estas extensiones, muchas veces no listadas. Los plugins pueden no ser oficiales y estar creados por aficionados con más buena voluntad que habilidades en programación. Por tanto no es complicado encontrar en ellos vulnerabilidades comunes como XSS, LFI, RFI o SQLi. Estas vulnerabilidades suelen ser el vector más habitual de entrada al contenido del CMS.
  • Paneles públicos: En la mayoría de los casos, la interfaz desde la que se gestiona el contenido del CMS se mantiene pública y protegida simplemente por la combinación de un usuario y contraseña. Llegar a conocer la contraseña de un usuario o administrador puede no resultar tan complejo (ya sea por deducción, ataques de ingeniería social o compromiso de otra cuenta que le pertenece y con la que comparte credenciales). No es mala idea en estos casos complementar con un segundo factor de autenticación, reducir la exposición con Latch y los muchos plugins con los que contamos (por ejemplo Joomla, Wordpress o Drupal entre otros) para añadir una capa extra de seguridad a la interfaz... y además restringir el acceso a la página de entrada a direcciones locales del lugar de trabajo, por ejemplo.

Por supuesto, nuestra herramienta de pentesting persistente Faast, busca la versión del CMS e informa al usuario no solo de que debe actualizar, sino de las vulnerabilidades que están expuestas por usar esa versión en concreto. También está preparado para encontrar las copias de seguridad que puedan estar alojadas y accesibles, los archivos de backup olvidados y los plugins o extensiones vulnerables. Además, el análisis se complementa con la búsqueda de otros fallos compartidos con cualquier sistema web, como PHP code injections, shell uploads, etc.

Juan Luis Sanz
juanluis.sanz@11paths.com

No hay comentarios:

Publicar un comentario en la entrada