BOOK THIS SPACE FOR AD
ARTICLE ADComo en otras vulnerabilidades de este tipo, el problema se produce al no sanitizar adecuadamente parámetros que pueden ser modificados por un usuario.
En una de sus interfaces el plugin hace uso de una función llamada ls_get_popup_markup() que, si recibe un parámetro id no numérico, es pasado a otra función, find() sin modificar.
En dicho componente se escapan valores excepto las sentencias WHERE con la función esc_sql(). Posteriormente esas sentencias se añaden a la petición SQL sin usar la función de WordPress prepare() que parametriza y escapa las peticiones para evitar ataques de inyección.
Fuente: WordfenceResumiendo, existe un camino por el que un usuario puede hacer peticiones a la base de datos sin pasar por ninguna función que las sanee completamente.
Dadas las características específicas de la vulnerabilidad no es posible el uso de sentencias UNION por lo que la explotación es del tipo time-based blind SQL injection.
Es decir, para ir comprobando las tablas y campos presentes en la base de datos es necesario ir haciendo peticiones seguidas de la función SLEEP para confirmar si han sido exitosas por el retraso de las respuestas.
Esto ralentiza y complica el proceso, pero no impide la extracción de todos los datos almacenados, incluso aquellos de especial sensibilidad.
Fuentes y más información:
https://www.wordfence.com/blog/2024/04/5500-bounty-awarded-for-unauthenticated-sql-injection-vulnerability-patched-in-layerslider-wordpress-plugin/https://www.bleepingcomputer.com/news/security/critical-flaw-in-layerslider-wordpress-plugin-impacts-1-million-sites/https://thehackernews.com/2024/04/critical-security-flaw-found-in-popular.html