Millones de sitios web de WordPress en peligro debido a error fácilmente explotable

 

Una falla de seguridad en WordPress 3 permite la inyección de JavaScript en ciertos campos de texto. En particular, el problema afecta a cuadros de comentarios en los posts y páginas de WordPress. Estos no requieren de autenticación por defecto. El JavaScript inyectado en un comentario se ejecuta cuando el usuario de destino lo ve, ya sea en un blog, una página o en la sección de comentarios del Dashboard administrativa.

En el escenario más obvio el atacante deja un comentario que contiene el código JavaScript y algunos enlaces con el fin de poner el comentario en la cola de moderación. La hazaña no es entonces visible para los usuarios normales, buscadores, etc. Cuando un administrador del blog va a la sección Dashboard / Comentarios para revisar nuevos comentarios, el código JavaScript se ejecuta.

La secuencia de comandos puede realizar operaciones con privilegios de administrador. Por ejemplo, nuestras hazañas PoC primero limpiar los rastros de la secuencia de comandos inyectado desde la base de datos, a continuación, realizar otras tareas administrativas tales como cambiar la contraseña del usuario actual, añadiendo una nueva cuenta de administrador, o usando el editor plugin para escribir código PHP suministrado por el atacante en el servidor (este impacto se aplica a cualquier XSS WordPress si fue causada por un administrador).

Estas operaciones ocurren en el fondo sin que el usuario ver nada fuera de lo común. Si el atacante escribe nuevo código PHP en el servidor a través del editor plugin, otra petición AJAX puede ser utilizado para ejecutarlo de forma instantánea, por lo que las atacante obtiene acceso que operan a nivel de sistema en el servidor.

El exploit NO será disparado directamente en el cuadro de mandos “vista raíz” porque sólo los fragmentos (20 primeras palabras) de los últimos comentarios se muestran allí con todo el HTML despojado. De ser aprobado allí, el exploit se disparará por cualquier usuario ver la entrada de blog o página específica, con sus correspondientes privilegios. Plugins que permiten a los usuarios sin privilegios de introducir texto HTML pueden ofrecer otros tipos de ataque.
DETALLES ======= WordPress permite algunas etiquetas HTML en los comentarios, como el ancla <A>, negrita <B> y el código <code>. Ciertos atributos de la lista blanca se permiten en cada etiqueta. Obviamente, el atributo “href” es importante para las etiquetas de anclaje, pero por ejemplo, el atributo “onmouseover” no sería deseable.

El problema se produce en una llamada wptexturize función del formato de texto () que normalmente se ejecuta para cada comentario y otros bloques de texto. La función sustituye a ciertos personajes simples con entidades HTML elegantes. Por ejemplo, los símbolos de cotización rectas son reemplazadas con la apertura y cierre de comillas tipográficas, unicode 8220 y 8221. Con el fin de no interferir en el formato HTML, wptexturize () divide primero el texto en segmentos.

Se espera que la división para recoger etiquetas HTML (que no están texturizadas) aparte de texto corriente (que es texturizada). Además de las etiquetas HTML, se supone que el código para reconocer códigos cortos-corchetes cuadrados como [CÓDIGO] y evitar texturizar ellos. La separación se lleva a cabo con una expresión regular en wp-includes / formatting.php: $ textarr = preg_split (‘<. *> | [. * \] / (\) / Us’, $ texto, -1, PREG_SPLIT_DELIM_CAPTURE); Un texto que contiene corchetes y ángulo cuidadosamente mezclados confunde el proceso de división y los resultados en el código HTML para conseguir parcialmente texturizada.

Un atacante puede explotar el bug para suministrar cualquier atributo en las etiquetas HTML permitidas. Un atributo de estilo puede utilizarse para crear una etiqueta transparente que cubre toda la ventana, forzando la ejecución de su manejador de onmouseover.

En las aplicaciones prácticas de la escritura probablemente primero retire la etiqueta transparente para evitar interferir con los eventos de interfaz de usuario y volver a disparar el manejador. Podría entonces insertar una nueva etiqueta <SCRIPT> para cargar un archivo de JavaScript más compleja de ejecutar desde otro servidor web. Este script puede utilizar por ejemplo jQuery para las operaciones de la cadena de AJAX para publicar formularios HTML y recuperar los nonces requeridos.

Las versiones afectadas ================= Hemos probado un par de versiones de WordPress desde 3.0 a la última 3.9.2. Todas las versiones probadas eran vulnerables. El problema parece haber ido sin corregir durante casi cuatro años. Versión 4.0 utiliza un tipo diferente de expresión regular y no es vulnerable a este problema.
SOLUCIONES =========== texturización se puede desactivar fácilmente añadiendo una sentencia return en el comienzo de la función en wp-includes / formatting.php: función wptexturize ($ texto) {return $ texto; // Añadir esta línea global $ wp_cockneyreplace; Esto cambia la forma en algunos signos de puntuación se parecen, pero la diferencia es bastante menor. También se publico un plugin de WordPress disponible para deshabilitar texturización. Para obtener más información y una versión actualizada de este documento, por favor consulte página web http://klikki.fi
La solución preferida debe aplicar el parche oficial publicado por WordPress. RESPUESTA DEL VENDEDOR =============== WordPress fue notificada el 26 de septiembre y ha lanzado parches de corregir el problema. El aviso de seguridad de WordPress está disponible en https://wordpress.org/news/2014/11/wordpress-4-0-1/ CRÉDITOS ======= La vulnerabilidad fue descubierta e investigada por Jouko Pynnonen, Klikki Oy, Finlandia. – Jouko Pynnonen <Jouko () iki fi> Klikki Oy – http://klikki.fi

FUENTE:

https://translate.googleusercontent.com/translate_c?act=url&depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.co.ve&sl=en&tl=es&u=http://klikki.fi/adv/wordpress_press.html&usg=ALkJrhgVgd9SWsqySsVkOo4MbiWQNaeQ2A

Leave a Comment