Durante una auditoría interna del complemento Patreon para WordPress, el equipo de Jetpack Scan encontró algunas debilidades que permitirían a alguien asumir un sitio web. Estas vulnerabilidades fueron reveladas a los autores de arado, quienes inmediatamente lanzaron la versión 1.7.2, que resuelven todos estos problemas. Si está utilizando una versión anterior del complemento, ¡actualice hoy! Siga leyendo para obtener todos los detalles técnicos. Si te superas la cabeza, no te preocupes. Ofrecemos un escaneo JetPack para administrar el escaneo de malware y actualizaciones o eliminación automática para usted. Nuestro equipo ha identificado varios vectores de ataque, incluidos el archivo local de vulnerabilidades, la falsificación de solicitudes de sitios cruzados (CSRF) y reflejar secuencias de comandos de sitios cruzados (XSS).
Los archivos locales para la divulgación de archivos son errores que los malos actores pueden usar para obtener acceso a información crítica, como el sitio web secreto y las acreditaciones de la base de datos. Las vulnerabilidades reflejadas por las secuencias de comandos de solicitud de sitios cruzados y de sitios cruzados son problemas que permiten a los atacantes realizar acciones específicas en nombre de usuarios inesperados, engañándolos a hacer clic en enlaces maliciosos. Si son explotados, algunos de ellos pueden permitir que las personas maliciosas tomen sitios web vulnerables. Vulnerabilidad para divulgar los archivos locales versiones afectadas: <1.7.0 ID CVE: CVE-2021-24227 CVSSV3: 7.5 CWSS: 83.6
Función estática pública ServatrononlyImage ($ image = false) {
if ((! isset ($ image) o!
$ Image = $ _Request ['Patron_only_image'];
}
if (! $ image o $ image == '') {
// Esta no es una solicitud de iMice reescrita. Salir.return;
}
if (! (isset ($ _request ['pedreon_action']) y $ _request ['pedreon_action'] == 'serva_only_image')) {
devolver;
}
$ upload_locations = wp_upload_dir ();
// Queremos la ubicación de carga base para que tengan en cuenta los cambios en las subcarpetas basadas en datos en caso de soporte
$ upload_dir = sustar (wp_make_link_relative ($ upload_locations ['baseurl'), 1);
$ Image = get_site_url (). '/'. $ upload_dir. '/'. $ Imagen;
if (current_user_can ('man_options')) {
Patreon_protect :: readandserveImage ($ imagen);
}
// A continuación, Define se puede definir en cualquier complemento para evitar la función de bloqueo del núcleo y usar un complemento personalizado
// Es independiente del orden de carga del complemento, las verificaciones sinceras si se define.
// Se puede definir mediante cualquier complemento uni raght antes de que se ejecute el filtro decontent.
If (apply_filters ('ptrn/bypass
Patreon_protect :: readandserveImage ($ imagen);
}
// Compruebe si el imagente está protegido:
$ Adjunto_id = adjunto_url_to_postid ($ imagen);
// adjunte_url_to_postid Devuelve 0 si no puede encontrar la publicación de archivo adjunto
if ($ adjunto_id == 0) {
// no pudo determinar la identificación posterior de adjunto. Intenta obtener una identificación de la miniatura
$ Adjunto_id = patreon_protect :: getTachmentIdFromThumbnailUrl ($ imagen);
// no vayas. Tengo que salir y servic la imagen normalmente
if ($ adjunte_id == 0 o! $ aptinchment_id) {
Patreon_protect :: readandserveImage ($ imagen);
Patreon-Connect contenía una vulnerabilidad local para revelar los archivos que podrían ser abusados por cualquier persona que visite el sitio. Usando este vector de ataque, un atacante podría drenar archivos internos importantes como WP-Config.php, que contiene credenciales de la base de datos y claves criptográficas utilizadas para generar no cess y cookies. Si se explota con éxito, este defecto de seguridad podría conducir a completo adquisición del sitio por malos actores. XSS reflejado en el formulario de conexión de versiones afectadas: <1.7.2 ID CVE: CVE-2021-24228 CVSSV3: 8.8 CWSS: 80.6
Función estática pública ProcespAtreonMessages () {
$ Patreon_error = '';
if (isset ($ _request ['pedreon_error'])) {
// Si se configura algún mensaje de error específico de Patreon, prepárate
$ Pedreon_error = ' – Regresar:'. $ _Request ['Patreon_error'];
}
if (isset ($ _request ['pedreon_mesage'])) {
return '
'. APLICE_FILTERS ('PTRN/ERROR_MESSAGE', self :: $ Messages_map [$ _Request ['pedreon_mesage']. $ Pedron_error). '
';
Patreon-Connect se conecta al formulario de autenticación de WordPress (WP-Login.php) y ofrece la posibilidad de permitir a los usuarios autenticarse en el sitio utilizando su cuenta de Patreon. Desafortunadamente, parte de la lógica de errores detrás de la escena permitió que la entrada controlada por el usuario se reflejara en la página de conexión.
Para explotar con éxito esta vulnerabilidad, un atacante debe engañar a su víctima para visitar una conexión con trampas que contienen el código malicioso de JavaScript. Debido a que JavaScript se ejecuta en el contexto del navegador de la víctima, un atacante puede ajustar el código oculto en ese enlace para hacer lo que permita los privilegios de este usuario. Si este ataque tiene éxito contra un administrador, el script puede hacerse cargo del sitio. XSS reflected on the action of AJAX "Patreon_save_attachment_patreon_level" Affected versions: $ adjunto_id,
‘Pedreon_level’ => $ _request [‘pedreon_attachment_patreon_level’],
‘Mensaje’ => $ Mensaje,
);
echo self :: make_image_lock_interface ($ args);
Función pública make_image_lock_interface ($ args = array ()) {
$ interfaz = ”;
$ interfaz. = ‘
;
$ interfaz. = ‘ & Times; ‘;
$ Interface. = ”;
$ Interface. = ‘
Bloquear imagen
‘;
$ interfaz. = ‘
;
$ interface. = ‘ $ ‘;
El complemento también utiliza un gancho AJAX para actualizar el nivel de compromiso necesario para los suscriptores de Patreon para acceder a un cierto archivo adjunto. Esta acción es accesible para las cuentas de los usuarios con el privilegio “gestionar_options” (es decir, solo administradores). Desafortunadamente, uno de los parámetros utilizados en este punto final no se desinfecta antes de ser impreso al usuario, por lo que el riesgo que representa es el mismo con la vulnerabilidad XSS anterior que describí. CSRF que permite a los
Función pública toggle_option () {
if (! (is_admin () && current_user_can (‘management_options’)) {
devolver;

}
$ current_user = wp_get_current_user ();
$ option_to_togle = $ _request [‘togle_id’];
$ current_value = get_user_meta ($ current_user-> id, $ option_to_togle, true);
$ new_value = ‘off’;
if (! $ cure_value o $ current_value == ‘off’) {
$ new_value = ‘on’;
}
update_user_meta ($ current_user-> id, $ option_to_togle, $ new_value);
}
Algunos puntos finales no validaron la solicitud que recibió se envió después de una acción legítima de un usuario, que puede hacer usando no cess. Una de estas finales desprotegidas permitió a las personas maliciosas crear un enlace de trampa que sobresaliría o crearía los metadatos de arbitraje del usuario en la cuenta de la víctima una vez visitado.
Si se explota, este error se puede usar para anular el meta “wp_capabilits”, que contiene los roles y privilegios de la cuenta de usuario afectada. Al hacer esto, en esencia, los bloquearía en el sitio, bloqueándolos para acceder a contenido pagado. CSRF que permite a los atacantes desconectar los sitios de las versiones afectadas por Patreon: $ valor) {
Delete_option ($ options_to_delete [$ key]);
}
Update_option (‘Patreon-Installation-spa-Vversion’, ‘2’);
update_option (‘Patreon-can-abi-v2’, true);
Wp_redirect (admin_url (‘admin.php? Page = pedreon_wordpres_setup_wizard & setup_stage = reconnect_0’));
salida;
}
Esto es similar a la última vulnerabilidad en que es el mismo tipo de ataque (CSRF), pero se trata de los administradores. Este vector de ataque particular funciona como el anterior. Un atacante debe obtener un administrador conectado para visitar un enlace especialmente creado.
Debido a que este punto final específico puede desconectar un sitio del patreón, los atacantes que se dirigen a este vector de ataque también pueden hacer esto, lo que evitaría la sincronización del nuevo contenido con el sitio. Cronología
Contacto inicial (fallido) – 4 de diciembre
El segundo intento de contacto – 11 de diciembre
Los autores reconocen el informe – 15 de diciembre
Se lanza la versión 1.7.0 – 5 de enero
Reportamos dos XSS adicionales – 9 de marzo Problemas
Los autores reconocen el segundo informe – 9 de marzo
Se lanza la versión 1.7.2 – 11 de marzo
Conclusión Le recomendamos que verifique la versión actual del complemento Patreon-Connect que usa en su sitio y, si no 1.7.2, ¡actualíquela lo antes posible!
homefinance blog