Riesgo de Seguridad: Peligroso
Nivel de Explotación: Fácil/Remoto
DREAD Score: 7/10
Vulnerabilidad: Inyección SQL
Versión Parcheada: 12.0.8
Como parte de nuestro proyecto de investigación de vulnerabilidades para el Firewall Sucuri, hemos estado auditando proyectos de código abierto populares en busca de problemas de seguridad.
Mientras estábamos trabajando en el plugin para WordPress, WP Statistics, descubrimos una vulnerabilidad de inyección SQL. Este plugin está instalado en más de 300,000 sitios web.
¿Estás en Riesgo?
Esta vulnerabilidad es causada por la falta de sanitización a los datos provistos por el usuario. Un atacante con al menos una cuenta de suscriptor podría divulgar información sensible, y bajo las circunstancias/configuraciones adecuadas, podría comprometer la instalación de WordPress.
Si tienes una versión vulnerable instalada y tu sitio web permite el registro de usuarios, definitivamente estás en riesgo.
Detalles Técnicos
WordPress provee un API que le permite a los desarrolladores crear contenido que los usuarios pueden inyectar en ciertas páginas usando un simple shortcode:
[shortcode atts_1=”test” atts_2=”test”]
Entre otras funcionalidades, WP Statistics le permite a los administradores obtener información detallada sobre el número de visitantes, simplemente llamando el shortcode que se muestra abajo:

Como puedes ver en la imagen anterior, algunos atributos del shortcode wpstatistics están siendo usados como parámetros de funciones importantes, y este no es un problema si esos parámetros son sanitizados, pero como veremos, este no es el caso.
Una de las funciones vulnerables, wp_statistics_searchengine_query(), en el archivo “includes/functions/functions.php”, es accedida a través de la funcionalidad de AJAX de WordPress, gracias a la función núcleo wp_ajax_parse_media_shortcode().
Esta función no verifica por privilegios adicionales, permitiéndole a un suscriptor ejecutar este shortcode e inyectar datos maliciosos en sus atributos. (Este vector de ataque también fue descrito aquí).
En un número de lugares en el código, los datos ingresados por el usuario en los atributos del shortcode wpstatistics son incluidos en consultas SQL sin ser sanitizados. Abajo está una de las consultas que es explotable:

La función wp_statistics_searchengine_query() básicamente regresa el mismo valor que se pasó en el atributo provider del shortcode, y su contenido es agregado directamente en la consulta SQL.
Actualiza lo Antes Posible
¡Si estás usando una versión vulnerable de este plugin, actualiza lo antes posible!
En el evento que no puedas actualizar, te recomendamos utilizar el Firewall Sucuri o una tecnología equivalente para parchear la vulnerabilidad de manera virtual.
Tengo un sitio y cada dia aparece en el login cambiado “INDOXPLOIT” como lo puedo solucionar?