Wordpress es una plataforma CMS libre y gratuita de publicación personal orientada a la estética, los estándares web y la usabilidad, según su sitio. Esta se basa en su política de instalación en 5 minutos, ya que se descarga el paquete comprimido, se descomprime, se edita un archivo .php de configuraciones, se sube al dominio, accedes al sitio de instalación (dominio/install.php), y ya está funcionando.

En ocasiones anteriores hemos visto cómo aumentar la seguridad en esta plataforma web para evitar diversos ataques informáticos, aunque la seguridad informática es un trabajo que jamás termina.

El pasado sábado 29 de noviembre en el evento Ángeles y Demonios tuve la oportunidad de conocer una herramienta de gran utilidad, llamada WPHardening, de la mano de su creador -quien por cierto es una persona con mucha energía y buena predisposición para aportar a la comunidad. Daniel Maldonado es Ingeniero en Computación y dueño del sitio Cacería de Spammers, y ha creado esta herramienta realizada en Python que resulta muy interesante ya que automatiza gran parte del proceso de hardening en Wordpress.

En esta entrada veremos su funcionamiento y características, teniendo en cuenta que al realizar las configuraciones de manera automatizada, el tiempo que requiere es muy corto: menor a los 2 minutos.

Comencemos por su descarga. Para hacerlo solo es necesario clonarlo desde GitHub; también se puede descargar el Proyecto comprimido (ZIP) y descomprimirlo manualmente.

Una vez clonado en el directorio que se desee, basta con ingresar y ejecutarla la herramienta de cualquiera de las siguientes maneras:

  • $ python wphardening.py
  • $ ./wphardening.py (puede requerir permiso: sudo chmod +x wphardening.py)

Una vez que obtenido el proyecto web que se desea utilizar, la herramienta es capaz de revisar si es un proyecto Wordpress o no; para averiguarlo se puede ejecutar el siguiente comando:

$ python wphardening.py -d /home/path/wordpress -v

Ejecutando el comando mencionado anteriormente, veremos en pantalla si es un Wordpress (imagen de la izquierda) o no (imagen de la derecha):

2project
Se hicieron dos pruebas para mostrar los diferentes resultados de la evaluación de un proyecto Wordpress y otro diferente.

Una vez confirmado que se cuenta con un Wordpress, se puede proceder a la customización del mismo para incrementar sus niveles de seguridad. Veamos por ejemplo, en la prueba de concepto que llevamos a cabo para esta demostración, se ejecutó el siguiente comando:

./wphardening.py -d /root/wordpress/ -c -b -r -f -t --wp-config --delete-version --plugins --indexes --malware-scan -o /root/Desktop/WPhard

Este comando realiza una customización completa de Wordpress antes de subirlo al hosting, desde la creación del archivo index, hasta un escaneo para ver si la versión descargada contiene algún malware. Puede apreciarse cómo cuando crea los archivos index faltantes, solicita la instalación de algunos complementos para su customización; en caso de aceptar, estos son descargados automáticamente, como lo muestra la siguiente captura:

complementos
Esto facilita mucho las tareas de tener que buscar manualmente los complementos correspondientes.

Otra funcionalidad que posee está ligada a los permisos de directorios y archivos, ya que puede derivar en un problema grave, donde cualquiera podría tener permisos de escritura sobre los directorios. De manera automática, la herramienta establece permisos solo de lectura (establecidos con 644) a los directorios correspondientes, a continuación mostraremos una captura de ello:

Permisos
En el interior del script que se encarga de ejecutar las tareas de permisos, tiene establecidas las variables con los permisos de usuario (755) y permisos de lectura (644). Lo que hace es simplemente reemplazar estos permisos 755 por 644, cambiándolos por permisos de lectura donde no necesita escritura de un externo. A continuación podrán ver el módulo que ejecuta esta acción:

chmod
Luego de esto, procede a (en este caso) crear el archivo de configuración, tal como se muestra en la siguiente captura de pantalla:

ConfigFile
Desde esta sección, permite crear un archivo con las configuraciones correspondientes a la base de datos y demás, en tan solo unos segundos. Con solo completar los datos solicitados, se crea el archivo para que Wordpress funcione correctamente, permitiendo establecer funcionalidades como el uso de SSL por ejemplo.

Luego de este paso, y no menos importante, se ejecuta la eliminación del fingerprint, es decir la huella de cada sistema. Este tipo de información disponible podría facilitarle mucho las cosas a un atacante si no se toman los recaudos necesarios. La herramienta se encarga de eliminar esta huella en cada archivo, para dificultar seguir el rastro del sistema que se está implementando. A continuación el ejemplo:

DeleteWPfp
Como puede apreciarse, busca en todos los archivos de la plataforma huellas que lo identifican y automáticamente las elimina.

A través de análisis de algunos archivos en la instalación se pueden prevenir diversas vulnerabilidades, como por ejemplo la que afecta al complemento TimThumb:

tt1
En el ejemplo se muestra la parte donde determina qué versión del complemento posee. Posteriormente, analiza el archivo timthums.txt dentro del directorio data, si no encuentra nada dentro de este directorio, lo marca como “Not Found file library TimThumb in…”. Esto significa que no encontró librerías de TimThumb.

Más abajo en el código, se encarga de las acciones cuando encuentra librerías de este complemento:

tt2
Estos son solo dos de los scripts que ejecuta esta herramienta, una aplicación gratuita y de código libre, con lo cual cualquier persona puede descargarla y adaptarlas a sus necesidades.

Poseer una CMS en la web implica un factor de exposición ante amenazas y atacantes, por lo que es importante tomar los recaudos necesarios en cuanto a configuraciones de seguridad, para estar protegidos. Por eso desde el Laboratorio de Investigación de ESET Latinoamérica los invitamos a implementar este tipo de medidas preventivas, antes de subir una plataforma web. Además, las medidas de prevención, las fases de prueba y corrección de errores permitirán ahorrar dinero y tiempo.