El blog de n4p5t3r

Blog dedicado a temas de tecnología


Vulnerabilidad de inyección SQL en el plugin WP Fastest Cache

Vulnerabilidad de inyección SQL en el plugin WP Fastest Cache expone 600.000 sitios de WordPress a ataques: CVE-2023-6063

Durante una revisión interna del plugin WP Fastest Cache, el equipo de WPScan descubrió una grave vulnerabilidad de inyección SQL. Esta vulnerabilidad puede permitir a atacantes no autentificados leer el contenido completo de la base de datos de WordPress utilizando una carga útil de inyección SQL ciega basada en el tiempo.

Al descubrir la vulnerabilidad, alertamos rápidamente al equipo de desarrollo del plugin, que publicó la versión 1.2.2 para solucionar el problema. Es crucial que los administradores se aseguren de que sus instalaciones de WordPress están totalmente actualizadas para protegerse contra esta vulnerabilidad.

Inyección SQL sin autenticación

La función is_user_admin de la clase WpFastestCacheCreateCache es vulnerable a SQL Injection. La función se llama desde la función createCache.

  public function is_user_admin(){
            global $wpdb;
 
            foreach ((array)$_COOKIE as $cookie_key => $cookie_value){
                if(preg_match("/wordpress_logged_in/i", $cookie_key)){
                    $username = preg_replace("/^([^\|]+)\|.+/", "$1", $cookie_value);
                    break;
                }
            }
 
            if(isset($username) && $username){            
                $res = $wpdb->get_var("SELECT `$wpdb->users`.`ID`, `$wpdb->users`.`user_login`, `$wpdb->usermeta`.`meta_key`, `$wpdb->usermeta`.`meta_value`
                                       FROM `$wpdb->users`
                                       INNER JOIN `$wpdb->usermeta`
                                       ON `$wpdb->users`.`user_login` = \"$username\" AND
                                       `$wpdb->usermeta`.`meta_key` LIKE \"%_user_level\" AND
                                       `$wpdb->usermeta`.`meta_value` = \"10\" AND
                                       `$wpdb->users`.`ID` = `$wpdb->usermeta`.user_id ;"
                                    );
 
                return $res;
            }
 
            return false;
        }

La función recupera la variable $username de cualquier cookie con el texto wordpress_logged_in en su nombre, recuperando todo hasta el primer carácter |. La variable se inserta entonces en la consulta sin escapar. Tenga en cuenta que esta función es llamada en el momento de cargar el plugin, es decir, antes de que wp_magic_quotes() haya sido llamada sobre los datos de la petición.

Dado que los resultados de la consulta SQL no se utilizan en ninguna parte fuera de esta función, no hay forma directa de recuperarlos. Sin embargo, una carga útil de inyección SQL ciega basada en el tiempo puede extraer fácilmente cualquier información de la base de datos utilizando esta vulnerabilidad.

Fuente: https://wpscan.com/blog/unauthenticated-sql-injection-vulnerability-addressed-in-wp-fastest-cache-1-2-2/



Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

four − 3 =

SOBRE MÍ

n4p5t3r.

Emprendedor. CEO – CISO – CTO en @rrsolucionesit. CCSA, ISO27000, ITIL v3, CSP, CSFPC, RWVCPC, SFPC, FNSE, CC, NSE1. Miembro de @hackingpublico

El libro me enseñó a pensar y el pensamiento me hizo libre

Anónimo