Vulnerabilidad en plugin para WordPress afecta a más de 200 sitios

La vulnerabilidad afecta al plugin WP Banners Lite, tiene más de 16 mil descargas y está  bien valorado por los usuarios. Segun una búsqueda rápida, el plugin está siendo usado por lo menos en 200 sitios. Dentro de los afectados encontramos a un banco, sitios de noticias y al menos 8 sitios web del gobierno de Ecuador.

Intenté reportar la vulnerabilidad al desarrollador del plugin mediante el link de contacto de su sitio web, pero solo recibí la respuesta automatica de wordpress que acusaba recibo del mensaje de contacto y que se contactaría conmigo lo antes posible, pero eso nunca pasó.

La vulnerabilidad corresponde al tipo Cross-Site Scripting y, como decia anteriormente, afecta principalmente a los siguientes sitios:

www.defensa.gob.ec
www.agricultura.gob.ec
www.industrias.gob.ec
www.deporte.gob.ec
www.inclusion.gob.ec
www.sectoresestrategicos.gob.ec
www.desarrollosocial.gob.ec
www.justicia.gob.ec
www.ironbank.com
www.the-news.co
www.forexlistings.net
web.casinodesalamanca.es

El problema está en el archivo wpbanners_show.php, específicamente en las lineas 8 y 9, donde el programita recibe la variable “cid” directamente desde la URL mediante GET, sin ser parseada correctamente. El único filtro que se aplica a la variable es remover las comillas simples (‘).

Posteriormente, en la línea 51, imprime el valor de la variable directamente con un echo.

Esto nos permite inyectar código html o javascript arbitrariamente, más conocido como Cross-Site Scripting o XSS.

Como ya conocemos el nombre del plugin, archivo afectado y nombre de la variable que nos permite realizar la inyección de código, entonces podemos buscar los sitios afectados con el dork inurl:wp-banners-lite inurl:wpbanners_show filetype:php, obteniendo el siguiente resultado:

Para hacer la prueba de concepto, tomamos cualquier resultado como por ejemplo https://noticiasdedeanfunes.com, ingresamos al link el cual nos llevará a https://noticiasdedeanfunes.com/wp-content/plugins/wp-banners-lite/wpbanners_show.php?id=1&cid=a_0c8ce55163055c4da50a81e0a273468c, donde nos mostrará lo siguiente:

Segun el codigo fuente que vimos anteriormente, en la línea 51 imprime el valor jQuery(‘# concatenado con la variable cid, que finalmente lo concatena con ‘).replaceWith(‘ <valor de variable banner>‘), por lo tanto, el valor que muestra despues del símbolo #, es el que la entregamos por URL, si lo modificamos laURL de la siguiente forma:

https://noticiasdedeanfunes.com/wp-content/plugins/wp-banners-lite/wpbanners_show.php?id=1&cid=a_PRUEBA

Nos muestra el siguiente resultado

Entonces ahora nos sentimos libres de modificar la URL para inyectar el código html o javascript que nosotros queramos

HTML Injection: https://noticiasdedeanfunes.com/wp-content/plugins/wp-banners-lite/wpbanners_show.php?id=1&cid=a_%3Cbody%20bgcolor=black%3E%3Cfont%20color=00ff2a%3ELoooooooL%3Cfont%20color=black%3E

Cross-Site Scripting (XSS):  https://noticiasdedeanfunes.com/wp-content/plugins/wp-banners-lite/wpbanners_show.php?id=1&cid=a_%3Cscript%3Ealert%28/XSS%20Proof-of-Concept/%29%3C/scri%3E

 

La vulnerabilidad no ha sido corregida y ha sido probada en las versiones 1.29, 1.31 y 1.40.

4 comentarios

  1. Y en Chile? Como esta la cosa con este plugin?

  2. Zerial

    marzo 25, 2013 a las 8:54 am

    No hice la busqueda en sitios chilenos, puede que mas de alguno lo haya implementado 🙂

  3. 🙁 ya revise ninguno por ahora

  4. buen articulo y muy buen analisis Zerial como siempre

    vi la noticia por otra web antes de ver tu blog me llamo la atencion (se q no te importa :)) que no te dieran los creditos o no nombraran la fuente oficial solo hablan de un “investigador” deberian sar seriedad al tema
    slds

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Esto sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.