Durante una auditoría interna de los plugins Slimstat Analytics y Paid Memberships Pro, descubrimos dos vulnerabilidades de inyección de SQL que podrían permitir a usuarios con pocos privilegios, como los suscriptores, filtrar información sensible de la base de datos de un sitio.
Si se explotara, la vulnerabilidad podría dar a los atacantes acceso a información privilegiada de las bases de datos de los sitios afectados (por ejemplo, nombres de usuario y contraseñas con hash).
Informamos de las vulnerabilidades a los autores de los plugins, que recientemente han publicado las versiones 4.9.3.3 de Slimstat Analytics y 2.9.12 de Paid Memberships Pro para solucionarlas. Te recomendamos encarecidamente que actualices los plugins afectados a sus respectivas versiones más recientes y que tengas en tu sitio una solución de seguridad consolidada, como Jetpack Security.
Inyección de SQL para suscriptores o usuarios con más privilegios en Slimstat Analytics
| Nombre del plugin | Slimstat Analytics |
| URI del plugin | https://wordpress.org/plugins/wp-slimsta |
| Autor | https://wp-slimstat.com |
| Versiones afectadas | Todas las versiones entre la 4.1 y la 4.9.3.3 |
| CVE-ID | CVE-2023-0630 |
| ID de WPScan | b82bdd02-b699-4527-86cc-d60b56ab0c55 |
| CVSSv3.1 | 7.7 |
// Init the database library with the appropriate filters
if ( strpos ( $_content, 'WHERE:' ) !== false ) {
$where = html_entity_decode( str_replace( 'WHERE:', '', $_content ), ENT_QUOTES, 'UTF-8' );
}
else{
wp_slimstat_db::init( html_entity_decode( $_content, ENT_QUOTES, 'UTF-8' ) );
}
switch( $f ) {
case 'count':
case 'count-all':
$output = wp_slimstat_db::count_records( $w, $where, strpos( $f, 'all') === false ) + $o;
break;
El slimstat shortcode permite a los usuarios añadir cierta lógica de filtrado en forma de instrucciones SQL WHERE buscando un token «WHERE:» dentro del contenido del shortcode. Esta funcionalidad es problemática porque, como hemos informado anteriormente en otro aviso de vulnerabilidad, cualquier usuario que haya iniciado sesión en un sitio, como los suscriptores, puede procesar shortcodes en WordPress.
Una prueba de concepto para aprovechar esta vulnerabilidad estará disponible en esta entrada de WPScan de la vulnerabilidad.
Inyección de SQL para suscriptores o usuarios con más privilegios en Paid Memberships Pro
| Nombre del plugin | Paid Memberships Pro |
| URI del plugin | https://wordpress.org/plugins/paid-memberships-pro/ |
| Autor | https://www.paidmembershipspro.com/ |
| Versiones afectadas | Todas las versiones entre la 1.5.5 y la 2.9.12 |
| CVE-ID | CVE-2023-0631 |
| ID de WPScan | 19ef92fd-b493-4488-91f0-e6ba51362f79 |
| CVSSv3.1 | 7.7 |
if($hasaccess && !empty($delay))
{
//okay, this post requires membership. start by getting the user's startdate
if(!empty($levels))
$sqlQuery = "SELECT UNIX_TIMESTAMP(CONVERT_TZ(startdate, '+00:00', @@global.time_zone)) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND membership_id IN(" . implode(",", array_map( 'esc_sql', $levels ) ) . ") AND user_id = '" . esc_sql( $current_user->ID ) . "' ORDER BY id LIMIT 1";
else
$sqlQuery = "SELECT UNIX_TIMESTAMP(CONVERT_TZ(startdate, '+00:00', @@global.time_zone)) FROM $wpdb->pmpro_memberships_users WHERE status = 'active' AND user_id = '" . esc_sql( $current_user->ID ) . "' ORDER BY id LIMIT 1";
Aunque a primera vista pueda parecer que el shortcode `membership` escapa correctamente la variable $levels antes de concatenarla a una consulta SQL, el contenido que añade no se inserta en el contexto de una cadena. Esto significa que un atacante puede aprovechar esta función para inyectar instrucciones SQL, siempre que no contengan comillas.
Dado que cualquier usuario que haya iniciado sesión, como los suscriptores, puede procesar shortcodes, esto permite a los atacantes con pocos privilegios filtrar información sensible de la base de datos, como nombres de usuario y contraseñas con hash.
Una prueba de concepto para aprovechar esta vulnerabilidad estará disponible en esta entrada de WPScan de la vulnerabilidad.
Conclusión
¡Te recomendamos que compruebes qué versiones de los plugins utiliza tu sitio y, si se encuentran dentro de los rangos afectados, los actualices cuanto antes!
En Jetpack, nos esforzamos para garantizar que tus sitios web estén protegidos frente a este tipo de vulnerabilidades. Te recomendamos que tengas un plan de seguridad para tu sitio que incluya el análisis de archivos maliciosos y copias de seguridad. Jetpack Security es una excelente opción de seguridad de WordPress para garantizar la seguridad de tu sitio y de sus visitantes.
Créditos
Investigador original: Marc Montpas
Gracias al resto del equipo de WPScan por sus comentarios, ayuda y correcciones.



