Duplicati login bypass
Duplicati es una herramienta de copias de seguridad con una interfaz web. Su autenticación no envía la contraseña en claro: usa un reto de tipo desafío-respuesta basado en una server-passphrase. El detalle clave es que esa passphrase se almacena en la base de datos de configuración (Duplicati-server.sqlite, tabla Option), codificada en Base64, y que el login se puede reproducir conociendo solo ese valor, sin la contraseña original.
El flujo legítimo de login es, a grandes rasgos:
- El cliente pide un nonce al servidor (
/login.cgi). - Calcula la respuesta combinando ese nonce con la passphrase mediante SHA-256.
- Envía esa respuesta; el servidor hace el mismo cálculo y compara.
Como la server-passphrase guardada es justamente el material que entra en ese cálculo, un atacante que la lea de la base de datos puede rehacer la respuesta y autenticarse. El procedimiento publicado consiste en pasar la passphrase de Base64 a hexadecimal y ejecutar, en la consola del navegador, el mismo cálculo que hace el cliente con el nonce que devuelve el servidor:
echo "<server-passphrase-base64>" | base64 -d | xxd -p -c 256El resultado (los bytes en hexadecimal) se inyecta en el script de bypass del navegador, que completa el desafío-respuesta y deja una sesión válida.
Por qué importa tanto. Duplicati suele ejecutarse con privilegios altos (a menudo root) para poder leer y escribir cualquier fichero durante las copias. Una vez dentro del panel, se crea un trabajo de backup cuyo origen sea un directorio sensible (por ejemplo /root) y se usa la restauración para extraer esos ficheros a una ruta legible por nuestro usuario. La copia y la restauración heredan los privilegios del servicio: es lectura (y escritura) arbitraria como root, es decir, compromiso total.
Matiz. Depende de poder leer Duplicati-server.sqlite (hace falta un acceso previo al sistema) y de que el servicio sea accesible (a veces solo escucha en localhost, lo que obliga a un port forwarding previo).
Cómo detectarlo. La firma en disco es la lectura de Duplicati-server.sqlite por un proceso que no es Duplicati (auditd/FIM sobre ese fichero), el material del que sale la passphrase. En la aplicación, la firma es un trabajo de backup nuevo cuyo origen es un directorio sensible (/root, /etc) seguido de una restauración a una ruta legible por el atacante, algo que un uso legítimo no encadena; los logs de Duplicati los registran. Una sesión establecida desde una IP externa (tras un port-forward) sobre un servicio que debía escuchar en localhost es el indicio de red.
Defensa. No exponer la interfaz de Duplicati; proteger la base de datos de configuración; no ejecutar el servicio como root si no es imprescindible; y mantenerlo actualizado (versiones recientes endurecen este flujo). Relacionado con el port forwarding que suele precederlo.
Máquinas donde se aplica
- MonitorsThreeHackTheBox