Información Importante Sobre el Contenido
Estas accediendo al contenido antiguo del blog. Este artículo "Persistent Cross-Site Scripting (XSS) en Advanced Custom Fields de Wordpress" es de dominio público y no será mantenido a futuro. Cualquier error o problema acerca del contenido por favor contactate conmigo desde la sección contacto.
Advanced Custom Fields es un plugin para WordPress para manejar campos personalizados. De acuerdo a la información entregada por WordPress, se encuentra instalado y activo en más de 1 millón de sitios, su última actualización fue el 17 de Septiembre de 2015 y se encuentra en la versión 4.4.3, por lo tanto se trata de un plugin activo y utilizado.
Durante una revisión de código me di cuenta que no realiza validaciones a los parametros de entrada que recibe mediante POST/GET, por lo tanto busqué justo una línea donde obtenga datos mediante algun formulario e intenté explotarla. El resultado fue un Cross-Site Scripting Persistente.
Para poder explotar esta vulnerabilidad es necesario que tengamos acceso al wordpress con privilegios limitados y podremos elevar privilegios atacando una sesión de administrador.
Para la prueba de concepto usé dos usuarios: admin y zerial. El primero tiene permisos de administrador y el segundo editor. Basicamente, el usuario zerial crea o edita un custom field con el código malicioso y el usuario administrador, el ingresar a un post o bien al ingresar a los custom fields, se ve afectado por el código incrustado por el usuario editor.
Cuando ingresamos como adminsitrador, podemos ver en el menú izquierdo la sección de los Custom Fields, sin embargo, cuando ingresamos como usuario editor el menú no aparece.
Editaremos el campo “Hola” e inyectaremos un código html simple: Hola <em>FOOO</em>.
El siguiente paso es intentar incrustar un código javascript, a modo de ejemplo ejecutaremos la típica instrucción “alert()”. Como usuario editor generaremos un alert y veremos como se le ejecuta al adminsitrador.
Ahora como usuario administrador, vamos a iniciar sesión y editar algun post.
Es posible escalar privilegios solo como usuario editor, ya que para los otros perfiles wordpress valida correctamente el acceso a las funcionalidades del custom fields.
Última versión estable: 4.4.3
Versiones probadas: <= 4.4.3
Información Importante Sobre el Contenido
Estas accediendo al contenido antiguo del blog. Este artículo "Persistent Cross-Site Scripting (XSS) en Advanced Custom Fields de Wordpress" es de dominio público y no será mantenido a futuro. Cualquier error o problema acerca del contenido por favor contactate conmigo desde la sección contacto.
octubre 5, 2015 a las 10:42 am
The version you have tested is 4.3.3, not 4.4.3?
octubre 5, 2015 a las 8:21 pm
Hi “user”,
I’ve tested latest version (4.4.3)
https://wordpress.org/plugins/advanced-custom-fields/
typo error 🙂