El mundo de las plataformas WordPress es muy dinámico a la par que interesante. Es el mayor CMS (Content Management System) desplegado en el mundo, el que mayor cuota de mercado tiene y, sin duda, es uno de los más investigados en busca de fallos de seguridad y es, además, el más atacado por los cibercriminales. En esta ocasión investigadores han descubierto vulnerabilidades que afectan a dos plugins de WordPress bastante populares.
Los plugins pertenecen a un editor/propietario llamado Revmak. El primer plugin a tratar es el de InfiniteWP, el cual permite a los administradores poder gestionar múltiples sitios de WordPress con una sola interfaz. Es útil para aquellos que tienen que administrar diferentes sitios. El segundo plugin es WP Time Capsule que, como no puede ser de otra forma, es una herramienta para llevar a cabo copias de seguridad y organizar sitios. Estos plugins están siendo utilizados entre 300.000 y 500.000 sitios para InifinteWP - se hace difícil calcular los entornos de Intranet - y unos 20.000 o más para WP Time Capsule.
Esto nos recuerda al trabajo que hicimos en Ideas Locas hace unos años donde se analizaba el código fuente de una gran cantidad de plugins y se analizaba el código en busca de vulnerabilidades. Este trabajo viene derivado de uno más antiguo, del cual salió un script llamado OSB-Rastreator. Se encontraron plugins con vulnerabilidad que estaban desplegados en una gran cantidad de sitios con WordPress, por lo que como se puede ver es algo parecido a lo que ha sucedido.
El resultado, después del proceso que hicimos con todos los plugins públicos oficiales, para recordarlo fue el siguiente que podéis ver en la tabla, donde varios muy populares tenían bugs que se pudieron descubrir con nuestro motor de análisis.
A continuación, puedes ver los diferentes papers en lo relacionado con esto último que he comentado. Tanto la detección de vulnerabilidades por el uso de funciones inseguras como la detección de vulnerabilidades en plugins de WordPress con diferentes técnicas analizando el código.
Lo importante aquí es que se debe actualizar lo antes posible si tienes estos plugins de WordPress. ¿Por qué? Según la empresa que informó de todo esto, indicó que un atacante puede acceder a las cuentas de administrador sin uso de la contraseña.
El bypass de InfiniteWP se encontró en la función iwp_mmb_set_request, la cual es utilizada para comprobar si el usuario está intentando una acción autorizada. Dos métodos que lo hacen son readd_site y add_site, pero ninguna de éstas implementa una comprobación de autorización, por lo que un atacante puede crear una petición maliciosa. ¿Cómo? Solamente sabiendo el nombre del usuario del administrador - y si no has fortificado tu WordPress enumerar usuarios no es muy complicado -. Una vez se realiza la petición con el parámetro adecuado, se valida y se accede como usuario administrador. Fácil y sencillo.
En el plugin WP Time Capsule puede que el fallo sea aún más sencillo. El resultado es muy similar. Lo único que el atacante hace es incluir la cadena de texto IWP_JSON_PREFIX en la petición enviada al servidor. Más fácil aún. No hace falta conocer el nombre del usuario administrador.
Como he comentado anteriormente, hay que actualizar rápidamente, ya que el desarrollador parcheó el problema al día siguiente de aparecer la vulnerabilidad. Todas las versiones de InifiniteWP son vulnerables hasta la 1.9.4.4. La 1.9.4.5 ya no lo es. En el caso de WP Time Capsule todas las versiones hasta la 1.21.15 son vulnerables, mientras que la 1.21.16 ya no lo es.
Foritificar WordPress: Faast for Wordpress, WordPress in Paranoid Mode
Como ya sabéis, hace tiempo que en ElevenPaths se lanzó una versión especial de Faast - nuestro servicio de Pentesting Persistente, para dominios con plataformas WordPress al que llamamos Faast For WordPress y del que hablamos por aquí en el blog en el artículo titulado: "Faast for WP: Pentesting as a Self Service para tu WordPress".
Figura 8: Faast por WordPress
Después, si quieres tener un entorno bien fortificado, lo mejor es que leas el libro de "Máxima Seguridad en WordPress" de Daniel Maldonado, al que puedes preguntar cualquier duda a través de su buzón público en MyPublicInbox.
Y si quieres conocer todo el trabajo que hicimos para configurar un "WordPress in Paranoid Mode", puedes leerte los dos papers que publicamos:
Figura 10: Fortificar WordPRess Like a Hacker
Más Referencias:
[Libro] Máxima Seguridad en WordPress
[Libro] Hardening GNU/Linux
[Paper] WordPress in Paranoid Mode (Parte 1)
[Paper] WordPress in Paranoid Mode (Parte 2)
[Paper] Detección y estimación de vulnerabilidades en WordPress
[Vídeo] Proteger WordPress con Latch
[Vídeo] Proteger WordPress con Latch Cloud TOTP
[Vídeo] MyWordPress in Paranoid Mode (conferencia Chema Alonso)
[Vídeo] MyWordPress in Paranoid Mode (ElevenPaths Talks de Pablo González)
[Vídeo] Ejemplo de uso de Latch en WordPress
[Vídeo] Hardening WordPress like a hacker
[Vídeo] WordPress Demo XSS en WP-UserAgent
[BlogPost] My WordPress in Paranoid Mode
[BlogPost] Máxima Seguridad en WordPress
[BlogPost] Hackear un WordPress con Network Packet Manipulation
[BlogPost] Fortificar comunicación entre WordPress y MySQL
[BlogPost] WordPress Latch Enforcement
[BlogPost] WordPress aún más seguro con Latch Lock After Request
[BlogPost] Fortificar WordPress frente a ataques de fuerza bruta
[BlogPost] Ataques (al corazón) de tu WordPress
[BlogPost] Cómo robarle las contraseñas a los administradores de WordPress
[BlogPost] Agrupar el control de varios WordPress con un solo Latch
[BlogPost] WordPress: Time-Based XSPA (Cross-Site Port Attack)
[BlogPost] Cómo debería ser un WordPress un poco más seguro
[BlogPost] WPHardening: Automatizar fortificación de WordPress
[BlogPost] Protege los borradores de los artículos de tu WordPress
[BlogPost] Registro de cuentas en WordPress públicos
[BlogPost] Riesgos en la ejecución de tareas de Cron
[BlogPost] WordPres: XSS en plugin WP-UserAgent
[BlogPost] MySQLDumper: Un script de backup que no debes publicar en tu WP
[BlogPost] Listar los plugins de WordPress en un pentest
[BlogPost] WordPress: SQL Injection en Scarcity Builder Plugin
[BlogPost] Docker WordPress in Paranoid Mode
[BlogPost] Faast for WordPress
[BlogPost] Cómo buscar {y encontrar} 0days en plugins de WordPress
[BlogPost] WordPress Stored XSS: Nueva vulnerabilidad para tu CMS. Actualiza.
Saludos,
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root", “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.
Para consultas puedes usar el Buzón Público para contactar con Pablo González
Figura 1: Actualiza WordPress: Dos plugins muy populares con fallos graves de seguridad |
Los plugins pertenecen a un editor/propietario llamado Revmak. El primer plugin a tratar es el de InfiniteWP, el cual permite a los administradores poder gestionar múltiples sitios de WordPress con una sola interfaz. Es útil para aquellos que tienen que administrar diferentes sitios. El segundo plugin es WP Time Capsule que, como no puede ser de otra forma, es una herramienta para llevar a cabo copias de seguridad y organizar sitios. Estos plugins están siendo utilizados entre 300.000 y 500.000 sitios para InifinteWP - se hace difícil calcular los entornos de Intranet - y unos 20.000 o más para WP Time Capsule.
Figura 2: Módulos del proceso de análisis de vulnerabilidades en plugins de WordPress |
Esto nos recuerda al trabajo que hicimos en Ideas Locas hace unos años donde se analizaba el código fuente de una gran cantidad de plugins y se analizaba el código en busca de vulnerabilidades. Este trabajo viene derivado de uno más antiguo, del cual salió un script llamado OSB-Rastreator. Se encontraron plugins con vulnerabilidad que estaban desplegados en una gran cantidad de sitios con WordPress, por lo que como se puede ver es algo parecido a lo que ha sucedido.
Figura 3: Flujo de ejecución de los subsistemas de análisis de bugs en plugins de WordPress |
El resultado, después del proceso que hicimos con todos los plugins públicos oficiales, para recordarlo fue el siguiente que podéis ver en la tabla, donde varios muy populares tenían bugs que se pudieron descubrir con nuestro motor de análisis.
Figura 4: Principales 0-days descubiertos en plugins WP en el proceso de análisis |
A continuación, puedes ver los diferentes papers en lo relacionado con esto último que he comentado. Tanto la detección de vulnerabilidades por el uso de funciones inseguras como la detección de vulnerabilidades en plugins de WordPress con diferentes técnicas analizando el código.
Lo importante aquí es que se debe actualizar lo antes posible si tienes estos plugins de WordPress. ¿Por qué? Según la empresa que informó de todo esto, indicó que un atacante puede acceder a las cuentas de administrador sin uso de la contraseña.
El bypass de InfiniteWP se encontró en la función iwp_mmb_set_request, la cual es utilizada para comprobar si el usuario está intentando una acción autorizada. Dos métodos que lo hacen son readd_site y add_site, pero ninguna de éstas implementa una comprobación de autorización, por lo que un atacante puede crear una petición maliciosa. ¿Cómo? Solamente sabiendo el nombre del usuario del administrador - y si no has fortificado tu WordPress enumerar usuarios no es muy complicado -. Una vez se realiza la petición con el parámetro adecuado, se valida y se accede como usuario administrador. Fácil y sencillo.
Figura 7: Libro "Máxima Seguridad en WordPress" de 0xWord para aprender a Fortificar plataformas WordPress |
En el plugin WP Time Capsule puede que el fallo sea aún más sencillo. El resultado es muy similar. Lo único que el atacante hace es incluir la cadena de texto IWP_JSON_PREFIX en la petición enviada al servidor. Más fácil aún. No hace falta conocer el nombre del usuario administrador.
Como he comentado anteriormente, hay que actualizar rápidamente, ya que el desarrollador parcheó el problema al día siguiente de aparecer la vulnerabilidad. Todas las versiones de InifiniteWP son vulnerables hasta la 1.9.4.4. La 1.9.4.5 ya no lo es. En el caso de WP Time Capsule todas las versiones hasta la 1.21.15 son vulnerables, mientras que la 1.21.16 ya no lo es.
Foritificar WordPress: Faast for Wordpress, WordPress in Paranoid Mode
Como ya sabéis, hace tiempo que en ElevenPaths se lanzó una versión especial de Faast - nuestro servicio de Pentesting Persistente, para dominios con plataformas WordPress al que llamamos Faast For WordPress y del que hablamos por aquí en el blog en el artículo titulado: "Faast for WP: Pentesting as a Self Service para tu WordPress".
Figura 8: Faast por WordPress
Después, si quieres tener un entorno bien fortificado, lo mejor es que leas el libro de "Máxima Seguridad en WordPress" de Daniel Maldonado, al que puedes preguntar cualquier duda a través de su buzón público en MyPublicInbox.
Figura 9: Contactar con Daniel Maldonado en MyPublicInbox |
Y si quieres conocer todo el trabajo que hicimos para configurar un "WordPress in Paranoid Mode", puedes leerte los dos papers que publicamos:
- WordPress in Paranoid Mode (I de II)
- WordPress in Paranoid Mode (II de II)Y sobre todo ver la charla de Chema Alonso de "Cómo Fortificar WordPress Like Hacker" donde explica con demos todos y cada uno de los procesos de fortificación de WordPress para que sea una plataforma mucho más segura.
Figura 10: Fortificar WordPRess Like a Hacker
Más Referencias:
[Libro] Máxima Seguridad en WordPress
[Libro] Hardening GNU/Linux
[Paper] WordPress in Paranoid Mode (Parte 1)
[Paper] WordPress in Paranoid Mode (Parte 2)
[Paper] Detección y estimación de vulnerabilidades en WordPress
[Vídeo] Proteger WordPress con Latch
[Vídeo] Proteger WordPress con Latch Cloud TOTP
[Vídeo] MyWordPress in Paranoid Mode (conferencia Chema Alonso)
[Vídeo] MyWordPress in Paranoid Mode (ElevenPaths Talks de Pablo González)
[Vídeo] Ejemplo de uso de Latch en WordPress
[Vídeo] Hardening WordPress like a hacker
[Vídeo] WordPress Demo XSS en WP-UserAgent
[BlogPost] My WordPress in Paranoid Mode
[BlogPost] Máxima Seguridad en WordPress
[BlogPost] Hackear un WordPress con Network Packet Manipulation
[BlogPost] Fortificar comunicación entre WordPress y MySQL
[BlogPost] WordPress Latch Enforcement
[BlogPost] WordPress aún más seguro con Latch Lock After Request
[BlogPost] Fortificar WordPress frente a ataques de fuerza bruta
[BlogPost] Ataques (al corazón) de tu WordPress
[BlogPost] Cómo robarle las contraseñas a los administradores de WordPress
[BlogPost] Agrupar el control de varios WordPress con un solo Latch
[BlogPost] WordPress: Time-Based XSPA (Cross-Site Port Attack)
[BlogPost] Cómo debería ser un WordPress un poco más seguro
[BlogPost] WPHardening: Automatizar fortificación de WordPress
[BlogPost] Protege los borradores de los artículos de tu WordPress
[BlogPost] Registro de cuentas en WordPress públicos
[BlogPost] Riesgos en la ejecución de tareas de Cron
[BlogPost] WordPres: XSS en plugin WP-UserAgent
[BlogPost] MySQLDumper: Un script de backup que no debes publicar en tu WP
[BlogPost] Listar los plugins de WordPress en un pentest
[BlogPost] WordPress: SQL Injection en Scarcity Builder Plugin
[BlogPost] Docker WordPress in Paranoid Mode
[BlogPost] Faast for WordPress
[BlogPost] Cómo buscar {y encontrar} 0days en plugins de WordPress
[BlogPost] WordPress Stored XSS: Nueva vulnerabilidad para tu CMS. Actualiza.
Saludos,
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root", “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.
Para consultas puedes usar el Buzón Público para contactar con Pablo González
No hay comentarios:
Publicar un comentario