Wordfence otorga su mayor bounty hasta la fecha

La recompensa fue concedida por el descubrimiento de una vulnerabilidad que permitía inyección SQL en el plugin LayerSlider

Casi Cincuenta Monos
2 min readApr 6, 2024

LayerSlider es un plugin de WordPress que agrupa las funcionalidades de un editor visual de contenido web, un software de diseño gráfico y una aplicación de efectos visuales digitales. Se estima que existen más de 1.000.000 de instalaciones activas del mismo.

El investigador 1337_wannabe encontró una vulnerabilidad en dicho plugin con una criticidad de 9.8 CVSS, al permitir a un atacante no autenticado concatenar peticiones SQL a continuación de otras ya existentes para extraer información sensible de la base de datos.

Las versiones afectadas son la 7.9.11 y 7.10.0, y ya se encuentra disponible una nueva actualización que corrige el problema. La recompensa otorgada por su descubrimiento y reporte responsable ha ascendido a los 5.500 dólares, la más alta hasta la fecha del programa de bounties de Wordfence.

Como 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: Wordfence

Resumiendo, 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:

--

--

Casi Cincuenta Monos
Casi Cincuenta Monos

Written by Casi Cincuenta Monos

Escribo una noticia de ciberseguridad al día. Siempre aprendiendo. https://twitter.com/TTWabbit

No responses yet