Vulnerabilidad SQLi en YITH WooCommerce Wishlist

Share this…

Como parte de nuestras auditorías investigativas regulares para nuestro Firewall Sucuri, descubrimos una vulnerabilidad de inyección SQL afectando al plugin YITH WooCommerce Wishlist para WordPress. Este plugin le permite a los visitantes y a clientes potenciales de un sitio web crear wish lists o listas de deseos de productos disponibles en la tienda de WooCommerce. Este plugin está instalado en más de 500,000 sitios web.

¿Estás en Riesgo?

Esta vulnerabilidad es causada por la falta de sanitización de los datos ingresados por el usuario en versiones anteriores a la 2.2.0. Un atacante (con al menos una cuenta de suscripción) puede robar datos sensibles, y si se cumplen ciertas condiciones, puede llegar a comprometer tu instalación de WordPress completamente.
Por favor, toma en cuenta que esto es fácilmente explotable en servidores corriendo versiones MySQL anteriores a la 5.7.

La parte interesante de esta vulnerabilidad y la razón por la cual queríamos generar este asesoramiento de seguridad, es porque, en general, el “registro de usuarios” gratuito está habilitado en sitios web utilizando este plugin para poder permitir guardar las preferencias de los usuarios (es decir, listas de deseos) y que sean accesibles para uso futuro.

Detalles Técnicos

El código vulnerable puede ser visto en la línea 523 del archivo includes/class.yith-wcwl-shortcode.php de la versión 2.1.2. Este código es parte de la función get_products() que básicamente retorna todas las listas de deseos para un usuario específico:

código vulnerable de la función get_products()

Si los atacantes son capaces de definir valores arbitrarios para la variable $limit, serán capaces de modificar la consulta de un modo que puede llevar al compromiso completo de servidores en producción. Uno no puede subestimar lo que se puede lograr con una SQLi, ni cuántos servidores permiten a los atacantes obtener más que hashes cifrados y los correos electrónicos de los usuarios.

Para llegar a la consulta vulnerable, un atacante tendrá que crear una petición con los siguientes parámetros:

  • El valor de pagination tiene que ser “yes
  • La variable count tiene que ser > 1 (esta variable almacena el número de los elementos en la lista de deseos para un usuario específico)
  • La variable limit tiene que estar definida a set

El atacante puede cumplir todas esas condiciones a través del shortcode yith_wcwl_wishlist definido en includes/class.yith-wcwl-shortcode.php:

código vulnerable a inyección sql

 

archivo vulnerable includes/class.yith-wcwl-shortcode.php

A este punto, lo único que un atacante tiene que hacer es crear una cuenta de usuario y llamar al shortcode vulnerable a como describimos anteriormente en otra publicación.

Actualiza lo Antes Posible

Si estás utilizando una versión vulnerable de este plugin, ¡actualiza lo antes posible a la versión 2.2.0!

En caso de que no puedas hacer esto, te recomendamos utilizar el Firewall Sucuri o una tecnología equivalente para parchear esta vulnerabilidad de manera virtual.

Fuente:https://blog.sucuri.net/espanol/2018/01/vulnerabilidad-sqli-en-yith-woocommerce-wishlist.html